From patchwork Sun Feb 22 11:36:34 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Kocialkowski X-Patchwork-Id: 442270 X-Patchwork-Delegate: trini@ti.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 3D8B51400F1 for ; Sun, 22 Feb 2015 22:36:52 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 0F4554A01B; Sun, 22 Feb 2015 12:36:48 +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 Yb-wg0R4f9Pj; Sun, 22 Feb 2015 12:36:47 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id EDDEA4A01C; Sun, 22 Feb 2015 12:36:46 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B3B334A01C for ; Sun, 22 Feb 2015 12:36:42 +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 bqIYFFRkTOFd for ; Sun, 22 Feb 2015 12:36:42 +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 gagarine.paulk.fr (gagarine.paulk.fr [109.190.93.129]) by theia.denx.de (Postfix) with ESMTPS id 5792E4A01B for ; Sun, 22 Feb 2015 12:36:40 +0100 (CET) Received: by gagarine.paulk.fr (Postfix, from userid 65534) id 3120020A8D; Sun, 22 Feb 2015 12:36:39 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on gagarine.paulk.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.0 Received: from localhost.localdomain (collins [192.168.1.129]) by gagarine.paulk.fr (Postfix) with ESMTP id 06F30209E6; Sun, 22 Feb 2015 12:36:35 +0100 (CET) From: Paul Kocialkowski To: u-boot@lists.denx.de Date: Sun, 22 Feb 2015 12:36:34 +0100 Message-Id: <1424604994-31875-1-git-send-email-contact@paulk.fr> X-Mailer: git-send-email 1.9.1 Cc: Tom Rini Subject: [U-Boot] [PATCH] omap3: ARM Cortex-A8 errata workarounds config option 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: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Workarounds applied in omap3_setup_aux_cr are only necessary for ARM core revisions prior to r3p2 (such as OMAP35xx but apparently not OMAP36xx and DM37xx) and require similar workarounds in the kernel, or it will cause numerous segmentation faults. This allows (when the option is not used) properly booting kernels that do not include the workaround. Follow-up to the discussion from July 2013: http://lists.denx.de/pipermail/u-boot/2013-July/158377.html Signed-off-by: Paul Kocialkowski --- README | 8 ++++++++ arch/arm/cpu/armv7/omap3/board.c | 2 ++ include/configs/am3517_crane.h | 2 ++ include/configs/am3517_evm.h | 2 ++ include/configs/cm_t35.h | 2 ++ include/configs/cm_t3517.h | 2 ++ include/configs/dig297.h | 2 ++ include/configs/mcx.h | 2 ++ include/configs/nokia_rx51.h | 2 ++ include/configs/omap3_evm_common.h | 2 ++ include/configs/omap3_logic.h | 2 ++ include/configs/omap3_mvblx.h | 2 ++ include/configs/omap3_pandora.h | 2 ++ include/configs/omap3_sdp3430.h | 2 ++ include/configs/omap3_zoom1.h | 2 ++ include/configs/tam3517-common.h | 2 ++ include/configs/tao3530.h | 2 ++ include/configs/ti_omap3_common.h | 2 ++ include/configs/tricorder.h | 2 ++ 19 files changed, 44 insertions(+) diff --git a/README b/README index ba57dc5..a39420d 100644 --- a/README +++ b/README @@ -621,6 +621,14 @@ The following options need to be configured: exists, unlike the similar options in the Linux kernel. Do not set these options unless they apply! + CONFIG_SYS_ARM_CORTEXA8_ERRATA + + Enables workarounds for ARM Cortex-A8 errata 454179, 430973 + and 621766. This is only necessary for ARM core revisions prior + to r3p2. Enabling those workarounds requires to enable the same + workarounds in the kernel, or it will cause multiple + segmentation faults. This is currently only effective on OMAP3. + - Driver Model Driver model is a new framework for devices in U-Boot introduced in early 2014. U-Boot is being progressively diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c index 90d6ae7..813f35b 100644 --- a/arch/arm/cpu/armv7/omap3/board.c +++ b/arch/arm/cpu/armv7/omap3/board.c @@ -246,8 +246,10 @@ void s_init(void) try_unlock_memory(); +#ifdef CONFIG_SYS_ARM_CORTEXA8_ERRATA /* Errata workarounds */ omap3_setup_aux_cr(); +#endif #ifndef CONFIG_SYS_L2CACHE_OFF /* Invalidate L2-cache from secure mode */ diff --git a/include/configs/am3517_crane.h b/include/configs/am3517_crane.h index 09ee10c..2b98c8b 100644 --- a/include/configs/am3517_crane.h +++ b/include/configs/am3517_crane.h @@ -31,6 +31,8 @@ #define CONFIG_DISPLAY_CPUINFO 1 #define CONFIG_DISPLAY_BOARDINFO 1 +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/am3517_evm.h b/include/configs/am3517_evm.h index 190ef0e..63dda70 100644 --- a/include/configs/am3517_evm.h +++ b/include/configs/am3517_evm.h @@ -31,6 +31,8 @@ #define CONFIG_DISPLAY_CPUINFO 1 #define CONFIG_DISPLAY_BOARDINFO 1 +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/cm_t35.h b/include/configs/cm_t35.h index b2a9f35..150b419 100644 --- a/include/configs/cm_t35.h +++ b/include/configs/cm_t35.h @@ -38,6 +38,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/cm_t3517.h b/include/configs/cm_t3517.h index 918032b..ff80e12 100644 --- a/include/configs/cm_t3517.h +++ b/include/configs/cm_t3517.h @@ -38,6 +38,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/dig297.h b/include/configs/dig297.h index c8739ed..f396a2e 100644 --- a/include/configs/dig297.h +++ b/include/configs/dig297.h @@ -44,6 +44,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/mcx.h b/include/configs/mcx.h index 26eb220..c353505 100644 --- a/include/configs/mcx.h +++ b/include/configs/mcx.h @@ -43,6 +43,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h index 46fc91e..8400aa6 100644 --- a/include/configs/nokia_rx51.h +++ b/include/configs/nokia_rx51.h @@ -52,6 +52,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/omap3_evm_common.h b/include/configs/omap3_evm_common.h index 8885e17..edf8f48 100644 --- a/include/configs/omap3_evm_common.h +++ b/include/configs/omap3_evm_common.h @@ -21,6 +21,8 @@ #define CONFIG_OMAP3_EVM /* This is a OMAP3 EVM */ #define CONFIG_TWL4030_POWER /* with TWL4030 PMIC */ +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* * Clock related definitions */ diff --git a/include/configs/omap3_logic.h b/include/configs/omap3_logic.h index aeb385f..0389e30 100644 --- a/include/configs/omap3_logic.h +++ b/include/configs/omap3_logic.h @@ -32,6 +32,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/omap3_mvblx.h b/include/configs/omap3_mvblx.h index bf1d34d..535943c 100644 --- a/include/configs/omap3_mvblx.h +++ b/include/configs/omap3_mvblx.h @@ -35,6 +35,8 @@ #define CONFIG_DISPLAY_CPUINFO 1 #define CONFIG_DISPLAY_BOARDINFO 1 +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/omap3_pandora.h b/include/configs/omap3_pandora.h index 45feeb5..184d63f 100644 --- a/include/configs/omap3_pandora.h +++ b/include/configs/omap3_pandora.h @@ -29,6 +29,8 @@ #define CONFIG_DISPLAY_CPUINFO 1 #define CONFIG_DISPLAY_BOARDINFO 1 +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/omap3_sdp3430.h b/include/configs/omap3_sdp3430.h index ac307eb..8a7617a 100644 --- a/include/configs/omap3_sdp3430.h +++ b/include/configs/omap3_sdp3430.h @@ -41,6 +41,8 @@ #define CONFIG_DISPLAY_CPUINFO 1 #define CONFIG_DISPLAY_BOARDINFO 1 +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/omap3_zoom1.h b/include/configs/omap3_zoom1.h index c5d742c..0b0016e 100644 --- a/include/configs/omap3_zoom1.h +++ b/include/configs/omap3_zoom1.h @@ -38,6 +38,8 @@ #define CONFIG_DISPLAY_CPUINFO 1 #define CONFIG_DISPLAY_BOARDINFO 1 +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + #define CONFIG_MISC_INIT_R #define CONFIG_REVISION_TAG 1 diff --git a/include/configs/tam3517-common.h b/include/configs/tam3517-common.h index 9fbe68a..7ade643 100644 --- a/include/configs/tam3517-common.h +++ b/include/configs/tam3517-common.h @@ -33,6 +33,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/tao3530.h b/include/configs/tao3530.h index 7d2c0d2..9d123b1 100644 --- a/include/configs/tao3530.h +++ b/include/configs/tao3530.h @@ -35,6 +35,8 @@ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/ti_omap3_common.h b/include/configs/ti_omap3_common.h index 840e108..0b06593 100644 --- a/include/configs/ti_omap3_common.h +++ b/include/configs/ti_omap3_common.h @@ -25,6 +25,8 @@ /* The chip has SDRC controller */ #define CONFIG_SDRC +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1) diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h index 36621a5..f1f1ae8 100644 --- a/include/configs/tricorder.h +++ b/include/configs/tricorder.h @@ -43,6 +43,8 @@ #define CONFIG_SILENT_CONSOLE #define CONFIG_ZERO_BOOTDELAY_CHECK +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK >> 1)