From patchwork Thu Nov 5 06:30:14 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar Kushwaha X-Patchwork-Id: 540275 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 6D4741409C3 for ; Thu, 5 Nov 2015 17:30:38 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 9A2034BB1F; Thu, 5 Nov 2015 07:30:34 +0100 (CET) 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 P791NuG8S7x7; Thu, 5 Nov 2015 07:30:34 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 15DE34BAFE; Thu, 5 Nov 2015 07:30:34 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2F0184BAFE for ; Thu, 5 Nov 2015 07:30:30 +0100 (CET) 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 jNRpB0dk1H3N for ; Thu, 5 Nov 2015 07:30:30 +0100 (CET) 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-by2-obe.outbound.protection.outlook.com (mail-by2on0117.outbound.protection.outlook.com [207.46.100.117]) by theia.denx.de (Postfix) with ESMTPS id 1B0C94BAE9 for ; Thu, 5 Nov 2015 07:30:26 +0100 (CET) Received: from BN3PR0301CA0054.namprd03.prod.outlook.com (10.160.152.150) by BN1PR0301MB0659.namprd03.prod.outlook.com (10.160.171.20) with Microsoft SMTP Server (TLS) id 15.1.318.15; Thu, 5 Nov 2015 06:30:22 +0000 Received: from BN1AFFO11FD051.protection.gbl (2a01:111:f400:7c10::140) by BN3PR0301CA0054.outlook.office365.com (2a01:111:e400:401e::22) with Microsoft SMTP Server (TLS) id 15.1.318.15 via Frontend Transport; Thu, 5 Nov 2015 06:30: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; freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; 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 BN1AFFO11FD051.mail.protection.outlook.com (10.58.53.66) with Microsoft SMTP Server (TLS) id 15.1.318.9 via Frontend Transport; Thu, 5 Nov 2015 06:30:22 +0000 Received: from b32579-VirtualBox.ap.freescale.net (B32579-02.ap.freescale.net [10.232.40.252]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id tA56UFEL024868; Wed, 4 Nov 2015 23:30:20 -0700 From: Prabhakar Kushwaha To: Date: Thu, 5 Nov 2015 12:00:14 +0530 Message-ID: <1446705014-12975-1-git-send-email-prabhakar@freescale.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD051; 1:DMlLx6l7Dsarq8pXzD7SgzXmjWVRNlgyWswpUiXVMYAi4bQQeIIMsLFbQqDKNu9u0vzVKaIJNOwc+w5sCxWvaDi91w35+sI9OAHrYIJmYf8w74cALki4ElFikN/B0Tvowd8LS5Et27wY8C/r/dOSpdvfi4nhD5WJMiaEEXOBXDo1MDQK9UZHVxvZaiHuWZ7v9cc1cmeMnZbJqDqunxfq06AGidEy30sMXY5RxXx7guKYtsEb99m7U8axxDgkYMGEBSxgDlfsZ4sMt6NhExeIvI3l7R5iIwEOlqjyhgoZefJvrFG6flaYfTMtnGeZgiSKEefNVh7Jd8IAkOy4Zsuc5Ka1GoVH0aaBZvbkwgyOVVti36PvQYKKoB1NR6VeisZEuK6tKSjsbBueA+HUpMCd3A== X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(5003940100001)(104016004)(47776003)(50226001)(50986999)(87936001)(19580405001)(36756003)(85426001)(106466001)(19580395003)(86362001)(11100500001)(575784001)(450100001)(105606002)(6806005)(5001920100001)(97736004)(92566002)(33646002)(189998001)(5007970100001)(5001960100002)(107886002)(110136002)(77096005)(5008740100001)(4001430100002)(81156007)(48376002)(229853001)(2351001)(50466002); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR0301MB0659; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0659; 2:lhM28a+Gho+mexmptEmwJbiY9D+4gb/OCNWjnQxxpoQJHaUckC21yQ1sauOAlKFKsZkhUOxdmn0RL5YJBjbV9hlA22LB0nNAE/c2YOTOQvIC2hiybwbq/I4m5xdqZ4CtYmyZdcNNw5v9IvoxJRo2IvCSxTSsUArKR/EspQgY2fI=; 3:+N0GGneZxbm+q5oVVbD+/aWjpHa3CGqdjEDkTzKTsrSv6rzJZqo/Uog5EzDzfZhSw9llw1YppAcJVX1YYCBmoFC3d8HREc24dAaYxYvjOW75t6RRJi/YMVLLWynjXfqBLz6LSZXuP4PftlJhXK4aH+pZkQfLk6qPiB3N3CObFI6tjBJPH4nMYokyn+bbdoD7FPEqIcs1nJ6YtmVmlAGVWIrxtobQOLXAjtyyCS5Tack=; 25:a599W0KdJ+OE7ftWiz7/qZsuv5/JMJoXgX0hZ950rzAqZ6AqVUVYNBcqJgvuoBhOSGpIbS24nSVHdmEOnXJW1mXuQ9d/XF7CWpskSFTG45dRoO1I4E4BJusAxO3bHRRUBJpwmSAP7eSBUGOn7a5UxIltmOp4n6bkeFWeSIis/w29Ib7ROOyu4RchMZmNruvoXiRqXSAll2L1HnVDr/Fq3f4AYEjHZ33z0aUpc+z9K7HialXFalx7UbV8tHhHZGqwaDpWUzqB/I/CqwhnVy8Ghg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR0301MB0659; X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0659; 20:dqZsoHEdE5MXV0GHf7dtsy4vJbsIj3FEd0u9/P+h4PczQyn4SM+alpwzdBWHGSKoJmN+/oewGInMbJdSLub7g8rSH+bnWtIeuRheFwCua04heR1uEf3V70eb/YjdZFfX15btmrt4TS85Ax40Kr17Dq9T8W4Obax2hwO3htzSb10+lib5FR10SiTZbP03LwpfB48Qm6YhQbrwUzJFtbNGJt8sOBFO9W0ekpRKUTo88sl7K6vNnIKJIQS1Rxdy2bJ7aNjjeMgDvQZKMeETeCWYgldzCLjc5Lkzh3/GnOdurCgHJlKG9Q5pFEq6ek1HBAknvkjnCf4+D5SeyPzZH3ia9P2NkNEKJHZ6vMjP5TyeisY=; 4:cytAjTLYShJo/XRVB1/hdc6ikmwXTR+dsFPzIwsJMVrvA3efpuEF2LSIMizJclZSAlC09vmoURvi1mi6uHY1jDepRZoza1DxLBn/xHFM78pGz6pNhyNogxaaUwifOTrsxhOVtJVPjzY2dLIJVZUMK0+Y3yYg0SKt+9zFcGKXA5MTCYbNnOc5FLIi0Y5T3F5y1xNNJ/6qElCzPYUKaKLxfzqQJ4UrdaxcYVDHgInBYXYWsrUh6IEzzliI6Y+LEeo7g9PU93Qc2wKW8rlXrK5anYUIyI9P4mYf+TZ/bimOEQ6jB2WFkZM46CxtelqvEHLTLSBl0MLMj/+6sd2CBgbtEJ5GFm1+F9U/1Jt7of9mZg9dSIb3queKPQi4NHaWskbl X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(8121501046)(5005006)(10201501046)(3002001); SRVR:BN1PR0301MB0659; BCL:0; PCL:0; RULEID:; SRVR:BN1PR0301MB0659; X-Forefront-PRVS: 0751474A44 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0659; 23:HfQPACFYUqKC1rYRwLuTpNidzUsl4Q1BCgpXh7E?= =?us-ascii?Q?tOaVuKCCXjT3Dfkxz8reF0B7bY3uxWAk4dWrc/4+72TAdRxPPp+eaEHtkyBo?= =?us-ascii?Q?1n0H4R1rZfe5SHfICy9HvnauJPGDwBMI2OB+lkMLBCnzLX1D2H+m1CIt7UzR?= =?us-ascii?Q?6Ls3IbDpYw4EEdS4wX76qlENWcw2ZQMHXEQbwi8h9EPH8b2J32Yq9bhSrFS2?= =?us-ascii?Q?8c0lzphOtz8sDhXV3tEOe5SM1VCXBMbnWIvbXdi8XlepaLCUfLZ4NuR6ai/c?= =?us-ascii?Q?EWpVl+Te1toDkRq9vzNMsRhBnEVrpLZY1yzEipaRDuGAEhgCs7IGl87G2snJ?= =?us-ascii?Q?n95BaH0DHwvT6r5hdsHDcC0s22z5qqK3VZ6C2hSr38SMh9NdQGpaH9sZudlt?= =?us-ascii?Q?IEIb4aIvlXv8B+q/VsAKqzSHNLTDffCe2FW7TEAqp4gv9t5nDOTl6+F5GA8C?= =?us-ascii?Q?5JBhdLnskoViSB6EQl98P/E5aDmBD7KeL8hc+JiUcvHK/gx+3yx2SAVT0DYq?= =?us-ascii?Q?vQbB6HdAQbOT8lGdtw034bPn9Pg54yhJFLqt0zBZIB14aFBzYfJSEPAEaGCo?= =?us-ascii?Q?QyRa7BcLcWoe/645iXLADPWP3kf/k612sfX2dq1hzizkYBypCNxLjUZPWZle?= =?us-ascii?Q?pdfzDqOsHM8SKgltzuZC0bOJA5znnrgEuCdhXNVDSRZ3FzYw1c0i9kYtPdSq?= =?us-ascii?Q?6sduVeXzaBSPfdz7uuQz5v4qZXQQfXdK1nWd6/BgvkxBxaGbaSg2ydWNEaGo?= =?us-ascii?Q?B0fYpG3fP2NmrpbKHEg9nbua66fRVj5LFkPycaLROmDHe7ol+XAeej8GTGi2?= =?us-ascii?Q?n3rjcKRF6mrh9/RlGlh7EneTN7CK7RccOdaqPkrJFtfU6nhn0HX552v7PdUa?= =?us-ascii?Q?6BExGpe57jKsudQ6mPQ05iuLmlhTYhda3TSKm5+h/xjfW4zOGAI7F5yHihbS?= =?us-ascii?Q?3Boihd5lXCvy3ysKYXHzQKKLZFZVSPlez4QwBsmB1k1a65N7ZieZeiLsyhRB?= =?us-ascii?Q?vz7pimhuyqqr46L12z1skt31ox6HlDq9Ju7bXFBvk/XaLRjwhgCTD/oMjp6V?= =?us-ascii?Q?GDbHAOTw1YtMoy/dYQVxp4sdQbtJ4y7rSrxgLlxYCGkCdQfgoQOK+eu8L55S?= =?us-ascii?Q?gZm6kHqpNnCw=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0659; 5:swIVsu4Jp680rb7sQANnLD/hq/7nlH3Xtt8+hiHC/TnSTjUG+Ox8ufZ62UMT/PLXXKTS2kWbPGBTmYdm6HqX6UdDLxG0pu3K1YYiv1UAO5XYX4kf7ObheuHCV6UuyCZdg+YpQp9ABFWN6Jjuj6z2VA==; 24:cbzW132yW4loL/e3R486tVkJJqSGdKGSmvtcqmm2Gzcny9m/iape7IecIqvXxjzeYJR4rbLmBvmuu8qt9e1kJJY0+emTlf65Yz3OXGlvCsk=; 20:DN//UM+ETvWsa9uUmlb9CQQrackK1x1O/XYkfDu4qNrsw1tnJXB4mHsSDvADE04Nzzn8dtiAzCHJFaOfq5o2MQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2015 06:30:22.4828 (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: BN1PR0301MB0659 Cc: yorksun@freescale.com Subject: [U-Boot] [PATCH][v3] armv8: ls2085a: Add workaround of errata A009635 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" If the core runs at higher than x3 speed of the platform, there is possiblity about sev instruction to getting missed by other cores. This is because of SoC Run Control block may not able to sample the EVENTI(Sev) signals. Configure Run Control and EPU to periodically send out EVENTI signals to wake up A57 cores. Signed-off-by: Prabhakar Kushwaha --- Changes for v2: Updated description Changes for v3: Added README and comments arch/arm/cpu/armv8/fsl-layerscape/README.lsch3 | 21 +++++++++++ arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 6 ++++ arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43 +++++++++++++++++++++++ arch/arm/include/asm/arch-fsl-layerscape/config.h | 9 +++++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 3 ++ 5 files changed, 82 insertions(+) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/README.lsch3 b/arch/arm/cpu/armv8/fsl-layerscape/README.lsch3 index d1f92c4..baa80b7 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/README.lsch3 +++ b/arch/arm/cpu/armv8/fsl-layerscape/README.lsch3 @@ -272,3 +272,24 @@ b) fsl_mc start aiop [FW_addr] - Start AIOP c) fsl_mc apply DPL [DPL_addr] - Apply DPL file d) No DPMACs availabe for use in u-boot Please note actual AIOP start will happen during DPL parsing of Management complex + + +Errata A009635 +--------------- +If the core runs at higher than x3 speed of the platform, there is +possiblity about sev instruction to getting missed by other cores. +This is because of SoC Run Control block may not able to sample +the EVENTI(Sev) signals. + +Workaround: Configure Run Control and EPU to periodically send out EVENTI signals to +wake up A57 cores + +Errata workaround uses Env variable "a009635_interval_val". It uses decimal +value. +- Default value of env variable is platform clock (MHz) + +- User can modify default value by updating the env variable + setenv a009635_interval_val 600; saveenv; + It configure platform clock as 600 MHz + +- Env variable as 0 signifies no workaround diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c index 0cb0afa..dbb12c2 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c @@ -484,7 +484,13 @@ int arch_early_init_r(void) { #ifdef CONFIG_MP int rv = 1; +#endif + +#ifdef CONFIG_SYS_FSL_ERRATUM_A009635 + erratum_a009635(); +#endif +#ifdef CONFIG_MP rv = fsl_layerscape_wake_seconday_cores(); if (rv) printf("Did not wake secondary cores\n"); diff --git a/arch/arm/cpu/armv8/fsl-layerscape/soc.c b/arch/arm/cpu/armv8/fsl-layerscape/soc.c index 637853d..34f9a94 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/soc.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/soc.c @@ -9,10 +9,53 @@ #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; #ifdef CONFIG_LS2085A +#ifdef CONFIG_SYS_FSL_ERRATUM_A009635 +#define PLATFORM_CYCLE_ENV_VAR "a009635_interval_val" + +static unsigned long get_internval_val_mhz(void) +{ + char *interval = getenv(PLATFORM_CYCLE_ENV_VAR); + /* + * interval is the number of platform cycles(MHz) between + * wake up events generated by EPU. + */ + ulong interval_mhz = get_bus_freq(0) / (1000 * 1000); + + if (interval) + interval_mhz = simple_strtoul(interval, NULL, 10); + + return interval_mhz; +} + +void erratum_a009635(void) +{ + u32 val; + unsigned long interval_mhz = get_internval_val_mhz(); + + if (!interval_mhz) + return; + + val = in_le32(DCSR_CGACRE5); + writel(val | 0x00000200, DCSR_CGACRE5); + + val = in_le32(EPU_EPCMPR5); + writel(interval_mhz, EPU_EPCMPR5); + val = in_le32(EPU_EPCCR5); + writel(val | 0x82820000, EPU_EPCCR5); + val = in_le32(EPU_EPSMCR5); + writel(val | 0x002f0000, EPU_EPSMCR5); + val = in_le32(EPU_EPECR5); + writel(val | 0x20000000, EPU_EPECR5); + val = in_le32(EPU_EPGCR); + writel(val | 0x80000000, EPU_EPGCR); +} +#endif + static void erratum_a008751(void) { #ifdef CONFIG_SYS_FSL_ERRATUM_A008751 diff --git a/arch/arm/include/asm/arch-fsl-layerscape/config.h b/arch/arm/include/asm/arch-fsl-layerscape/config.h index 87bb937..c7169ab 100644 --- a/arch/arm/include/asm/arch-fsl-layerscape/config.h +++ b/arch/arm/include/asm/arch-fsl-layerscape/config.h @@ -84,11 +84,20 @@ #define TZPCDECPROT_2_SET_BASE (TZPC_BASE + 0x81C) #define TZPCDECPROT_2_CLR_BASE (TZPC_BASE + 0x820) +#define DCSR_CGACRE5 0x700070914ULL +#define EPU_EPCMPR5 0x700060914ULL +#define EPU_EPCCR5 0x700060814ULL +#define EPU_EPSMCR5 0x700060228ULL +#define EPU_EPECR5 0x700060314ULL +#define EPU_EPCTR5 0x700060a14ULL +#define EPU_EPGCR 0x700060000ULL + #define CONFIG_SYS_FSL_ERRATUM_A008336 #define CONFIG_SYS_FSL_ERRATUM_A008511 #define CONFIG_SYS_FSL_ERRATUM_A008514 #define CONFIG_SYS_FSL_ERRATUM_A008585 #define CONFIG_SYS_FSL_ERRATUM_A008751 +#define CONFIG_SYS_FSL_ERRATUM_A009635 #elif defined(CONFIG_LS1043A) #define CONFIG_MAX_CPUS 4 #define CONFIG_SYS_CACHELINE_SIZE 64 diff --git a/arch/arm/include/asm/arch-fsl-layerscape/soc.h b/arch/arm/include/asm/arch-fsl-layerscape/soc.h index 5ed456e..80354f0 100644 --- a/arch/arm/include/asm/arch-fsl-layerscape/soc.h +++ b/arch/arm/include/asm/arch-fsl-layerscape/soc.h @@ -50,4 +50,7 @@ void fsl_lsch2_early_init_f(void); #endif void cpu_name(char *name); +#ifdef CONFIG_SYS_FSL_ERRATUM_A009635 +void erratum_a009635(void); +#endif #endif /* _ASM_ARMV8_FSL_LAYERSCAPE_SOC_H_ */