From patchwork Thu Jun 4 04:01:09 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dongsheng Wang X-Patchwork-Id: 480357 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 8BB571402A7 for ; Thu, 4 Jun 2015 14:05:41 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BF43C4B656; Thu, 4 Jun 2015 06:05:36 +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 9gOGjVdJroBM; Thu, 4 Jun 2015 06:05:36 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 1AC074B62B; Thu, 4 Jun 2015 06:05:36 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 41F3D4B62B for ; Thu, 4 Jun 2015 06:05:33 +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 hr4sfPFuyqKM for ; Thu, 4 Jun 2015 06:05:33 +0200 (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 na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0132.outbound.protection.outlook.com [157.56.111.132]) by theia.denx.de (Postfix) with ESMTPS id 0F5804B635 for ; Thu, 4 Jun 2015 06:05:25 +0200 (CEST) Received: from BY2PR03CA077.namprd03.prod.outlook.com (10.141.249.50) by BL2PR03MB148.namprd03.prod.outlook.com (10.255.230.27) with Microsoft SMTP Server (TLS) id 15.1.172.22; Thu, 4 Jun 2015 04:05:23 +0000 Received: from BN1BFFO11FD015.protection.gbl (2a01:111:f400:7c10::1:126) by BY2PR03CA077.outlook.office365.com (2a01:111:e400:2c5d::50) with Microsoft SMTP Server (TLS) id 15.1.184.17 via Frontend Transport; Thu, 4 Jun 2015 04:05:22 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of freescale.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 BN1BFFO11FD015.mail.protection.outlook.com (10.58.144.78) with Microsoft SMTP Server (TLS) id 15.1.184.11 via Frontend Transport; Thu, 4 Jun 2015 04:05:22 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id t5445B1p000349; Wed, 3 Jun 2015 21:05:18 -0700 From: Dongsheng Wang To: Date: Thu, 4 Jun 2015 12:01:09 +0800 Message-ID: <1433390469-3052-2-git-send-email-dongsheng.wang@freescale.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1433390469-3052-1-git-send-email-dongsheng.wang@freescale.com> References: <1433390469-3052-1-git-send-email-dongsheng.wang@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD015; 1:DU8cqLaeHcRJV7ud0nHxc6JrXQF10XkzWl/lfqv6HHXBJwl94qBJw3KqtYOPRCufxCV/LJKhL8od2eaN3Om0q39ab3wKaDoprXVbR34+9AvQSo379GovxfWs67C8dk9IYcuiO9zJXpEmpP6gokTLx0huAfnVflgJod7cHCkNnzP8iWaiwKbvoOqqWA2u8ABTfWiC8+GUJ5mFab/7NU44R2cDKhoYEaJwxYy5kUTszCTXxDXHc9Juk8pMddaWhgzApcHN1bpLfh0RW7FUkBGzQb5jusNmOeBQRMoPEgXOC6J7dNVuvpA2KkIwaX9wgX1OZGvT94WJARGClBRkaDsjVgJenTRUgQHPGFaXxGdwd7M= X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(339900001)(189002)(199003)(50226001)(92566002)(68736005)(77096005)(2950100001)(5001860100001)(77156002)(62966003)(19580395003)(105606002)(5001960100002)(107886002)(2371004)(6806004)(87936001)(19580405001)(575784001)(104016003)(229853001)(2351001)(48376002)(97736004)(189998001)(33646002)(76176999)(85426001)(46102003)(36756003)(86362001)(50466002)(5001830100001)(81156007)(64706001)(47776003)(50986999)(106466001)(110136002)(4001540100001)(4001450100001)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BL2PR03MB148; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB148; 2:YxMN9e/MJH/T0QYWg2gXzKcWHl1s6+Jkw1CT4xMMS1hjQdnh5RzP9j03cyMiGQ5D; 2:t8FL+AIbK21y4wlDy5BdSOkp4CI0S0upenyafW+NjDmEVTC7CvGI1gdJ6AOLZx0dFMiKWWLngY4FdhcPiA5h+2tG2q/Lw8vjWgaD1c1Stkk11iuOBzfx8LRMensJddL8acObF62BGyCxFaxOSh/puvN8F3SV4M3RPbTtamlmLSN8TAinkPR49W0dE21MfL8LgYR11psJlUevDgWzpsI2wuXFbcsJduXjlrcKL2l05Wc=; 6:y0rjmp0+S33DIgg4NIsnJvVEvf75He1ilCJVqR0s/t17+c4j3jYgGA9bRDONjLsR3hKW3TSwnyANcImCLKVjs3U92YEVJKGQD70gbNoH4siRb8U99UfgNIq5enlrks83L2AZVS+hj3mED8JUzQ0hBFrjLY69Ad9H6MpMv/WQV6bWDBEli51zbpzhwfvaqHTTzPKjWEzEzhRCSRAPEge8fx2na8Q+tOPsZU3h0avsc4D00xgEW2sYJSI5p0XOi+VrKiTA2S8hN33q0LJXgZv1oNFoZIV2Yh11dAZtqOqJAfq7KLDZ2Emk+WmDkPOogm/rfSQ+bvcRUnDyVPydnvcCxA==; 3:uLpK0TaPEQKBNmxL0Av4BC2tarHFM8RiBSlvMev042qEDLbMqGKiqpJIRKMie+8JNhZM/BbVEfpzl3adwlJzbpd+M1Q4ubJf5NJClxxIsq5hgRK9n9JjxOwFgCKqsA87/uJz+UPFmMDbWKynvAwFPe8/b7kOr3dGRkVJdpyzrUsKv5mqDx9qnL0wPO964y8kMGSpasgekWpjlw2ng+Mbc7FkygmTO9DtJhe6fGuWGP80iUDzx71Ccv5NAWx9KWCmsvmioQKTLyRU/t5sGr2Ueu/ME0MV06ouU5vwltr7noZaG8F1vjSDIYQD2S/CyAJb X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB148; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520003)(3002001); SRVR:BL2PR03MB148; BCL:0; PCL:0; RULEID:; SRVR:BL2PR03MB148; X-Forefront-PRVS: 0597911EE1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR03MB148; 9:Bx+WS2T+ADzqrkebDUVP4jaenWewJDJlByctr1+eVvP?= =?us-ascii?Q?kcvEPR+aZk4/JxA14vdj3BT8H0h7ql3YFIYZGfBL1mLHKiQ67wbQvygVuroa?= =?us-ascii?Q?XppblXfOvWHrKoG4Rxuz35pEV8/tewbhus7iHLM/jyghnk/QIOq1HuyL9hqb?= =?us-ascii?Q?+vgSKcYuAVXUlic1G+mp9tVqYTSyx/7Fsw4WEexEYhjZObAkqK9/3fhGykPg?= =?us-ascii?Q?L3R96BEWQu7fX0cdvpuwtTZ3zPvCbAncceTfIss7jLmdYeGhlXlxagwQXzqo?= =?us-ascii?Q?0hHgiNWihCcTjgrRDU+0kllPUnYqRNy4STIAS4RKaJ9/+O/yMNSBkzJdVb5L?= =?us-ascii?Q?a2nJCPBnXEHmfe2D70d2TVNY3rDgfL/k9i5Ka1d8TJmeczyV2m4V+piXX8Mz?= =?us-ascii?Q?SdMWDHc6IGoamiRuuRL4vfkMnv37QZ8cOp2jtT6iUYen76dOaS81ikc9RWsy?= =?us-ascii?Q?Ihrg0vqjQflXDsn5k3LvwYUEI6jF2eriVSz801iCdxoaEsvi+oR7oRs89MSl?= =?us-ascii?Q?9qoGvgNWgVptpN5Fv+WhuzCVIg0XKDJ3y0ZbYwmwtLCrCUrcMR7AsgWxo5Bx?= =?us-ascii?Q?d8ym2WPUyR5Q74MzAHciB7EWPQ9iTE3djRdmk792y4eZRoEgRzKNVgMLpjdu?= =?us-ascii?Q?VEEge8lTkKHtFgBHTXe4o4vqjoEyQEVdjiOs7yMyu3xStN5k0EcyDkNY9sBZ?= =?us-ascii?Q?Uv/jPQguEnOvI7COpy9vAxku4xAUlPFeMswMdwP3frmzRT2u7lw445ypfNcD?= =?us-ascii?Q?l9gH8E1MD0Iz55Qgfs8wLJuohZmHNThmHaO8hDWLwrVONLFDf8uNx90JHfBd?= =?us-ascii?Q?CRVVj6Lhz85+q2+aBjBA2FTv82Tp+iqfa4FZ1EV/327Wun5b2gIpNp8ZwfRi?= =?us-ascii?Q?pSymKJRJlNSMQcTdEmD9yTrP0Slp2a/YKwy5nLb5kxDZmleidRZP3v0M94J+?= =?us-ascii?Q?XNvH1yYdXb3u8d1lPK4EA03vVtmJhovtuBlHvFWMzgJ7Y9pfnz3QbQO8yLF3?= =?us-ascii?Q?W81cjCf6bNz+zNerKtMfUErOty2VR2MlTwHSsVBP84yskW8os1k3XVnTfUWi?= =?us-ascii?Q?PnPNxpNcr2faQ2PzNChQm/JjvCObnCUkapOn0HG91TK0V2uWzCQjJJ3AbCaf?= =?us-ascii?Q?WCY5pyouG4pOKx0ip7qwbhwro4LzydCJkKKJS3OFMvbLN9XLlzw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB148; 3:FJDI4ByJ6Y2MRem8y2HiGDYymJ0X1vpNH/EvdUtLJxtXniMuRIMRD/LmNcj8qQhr8YX/t0D5cY6zm9r8jKfi3R7l3qYzUfzFleQmFQFCUA73QlxK3NgvrlBXYY6dxX96udxtybddxiPwV9iKkLCcUg==; 10:FWyfEuMnnBYGxHwlb+pv312DFWgp7jLpCVyfwBFSRAI+WUk+teKdN86q7sF2ITMPRFusi8GRqIoMo9mm2Fzv5SLbMnm2L+KMqdjECXD+MXw=; 6:dRPiKxDxxyu9I4IJ3PMmDSHsPowPSuUHnrbg8Hx5dqZtDfo203ls8dtHs//Psm6A X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2015 04:05:22.3951 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB148 Cc: alison.wang@freescale.com, u-boot@lists.denx.de, jan.kiszka@siemens.com, ijc@hellion.org.uk Subject: [U-Boot] [PATCH 2/2] arm/ls102xa: Add PSCI support for ls102xa 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" From: Wang Dongsheng Base on PSCI services, implement CPU_ON/CPU_OFF for ls102xa platform. Tested on LS1021AQDS, LS1021ATWR. Test CPU hotplug times: 60K Test kernel boot times: 1.2K Signed-off-by: Wang Dongsheng Acked-by: Alison Wang diff --git a/arch/arm/cpu/armv7/ls102xa/Makefile b/arch/arm/cpu/armv7/ls102xa/Makefile index 2e6a207..2d55782 100644 --- a/arch/arm/cpu/armv7/ls102xa/Makefile +++ b/arch/arm/cpu/armv7/ls102xa/Makefile @@ -12,3 +12,7 @@ obj-y += fsl_epu.o obj-$(CONFIG_OF_LIBFDT) += fdt.o obj-$(CONFIG_SYS_HAS_SERDES) += fsl_ls1_serdes.o ls102xa_serdes.o obj-$(CONFIG_SPL) += spl.o + +ifdef CONFIG_ARMV7_PSCI +obj-y += psci.o +endif diff --git a/arch/arm/cpu/armv7/ls102xa/psci.S b/arch/arm/cpu/armv7/ls102xa/psci.S new file mode 100644 index 0000000..cf5cd48 --- /dev/null +++ b/arch/arm/cpu/armv7/ls102xa/psci.S @@ -0,0 +1,126 @@ +/* + * Copyright 2015 Freescale Semiconductor, Inc. + * Author: Wang Dongsheng + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include + +#include +#include +#include + +#define SCFG_CORE0_SFT_RST 0x130 +#define SCFG_CORESRENCR 0x204 + +#define DCFG_CCSR_BRR 0x0E4 +#define DCFG_CCSR_SCRATCHRW1 0x200 + + .pushsection ._secure.text, "ax" + + .arch_extension sec + +#define ONE_MS (GENERIC_TIMER_CLK / 1000) +#define RESET_WAIT (30 * ONE_MS) + + @ r1 = target CPU + @ r2 = target PC +.globl psci_cpu_on +psci_cpu_on: + push {lr} + + @ Clear and Get the correct CPU number + @ r1 = 0xf01 + and r1, r1, #0xff + + mov r0, r1 + bl psci_get_cpu_stack_top + str r2, [r0] + dsb + + @ Get DCFG base address + movw r4, #(CONFIG_SYS_FSL_GUTS_ADDR & 0xffff) + movt r4, #(CONFIG_SYS_FSL_GUTS_ADDR >> 16) + + @ Detect target CPU state + ldr r2, [r4, #DCFG_CCSR_BRR] + rev r2, r2 + lsr r2, r2, r1 + ands r2, r2, #1 + beq holdoff_release + + @ Reset target CPU + @ Get SCFG base address + movw r0, #(CONFIG_SYS_FSL_SCFG_ADDR & 0xffff) + movt r0, #(CONFIG_SYS_FSL_SCFG_ADDR >> 16) + + @ Enable CORE Soft Reset + movw r5, #0 + movt r5, #(1 << 15) + rev r5, r5 + str r5, [r0, #SCFG_CORESRENCR] + + @ Get CPUx offset register + mov r6, #0x4 + mul r6, r6, r1 + add r2, r0, r6 + + @ Do reset on target CPU + movw r5, #0 + movt r5, #(1 << 15) + rev r5, r5 + str r5, [r2, #SCFG_CORE0_SFT_RST] + + @ Wait target CPU up + timer_wait r2, RESET_WAIT + + @ Disable CORE soft reset + mov r5, #0 + str r5, [r0, #SCFG_CORESRENCR] + +holdoff_release: + @ Release on target CPU + ldr r2, [r4, #DCFG_CCSR_BRR] + mov r6, #1 + lsl r6, r6, r1 @ 32 bytes per CPU + + rev r6, r6 + orr r2, r2, r6 + str r2, [r4, #DCFG_CCSR_BRR] + + @ Set secondary boot entry + ldr r6, =psci_cpu_entry + rev r6, r6 + str r6, [r4, #DCFG_CCSR_SCRATCHRW1] + + isb + dsb + + @ Return + mov r0, #ARM_PSCI_RET_SUCCESS + + pop {lr} + bx lr + +.globl psci_cpu_off +psci_cpu_off: + bl psci_cpu_off_common + +1: wfi + b 1b + +.globl psci_arch_init +psci_arch_init: + mov r6, lr + + bl psci_get_cpu_id + bl psci_get_cpu_stack_top + mov sp, r0 + + bx r6 + + .globl psci_text_end +psci_text_end: + .popsection diff --git a/include/configs/ls1021aqds.h b/include/configs/ls1021aqds.h index ca913b0..7232cd9 100644 --- a/include/configs/ls1021aqds.h +++ b/include/configs/ls1021aqds.h @@ -11,6 +11,8 @@ #define CONFIG_LS102XA +#define CONFIG_ARMV7_PSCI + #define CONFIG_SYS_GENERIC_BOARD #define CONFIG_DISPLAY_CPUINFO diff --git a/include/configs/ls1021atwr.h b/include/configs/ls1021atwr.h index 6b6f2ba..b618be5 100644 --- a/include/configs/ls1021atwr.h +++ b/include/configs/ls1021atwr.h @@ -11,6 +11,8 @@ #define CONFIG_LS102XA +#define CONFIG_ARMV7_PSCI + #define CONFIG_SYS_GENERIC_BOARD #define CONFIG_DISPLAY_CPUINFO