diff for duplicates of <87vcjuzred.fsf@ti.com> diff --git a/a/1.txt b/N1/1.txt index 5c65ba2..52119c8 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -16,79 +16,79 @@ >> > ok >>> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com> ->>> [t-kristo@ti.com: moved workaround from omap-sar.c to pm44xx.c] +>>> [t-kristo at ti.com: moved workaround from omap-sar.c to pm44xx.c] >>> Signed-off-by: Tero Kristo <t-kristo@ti.com> >>> --- ->>> .../include/mach/ctrl_module_wkup_44xx.h | 2 + ->>> arch/arm/mach-omap2/pm44xx.c | 37 ++++++++++++++++++++ ->>> 2 files changed, 39 insertions(+), 0 deletions(-) +>>> ?.../include/mach/ctrl_module_wkup_44xx.h ? ? ? ? ? | ? ?2 + +>>> ?arch/arm/mach-omap2/pm44xx.c ? ? ? ? ? ? ? ? ? ? ? | ? 37 ++++++++++++++++++++ +>>> ?2 files changed, 39 insertions(+), 0 deletions(-) >>> >>> diff --git a/arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h b/arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h >>> index a0af9ba..b763a79 100644 >>> --- a/arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h >>> +++ b/arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h >>> @@ -28,6 +28,8 @@ ->>> #define OMAP4_CTRL_MODULE_WKUP_IP_REVISION 0x0000 ->>> #define OMAP4_CTRL_MODULE_WKUP_IP_HWINFO 0x0004 ->>> #define OMAP4_CTRL_MODULE_WKUP_IP_SYSCONFIG 0x0010 ->>> +#define OMAP4_CTRL_SECURE_EMIF1_SDRAM_CONFIG2_REG 0x0114 ->>> +#define OMAP4_CTRL_SECURE_EMIF2_SDRAM_CONFIG2_REG 0x011c ->>> #define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_0 0x0460 ->>> #define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_1 0x0464 ->>> #define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_2 0x0468 +>>> ?#define OMAP4_CTRL_MODULE_WKUP_IP_REVISION ? ? ? ? ? 0x0000 +>>> ?#define OMAP4_CTRL_MODULE_WKUP_IP_HWINFO ? ? ? ? ? ? 0x0004 +>>> ?#define OMAP4_CTRL_MODULE_WKUP_IP_SYSCONFIG ? ? ? ? ?0x0010 +>>> +#define OMAP4_CTRL_SECURE_EMIF1_SDRAM_CONFIG2_REG ? ?0x0114 +>>> +#define OMAP4_CTRL_SECURE_EMIF2_SDRAM_CONFIG2_REG ? ?0x011c +>>> ?#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_0 ?0x0460 +>>> ?#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_1 ?0x0464 +>>> ?#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_2 ?0x0468 >>> diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c >>> index 215b80e..dfaa254 100644 >>> --- a/arch/arm/mach-omap2/pm44xx.c >>> +++ b/arch/arm/mach-omap2/pm44xx.c >>> @@ -17,12 +17,18 @@ ->>> #include <linux/err.h> ->>> #include <linux/slab.h> ->>> #include <asm/system_misc.h> +>>> ?#include <linux/err.h> +>>> ?#include <linux/slab.h> +>>> ?#include <asm/system_misc.h> >>> +#include <linux/io.h> >>> + >>> +#include <mach/ctrl_module_wkup_44xx.h> >>> +#include <mach/hardware.h> >>> ->>> #include "common.h" ->>> #include "clockdomain.h" ->>> #include "powerdomain.h" ->>> #include "pm.h" +>>> ?#include "common.h" +>>> ?#include "clockdomain.h" +>>> ?#include "powerdomain.h" +>>> ?#include "pm.h" >>> ->>> +#define EMIF_SDRAM_CONFIG2_OFFSET 0xc +>>> +#define EMIF_SDRAM_CONFIG2_OFFSET ? ?0xc >>> + ->>> struct power_state { ->>> struct powerdomain *pwrdm; ->>> u32 next_state; +>>> ?struct power_state { +>>> ? ? ? struct powerdomain *pwrdm; +>>> ? ? ? u32 next_state; >>> @@ -215,6 +221,37 @@ static int __init omap4_pm_init(void) >>> ->>> pr_err("Power Management for TI OMAP4.\n"); +>>> ? ? ? pr_err("Power Management for TI OMAP4.\n"); >>> ->>> + /* ->>> + * Work around for OMAP443x Errata i632: "LPDDR2 Corruption After OFF ->>> + * Mode Transition When CS1 Is Used On EMIF": ->>> + * Overwrite EMIF1/EMIF2 ->>> + * SECURE_EMIF1_SDRAM_CONFIG2_REG ->>> + * SECURE_EMIF2_SDRAM_CONFIG2_REG ->>> + */ ->>> + if (cpu_is_omap443x()) { +>>> + ? ? /* +>>> + ? ? ?* Work around for OMAP443x Errata i632: "LPDDR2 Corruption After OFF +>>> + ? ? ?* Mode Transition When CS1 Is Used On EMIF": +>>> + ? ? ?* Overwrite EMIF1/EMIF2 +>>> + ? ? ?* SECURE_EMIF1_SDRAM_CONFIG2_REG +>>> + ? ? ?* SECURE_EMIF2_SDRAM_CONFIG2_REG +>>> + ? ? ?*/ +>>> + ? ? if (cpu_is_omap443x()) { >> >> This should probably be done later in this function, after PM_ERRATUM >> flags are setup, and then it should use a PM_ERRATUM flag instead of cpu_is* >> > ok > ->>> + void __iomem *secure_ctrl_mod; ->>> + void __iomem *emif1; ->>> + void __iomem *emif2; ->>> + u32 val; +>>> + ? ? ? ? ? ? void __iomem *secure_ctrl_mod; +>>> + ? ? ? ? ? ? void __iomem *emif1; +>>> + ? ? ? ? ? ? void __iomem *emif2; +>>> + ? ? ? ? ? ? u32 val; >>> + ->>> + secure_ctrl_mod = ioremap(OMAP4_CTRL_MODULE_WKUP, SZ_4K); ->>> + emif1 = ioremap(OMAP44XX_EMIF1_BASE, SZ_1M); ->>> + emif2 = ioremap(OMAP44XX_EMIF2_BASE, SZ_1M); +>>> + ? ? ? ? ? ? secure_ctrl_mod = ioremap(OMAP4_CTRL_MODULE_WKUP, SZ_4K); +>>> + ? ? ? ? ? ? emif1 = ioremap(OMAP44XX_EMIF1_BASE, SZ_1M); +>>> + ? ? ? ? ? ? emif2 = ioremap(OMAP44XX_EMIF2_BASE, SZ_1M); >>> + ->>> + BUG_ON(!secure_ctrl_mod || !emif1 || !emif2); +>>> + ? ? ? ? ? ? BUG_ON(!secure_ctrl_mod || !emif1 || !emif2); >> ->> Please avoid BUG_ON() and use proper error recovery. This is not a +>> Please avoid BUG_ON() and use proper error recovery. ?This is not a >> condition where the entire kernel should panic. >> > Agree. WARN_ON() should suffice. @@ -97,7 +97,3 @@ A WARN_ON() is ok (but noisy). Better is a pr_warn() with some proper error recovery. Kevin --- -To unsubscribe from this list: send the line "unsubscribe linux-omap" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N1/content_digest index 8ee122a..1ef7ce1 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -2,15 +2,10 @@ "ref\01336990730-26892-16-git-send-email-t-kristo@ti.com\0" "ref\087mx573boy.fsf@ti.com\0" "ref\0CAMQu2gzOeX3W1HouzVHf7uvMHtdTp7=E22fk6Uq81sxcdM5nxg@mail.gmail.com\0" - "From\0Kevin Hilman <khilman@ti.com>\0" - "Subject\0Re: [PATCHv2 15/19] ARM: OMAP4430: PM: workaround for DDR corruption on second CS\0" + "From\0khilman@ti.com (Kevin Hilman)\0" + "Subject\0[PATCHv2 15/19] ARM: OMAP4430: PM: workaround for DDR corruption on second CS\0" "Date\0Thu, 17 May 2012 09:47:06 -0700\0" - "To\0Shilimkar" - " Santosh <santosh.shilimkar@ti.com>\0" - "Cc\0Tero Kristo <t-kristo@ti.com>" - linux-omap@vger.kernel.org - paul@pwsan.com - " linux-arm-kernel@lists.infradead.org\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "\"Shilimkar, Santosh\" <santosh.shilimkar@ti.com> writes:\n" @@ -31,79 +26,79 @@ ">>\n" "> ok\n" ">>> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>\n" - ">>> [t-kristo@ti.com: moved workaround from omap-sar.c to pm44xx.c]\n" + ">>> [t-kristo at ti.com: moved workaround from omap-sar.c to pm44xx.c]\n" ">>> Signed-off-by: Tero Kristo <t-kristo@ti.com>\n" ">>> ---\n" - ">>> \302\240.../include/mach/ctrl_module_wkup_44xx.h \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240 \302\2402 +\n" - ">>> \302\240arch/arm/mach-omap2/pm44xx.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240 37 ++++++++++++++++++++\n" - ">>> \302\2402 files changed, 39 insertions(+), 0 deletions(-)\n" + ">>> ?.../include/mach/ctrl_module_wkup_44xx.h ? ? ? ? ? | ? ?2 +\n" + ">>> ?arch/arm/mach-omap2/pm44xx.c ? ? ? ? ? ? ? ? ? ? ? | ? 37 ++++++++++++++++++++\n" + ">>> ?2 files changed, 39 insertions(+), 0 deletions(-)\n" ">>>\n" ">>> diff --git a/arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h b/arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h\n" ">>> index a0af9ba..b763a79 100644\n" ">>> --- a/arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h\n" ">>> +++ b/arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h\n" ">>> @@ -28,6 +28,8 @@\n" - ">>> \302\240#define OMAP4_CTRL_MODULE_WKUP_IP_REVISION \302\240 \302\240 \302\240 \302\240 \302\240 0x0000\n" - ">>> \302\240#define OMAP4_CTRL_MODULE_WKUP_IP_HWINFO \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 0x0004\n" - ">>> \302\240#define OMAP4_CTRL_MODULE_WKUP_IP_SYSCONFIG \302\240 \302\240 \302\240 \302\240 \302\2400x0010\n" - ">>> +#define OMAP4_CTRL_SECURE_EMIF1_SDRAM_CONFIG2_REG \302\240 \302\2400x0114\n" - ">>> +#define OMAP4_CTRL_SECURE_EMIF2_SDRAM_CONFIG2_REG \302\240 \302\2400x011c\n" - ">>> \302\240#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_0 \302\2400x0460\n" - ">>> \302\240#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_1 \302\2400x0464\n" - ">>> \302\240#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_2 \302\2400x0468\n" + ">>> ?#define OMAP4_CTRL_MODULE_WKUP_IP_REVISION ? ? ? ? ? 0x0000\n" + ">>> ?#define OMAP4_CTRL_MODULE_WKUP_IP_HWINFO ? ? ? ? ? ? 0x0004\n" + ">>> ?#define OMAP4_CTRL_MODULE_WKUP_IP_SYSCONFIG ? ? ? ? ?0x0010\n" + ">>> +#define OMAP4_CTRL_SECURE_EMIF1_SDRAM_CONFIG2_REG ? ?0x0114\n" + ">>> +#define OMAP4_CTRL_SECURE_EMIF2_SDRAM_CONFIG2_REG ? ?0x011c\n" + ">>> ?#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_0 ?0x0460\n" + ">>> ?#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_1 ?0x0464\n" + ">>> ?#define OMAP4_CTRL_MODULE_WKUP_CONF_DEBUG_SEL_TST_2 ?0x0468\n" ">>> diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c\n" ">>> index 215b80e..dfaa254 100644\n" ">>> --- a/arch/arm/mach-omap2/pm44xx.c\n" ">>> +++ b/arch/arm/mach-omap2/pm44xx.c\n" ">>> @@ -17,12 +17,18 @@\n" - ">>> \302\240#include <linux/err.h>\n" - ">>> \302\240#include <linux/slab.h>\n" - ">>> \302\240#include <asm/system_misc.h>\n" + ">>> ?#include <linux/err.h>\n" + ">>> ?#include <linux/slab.h>\n" + ">>> ?#include <asm/system_misc.h>\n" ">>> +#include <linux/io.h>\n" ">>> +\n" ">>> +#include <mach/ctrl_module_wkup_44xx.h>\n" ">>> +#include <mach/hardware.h>\n" ">>>\n" - ">>> \302\240#include \"common.h\"\n" - ">>> \302\240#include \"clockdomain.h\"\n" - ">>> \302\240#include \"powerdomain.h\"\n" - ">>> \302\240#include \"pm.h\"\n" + ">>> ?#include \"common.h\"\n" + ">>> ?#include \"clockdomain.h\"\n" + ">>> ?#include \"powerdomain.h\"\n" + ">>> ?#include \"pm.h\"\n" ">>>\n" - ">>> +#define EMIF_SDRAM_CONFIG2_OFFSET \302\240 \302\2400xc\n" + ">>> +#define EMIF_SDRAM_CONFIG2_OFFSET ? ?0xc\n" ">>> +\n" - ">>> \302\240struct power_state {\n" - ">>> \302\240 \302\240 \302\240 struct powerdomain *pwrdm;\n" - ">>> \302\240 \302\240 \302\240 u32 next_state;\n" + ">>> ?struct power_state {\n" + ">>> ? ? ? struct powerdomain *pwrdm;\n" + ">>> ? ? ? u32 next_state;\n" ">>> @@ -215,6 +221,37 @@ static int __init omap4_pm_init(void)\n" ">>>\n" - ">>> \302\240 \302\240 \302\240 pr_err(\"Power Management for TI OMAP4.\\n\");\n" + ">>> ? ? ? pr_err(\"Power Management for TI OMAP4.\\n\");\n" ">>>\n" - ">>> + \302\240 \302\240 /*\n" - ">>> + \302\240 \302\240 \302\240* Work around for OMAP443x Errata i632: \"LPDDR2 Corruption After OFF\n" - ">>> + \302\240 \302\240 \302\240* Mode Transition When CS1 Is Used On EMIF\":\n" - ">>> + \302\240 \302\240 \302\240* Overwrite EMIF1/EMIF2\n" - ">>> + \302\240 \302\240 \302\240* SECURE_EMIF1_SDRAM_CONFIG2_REG\n" - ">>> + \302\240 \302\240 \302\240* SECURE_EMIF2_SDRAM_CONFIG2_REG\n" - ">>> + \302\240 \302\240 \302\240*/\n" - ">>> + \302\240 \302\240 if (cpu_is_omap443x()) {\n" + ">>> + ? ? /*\n" + ">>> + ? ? ?* Work around for OMAP443x Errata i632: \"LPDDR2 Corruption After OFF\n" + ">>> + ? ? ?* Mode Transition When CS1 Is Used On EMIF\":\n" + ">>> + ? ? ?* Overwrite EMIF1/EMIF2\n" + ">>> + ? ? ?* SECURE_EMIF1_SDRAM_CONFIG2_REG\n" + ">>> + ? ? ?* SECURE_EMIF2_SDRAM_CONFIG2_REG\n" + ">>> + ? ? ?*/\n" + ">>> + ? ? if (cpu_is_omap443x()) {\n" ">>\n" ">> This should probably be done later in this function, after PM_ERRATUM\n" ">> flags are setup, and then it should use a PM_ERRATUM flag instead of cpu_is*\n" ">>\n" "> ok\n" ">\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 void __iomem *secure_ctrl_mod;\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 void __iomem *emif1;\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 void __iomem *emif2;\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 u32 val;\n" + ">>> + ? ? ? ? ? ? void __iomem *secure_ctrl_mod;\n" + ">>> + ? ? ? ? ? ? void __iomem *emif1;\n" + ">>> + ? ? ? ? ? ? void __iomem *emif2;\n" + ">>> + ? ? ? ? ? ? u32 val;\n" ">>> +\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 secure_ctrl_mod = ioremap(OMAP4_CTRL_MODULE_WKUP, SZ_4K);\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 emif1 = ioremap(OMAP44XX_EMIF1_BASE, SZ_1M);\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 emif2 = ioremap(OMAP44XX_EMIF2_BASE, SZ_1M);\n" + ">>> + ? ? ? ? ? ? secure_ctrl_mod = ioremap(OMAP4_CTRL_MODULE_WKUP, SZ_4K);\n" + ">>> + ? ? ? ? ? ? emif1 = ioremap(OMAP44XX_EMIF1_BASE, SZ_1M);\n" + ">>> + ? ? ? ? ? ? emif2 = ioremap(OMAP44XX_EMIF2_BASE, SZ_1M);\n" ">>> +\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 BUG_ON(!secure_ctrl_mod || !emif1 || !emif2);\n" + ">>> + ? ? ? ? ? ? BUG_ON(!secure_ctrl_mod || !emif1 || !emif2);\n" ">>\n" - ">> Please avoid BUG_ON() and use proper error recovery. \302\240This is not a\n" + ">> Please avoid BUG_ON() and use proper error recovery. ?This is not a\n" ">> condition where the entire kernel should panic.\n" ">>\n" "> Agree. WARN_ON() should suffice.\n" @@ -111,10 +106,6 @@ "A WARN_ON() is ok (but noisy). Better is a pr_warn() with some proper\n" "error recovery.\n" "\n" - "Kevin\n" - "--\n" - "To unsubscribe from this list: send the line \"unsubscribe linux-omap\" in\n" - "the body of a message to majordomo@vger.kernel.org\n" - More majordomo info at http://vger.kernel.org/majordomo-info.html + Kevin -e2323029bbf4f939c3e32ccdda38074369e37c067425a1f4ac47ed25c2bb42e1 +1e2f47643b56750a444e79cd451e59d04955fa6467bdb6163ab184fb0536c926
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.