From patchwork Wed Oct 19 09:36:42 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Priyanka Jain X-Patchwork-Id: 684063 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3szVdw0DJXz9syB for ; Wed, 19 Oct 2016 22:51:32 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id DF536B3857; Wed, 19 Oct 2016 13:51:29 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0DhQzGwGx_dX; Wed, 19 Oct 2016 13:51:29 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 162C2A75AA; Wed, 19 Oct 2016 13:48:14 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3CE0AA7544 for ; Wed, 19 Oct 2016 12:02:02 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id m2FcRUljSeCI for ; Wed, 19 Oct 2016 12:01:57 +0200 (CEST) X-Greylist: delayed 961 seconds by postgrey-1.34 at theia; Wed, 19 Oct 2016 12:01:37 CEST X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0058.outbound.protection.outlook.com [104.47.38.58]) by theia.denx.de (Postfix) with ESMTPS id DAA094B6B3 for ; Wed, 19 Oct 2016 12:01:30 +0200 (CEST) Received: from BY2PR03CA054.namprd03.prod.outlook.com (10.141.249.27) by BN3PR03MB1414.namprd03.prod.outlook.com (10.163.34.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.669.16; Wed, 19 Oct 2016 09:45:27 +0000 Received: from BL2FFO11FD015.protection.gbl (2a01:111:f400:7c09::112) by BY2PR03CA054.outlook.office365.com (2a01:111:e400:2c5d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.669.12 via Frontend Transport; Wed, 19 Oct 2016 09:45:27 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD015.mail.protection.outlook.com (10.173.160.223) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.669.7 via Frontend Transport; Wed, 19 Oct 2016 09:45:26 +0000 Received: from b32167-VirtualBox.am.freescale.net ([10.214.249.240]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u9J9iYvg023163; Wed, 19 Oct 2016 02:45:24 -0700 From: Priyanka Jain To: Date: Wed, 19 Oct 2016 15:06:42 +0530 Message-ID: <1476869802-30528-6-git-send-email-priyanka.jain@nxp.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1476869802-30528-1-git-send-email-priyanka.jain@nxp.com> References: <1476869802-30528-1-git-send-email-priyanka.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131213439271693082; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(586003)(19580395003)(36756003)(81156014)(8676002)(8936002)(86362001)(81166006)(97736004)(50226002)(7846002)(189998001)(105606002)(77096005)(229853001)(92566002)(11100500001)(47776003)(50466002)(48376002)(110136003)(106466001)(15650500001)(68736007)(85426001)(6916009)(4720700003)(5660300001)(76176999)(4326007)(2906002)(8666005)(305945005)(626004)(87936001)(6666003)(2950100002)(50986999)(2351001)(104016004)(356003)(33646002)(19580405001)(5003940100001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB1414; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD015; 1:eDj5wbkfeCDb9yjcyWIL42j4p8iwU4QsyOnU8+mszAp+nbL5cB2I+5eFFjcHwF5lpdAAzQ8IUNXDZNcIyWN573fO6X9pUbZn0s8jYZAnG6K8N6fnqUoCPpFL28ryHoP6DUKUFP6Ufn2Pk4pT0W3JDA+yYxRqhwTmXmD09OgoQGxlWU7tnrCxaYU1RjeffkK4IADSJpmCLVZpF6prSxxFzduNVrqX2bnCmFK0qgjFreYUDDl0TY3al1tcqmRZjc6+55kv2y85b/6pDO0byx5oCTxun/RFyzVYu5pVnE9zRvsgZSodWTKgzAUFepGfDeuv1+6CiOimrrGL12t2iD1/jXdXY/Gh5IMhdPryfEby9IBk3oZn6EdZQvyE7Ou77I3ieoeF9XxsschxsB6KUZ9P9DgrLBkfuBalMwBWB5mZCQW2GOERBcRvH6fDEwn6M3xU1ITuw4/flKiRIfl8GB2/wKzO4iWqdD1/dBg4rvrwVf61xEyH0QtQTI0kDEGqqna5OwUEk+CRsdxcRiztk24bTbGpOvHpllZldABHmTrY8KyiFfysiXzFePxDJHMyn2hCReYxnURGnrgQ3iSH9x2MhZ0LC1fZ9W0+14b3pFFcB7tGoIVC8CxfoXllQAWEAQ1IT8F33Y3xf9XIKTykUw7/PkEjoOmBnnz78XB7Si0CvAA+mUYsAaGEC9y9KfPRRZWQwBLze5GwdvlG2U+TZcbwdw6cQYnEWgJVPmLDyPtBe8A= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 2a4ccf9f-038b-4bdd-89b9-08d3f804a800 X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB1414; 2:Z1zeAUVkL+i6yrpPQMRvx6RjlZ2V599iKa+cPNQKCxm/XrPbAkL2+SU9KnbXq0uNRF5MKDrruA4KTZI5bwh4/b28Mts7NU0sJKufJqLcTMpgnj9dFy4oAQINVhDX9gkZLKIsT6DOBmla9SVeGV9OQkzG3tglescp4b7aIjTe5ZCzsSUCOyfrMPb5cgacNl1KChy/Xoh0XclP5jZgmMKB7Q==; 3:CBrwCAZH67dwoSx+i6r6vLfmovT5fwR+jSEv78Lhq11gs61gHQ4PZWeYbevNFV5jNcMNIv5h54XUHDPvWpWyH6ioVwLgdMDPyXkyZcFrs47wds85R42Ye8ZnLtsMxQEEW5kKmZmiUYADTMNWGC4QeSqxNf30A5gmqbwdJoeFfi43TBTGbwnAo3zBI6KhUizuXJGeySkYceXxQ6Mk7x4jexrm9DX8ingyJgIPAIaSr0WTHDXJb9oZugMuM8JhS8KD X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB1414; X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB1414; 25:nbTc1zHtK+N936zZNyzkJ13wHHyx7AhGe3QPAYzCbgbrU0eGXyysxi0yIDMH80JNM7CBda8KpWpYjtdI1ob5rmsmrh34Bg9zzxXSsOyZWXreBFPmIPIiAe+1WtZOZUwFcMZQ+QZUdfrL6dBZWwVH4LtOVai1up3CzmpiDdAKSW+NZtIDYXbelEkDbp4yYaW7KymrBzdJuHcwF/ycc8c3JVERntMN0HhLJsm2SjQC9Lzg9cDrNRpz/1RIljyPpXmdcjmxZkscakc1u44Sw6fDlj8sYXo+urTeTeQ2L+/NXroEkGtQnq3z9E0nvnf0v1xzpfj3E26UEECrR6C5HzqzAvsgvORiB3wvhDNvdBoN4FDhRBpDOBstu26/nhLP4cOZl1okgtQ/b2qLKn5P2FVrpzOGuHejqDBgSbGRTD0qzVP/dl9Dq3/Tjfq3Bv/t7uGLgsLy11bFoHnJ+FkAcv1hAyaSiaj09DSu34RftTMBrPasI70e4flTGeoWDFisx1KzKuIPaIlxebq2mOoM6k8WQtOK84tA2a71IITT8tAWT60BSg0z6HoLunH2xZChFYWw3zpr3tIQdNBCMKkzbOvHXgcFkHCy9z4Zo+WrhiJSjDkKfarLy2PeNXHF27g/gv4C+/W8sPkfj7rTF2jsxEoZ/i75hjFfiOE6nMFBvNC+j3GRWDRla7tJhfvnDf+c9vNLjvpcOfbfFTbDcQorlzlKYmcVXIXIZITW3qO6ObcTQgZGouS0XCgC2ZrtTMIRKtI5s6Q3tdomW55eH05dn3aLlcRQQ3NFB9QgHUsmoZXD0Kk= X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB1414; 31:AnEFwPNLB8rEuP3sr8AaC/dR5ypwx/5mIi/19Wph+tcqwBXL76husgSM0jWMQvjXmSXEYB+jua0TU0F0LRwHH3OV0DRmY5OvzdR4XbEMbvSsGRmzi6u1CN70C7YsPqDJcYEnUH6dShiTp7+CkORv3s2tj3udCNmEyru9GKDnZMHDEU0jOvvdO55wezhB8Uf6BDT76QlAfN1q9cZxTJzbx2aZub7nVsT+uU864TC0AIMVofsOv6HN/V0bMlVGBs0G5v2Q2MiTqNofEdWPBIMiNw==; 4:A1Ll3iGkA0TNsHzj63hrcvMtnXL0YP1zhfJ8b7j2NywtkdnOBGwF6aaVcHUgQIoxRUUhZvvfwNMbx0p1ZNCyt1bfBc6zvfvTGn6R+YpgWx0yUzy4RNpqc5/BalO85MCrTHqR8JqaDAvUxBJd4xZLM/4KZU7PyS1OpgjE9cPfp6ZVFvzPw+A8obxiJt+VFLUxbWJ/Zrc4WB/DUa6JA9mjO9RUXnyHZ2xOfr2lrFmzgRvTY0pX/TSg9sodmx46uru/S8270sAwtOtUfWzJqOzZNl9y+lzgcABe0AFvKbKsJrF0yRITWwfHoxa3f1BGEHYHv3X0T79s80CVhbI5mvyH0W9J9p6jMT+aRMpENhmmRzHiRekjxEqEziixnMolGOlj82obyUTX9+tNKUkSYZhdyfZ0G0RIfdeJDOaJYeAIz0GeaZ6IGroG+X4XWwMlUoGFh0gCHCqmrh6ENDJ+dBqL0Of23DeDRi5Jr6CkD0zs+Ekq2qnDCtHTieJMQeXMtFo1wSLtij585gyNEoyHnKAlVxitgn9nQpVis/zoUVvEwZLDf298DG3gdhDKFYlb5CwD X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(13017025)(8121501046)(13015025)(13023025)(13024025)(13018025)(10201501046)(3002001)(6055026); SRVR:BN3PR03MB1414; BCL:0; PCL:0; RULEID:(400006); SRVR:BN3PR03MB1414; X-Forefront-PRVS: 0100732B76 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR03MB1414; 23:A1M/7gSAR389QI1EVqbctTXUK/zne1SrMuO/WkHO/?= =?us-ascii?Q?7krYYYeWkRGDS/6qyl1Au1DdGWxl8pmFVS2wMOuwsmy1Ln/z9IzrbFrb5vPa?= =?us-ascii?Q?/uJRhWsgfVS0LR2rkLLK3cd3pru24XkHugCEeVJWiM4BfDQf0PPqt9jo8SGP?= =?us-ascii?Q?25uwOYPjQg4rvTxOA10sy7Ryo3ucXLQRddDoI2mosZRbTAcXQa12zLKMjOJ7?= =?us-ascii?Q?OA7I4cyGQmbReE4HV5E2DpY8Lm1vOMxnTehQYrct2vmdFEFO3BQm2t8FEhVq?= =?us-ascii?Q?p1RVAABTV2/r1YPc+olH69GmqxO+RdbaoubZChyZr1V7utnItmfgL8ADpY4D?= =?us-ascii?Q?VNp+kmPSHYGJdScST9ICsoMBa4vMp/+WuHnUy20PvCRPqsbPU2zGxj5wUszB?= =?us-ascii?Q?jwoN23osWXAkl7H7AOuiIqg31xAiK25Vv0KWdCWIGiXINNJCwtM2cJOhk0PP?= =?us-ascii?Q?yyPC5pLt18GtSL1BoIXc49Rh4u+pspqzg1HnVyZFIthRosMwo2J6YkRTWBBJ?= =?us-ascii?Q?N9raHqm1U5xfNmU739B1XH4KuflenN8YaFfsyfeLqow3JiELztYES0uiPH5S?= =?us-ascii?Q?BTw54bV2EA2dzy6Xx6SlFwxbEYBz5aqW21NcaEDzzv/rhgNfeOxx2wYrkwtF?= =?us-ascii?Q?1rqz4nchspDX5eD78r4R75xGr7UQlmjLDeZdymntF0mn33A0k/BDcPMFLy7L?= =?us-ascii?Q?jpQ/vaSzZjgxKFXDf0ceI2kFLFiBkeDuYJjrxrF+KnUwg4rZIJ3xk8+eC1l0?= =?us-ascii?Q?cgSxa2oBU1Ta4ioAZTkzoShPuesR38XqJga8YPHgtibMWkn5NYon5NM5z4x8?= =?us-ascii?Q?qLt4msJMFB9ohE/BqdsUOJkQsH6qQyA5eH+FFP8vFHenNKxF3eGm9v5Z0Vwu?= =?us-ascii?Q?i5G6fMxcvXcMafvZJ0yre3y6hCboX+hrjpDZb1Wfh9s4EcdrSYJOIFDKVsjZ?= =?us-ascii?Q?5y2XmnoZvOZ5/QToie+rbm2sgdFqQ1U91RQXjEaLKBmE8lMyucLTkSJqx1kF?= =?us-ascii?Q?222WmwDiZWfu0Ce5uXIki8gxzYO5vNOgxIP4Yw8YRF9wi84nP2NYs9mxfFhb?= =?us-ascii?Q?IlP2Mo34bLawBoNA/TCuIwgrgtV7kfM7xuIKXUurIExIfsKehocOxqBi0pNV?= =?us-ascii?Q?j/ct3S+kksYw9PANXoowhj1cFbztOX3C0LvmQfrk7mTpEL4DDWuoUww3mEMo?= =?us-ascii?Q?yEGKPITU+QIaCE1x0D6BLRHfR6hhFg382+HN8bxkZDNUY54UadcJq/nvRsEy?= =?us-ascii?Q?hOmsGnyC1615UfFKt+m7wciGBbcoiGjy5S3aKri?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB1414; 6:Mfj6MWnDrejmAE21NxW57wpjtxTRU6DvbHjyZXT/2584lmrZyUi57tYW0ZMSHbxWKbS6UkM2J8XaEZk4OZBuDbEXcuraVbXOhJ0HYaZNYgPIRPil/v0g8t34r1RzL7YNuLQN+ug1sjqVJ4eqCrs6CM1pS2TAKKu6ar6Tq0CTQLjnqlDk7IdIHi36t3mO9MNvKeZa+qm1U0qtG5h3IsvKkrv/Sh6lfIj+mn3nRSFohIkldmjJkz3x2Iianis5ke8Am37cEWgmbgY+JQJRGJ7XTqFIf1vdX2jIh+d8ESuPJSELdUnH5Vi1XAq+UjXWxBLW; 5:CO7sY8imNVhl4ADNojum/em6uquBtT6rhe9YFY9PwgWVouAMM+kZFJnsJxkWrIomKIQTJxhAvtR7oao8UhNK/2AYmgPaVACXJWYbEkUJc4/4NobTEiDsjtlA+b5HFZD4RfldaIMl8x7ZpbYeRSFSGVeqYWCgXteSwgDcVqRHt0PzIVq5NiA3USrdb6K0Y/aC; 24:GvH7PqDMuePtxaG86vLvj+kN9WaDWCF+XJbtctM/K0A3i/GVM/r+ah2t5eBbN7aFUD+KF5iU6D7ydxEhIRlv3BatOgC4RTZjmpeTF4wRwbM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB1414; 7:prR6oLxIGbwFjTvIGx1D80Bvmg8o7stnqWfztSIDKNwMonoJewqi4B1/7M+oRuYFnksANUiYEt8SLqdQJ4cwe+7zNgfUlXfWvD98TuHgZ/K8/vkdxeb1A/wJxpqBGzy3Bvl4x1VzW3ldlF6ZDPWoB5DkzTY3Yhm8irNqGFAuRgLVJmoyFFx2KhSRttfR0g3ExsYtfg0B82M1vR1l2I/s/5DeIiiwXaoiwCvnAjXtDPLW4cb3y3Ha5wNP7+PsEMAcQbhlHEOh+v20FrRqvajGtUvKOadGQIIOUgxnss1NKItnBMrydyF22SxvfZG9AlB7GQTNJppry3hq1VNJkRtgDS5obR/vW3rjij9qw2qq8q4= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2016 09:45:26.9821 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB1414 X-Mailman-Approved-At: Wed, 19 Oct 2016 13:46:18 +0200 Cc: Priyanka Jain Subject: [U-Boot] [PATCH 5/5] armv8/fsl-lsch3: Update code to release secondary cores X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" NXP ARMv8 SoC LS2080A release all secondary cores in one-go. But other new SoCs like LS2088A, LS1088A release secondary cores one by one to avoid power spike. Update code to release secondary cores based on SoC SVR Add code to release cores one by one for non LS2080A SoCs Signed-off-by: Priyanka Jain Signed-off-by: Raghav Dogra Signed-off-by: Prabhakar Kushwaha --- arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 2 +- arch/arm/cpu/armv8/fsl-layerscape/cpu.h | 1 + arch/arm/cpu/armv8/fsl-layerscape/mp.c | 59 ++++++++++++++++++++++++++++-- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c index ce04e48..15d157c 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c @@ -190,7 +190,7 @@ void enable_caches(void) } #endif -static inline u32 initiator_type(u32 cluster, int init_id) +inline u32 initiator_type(u32 cluster, int init_id) { struct ccsr_gur *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); u32 idx = (cluster >> (init_id * 8)) & TP_CLUSTER_INIT_MASK; diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.h b/arch/arm/cpu/armv8/fsl-layerscape/cpu.h index 8072f3c..a05f8aa 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.h +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.h @@ -5,4 +5,5 @@ */ int fsl_qoriq_core_to_cluster(unsigned int core); +u32 initiator_type(u32 cluster, int init_id); u32 cpu_mask(void); diff --git a/arch/arm/cpu/armv8/fsl-layerscape/mp.c b/arch/arm/cpu/armv8/fsl-layerscape/mp.c index f607c39..5cf080f 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/mp.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/mp.c @@ -9,6 +9,8 @@ #include #include #include +#include "cpu.h" +#include DECLARE_GLOBAL_DATA_PTR; @@ -22,11 +24,30 @@ phys_addr_t determine_mp_bootpg(void) return (phys_addr_t)&secondary_boot_code; } +#ifdef CONFIG_FSL_LSCH3 +void wake_secondary_core_n(int cluster, int core, int cluster_cores) +{ + struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); + struct ccsr_reset __iomem *rst = (void *)(CONFIG_SYS_FSL_RST_ADDR); + u32 mpidr = 0; + + mpidr = ((cluster << 8) | core); + gur_out32(&gur->scratchrw[6], mpidr); + asm volatile("dsb st" : : : "memory"); + rst->brrl |= 1 << ((cluster * cluster_cores) + core); + asm volatile("dsb st" : : : "memory"); + while (gur_in32(&gur->scratchrw[6]) != 0) + ; +} +#endif + int fsl_layerscape_wake_seconday_cores(void) { struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); #ifdef CONFIG_FSL_LSCH3 struct ccsr_reset __iomem *rst = (void *)(CONFIG_SYS_FSL_RST_ADDR); + u32 svr, ver, cluster, type; + int j = 0, cluster_cores = 0; #elif defined(CONFIG_FSL_LSCH2) struct ccsr_scfg __iomem *scfg = (void *)(CONFIG_SYS_FSL_SCFG_ADDR); #endif @@ -55,10 +76,40 @@ int fsl_layerscape_wake_seconday_cores(void) #ifdef CONFIG_FSL_LSCH3 gur_out32(&gur->bootlocptrh, (u32)(gd->relocaddr >> 32)); gur_out32(&gur->bootlocptrl, (u32)gd->relocaddr); - gur_out32(&gur->scratchrw[6], 1); - asm volatile("dsb st" : : : "memory"); - rst->brrl = cores; - asm volatile("dsb st" : : : "memory"); + + svr = gur_in32(&gur->svr); + ver = SVR_SOC_VER(svr); + if (ver == SVR_LS2080A || ver == SVR_LS2085A) { + gur_out32(&gur->scratchrw[6], 1); + asm volatile("dsb st" : : : "memory"); + rst->brrl = cores; + asm volatile("dsb st" : : : "memory"); + } else { + /* + * Release the cores out of reset one-at-a-time to avoid + * power spikes + */ + i = 0; + cluster = in_le32(&gur->tp_cluster[i].lower); + for (j = 0; j < TP_INIT_PER_CLUSTER; j++) { + type = initiator_type(cluster, j); + if (type && + TP_ITYP_TYPE(type) == TP_ITYP_TYPE_ARM) + cluster_cores++; + } + + do { + cluster = in_le32(&gur->tp_cluster[i].lower); + for (j = 0; j < TP_INIT_PER_CLUSTER; j++) { + type = initiator_type(cluster, j); + if (type && + TP_ITYP_TYPE(type) == TP_ITYP_TYPE_ARM) + wake_secondary_core_n(i, j, + cluster_cores); + } + i++; + } while ((cluster & TP_CLUSTER_EOC) != TP_CLUSTER_EOC); + } #elif defined(CONFIG_FSL_LSCH2) scfg_out32(&scfg->scratchrw[0], (u32)(gd->relocaddr >> 32)); scfg_out32(&scfg->scratchrw[1], (u32)gd->relocaddr);