Hi all, Any comments on this patch? Regards, Nishant > -----Original Message----- > From: Nishant Kamat [mailto:nskamat@xxxxxx] > Sent: Wednesday, January 19, 2011 8:49 PM > To: linux-omap@xxxxxxxxxxxxxxx > Cc: Nishant Kamat > Subject: [PATCH] ARM: OMAP: Add chip id recognition for OMAP4 ES2.1 and > ES2.2 > > Allow OMAP4 ES2.1 and ES2.2 revisions to be recognized in the > omap4_check_revision() function. > > Mainly, ES2.1 has fixes that allow LPDDR to be used at 100% OPP > (400MHz). > ES2.2 additionally has a couple of power management fixes (to reduce > leakage), an I2C1 SDA line state fix, and a floating point write > corruption fix (cortex erratum). > > Even though the current mainline support doesn't need to distinguish > between ES2.X versions, it's still useful to know the correct silicon > rev when issues are reported. Moreover, these id checks can be used by > power management code that selects suitable OPPs considering the > memory speed limitation on ES2.0. > > For details about the silicon errata on OMAP4430, refer > http://focus.ti.com/pdfs/wtbu/SWPZ009A_OMAP4430_Errata_Public_vA.pdf > > Signed-off-by: Nishant Kamat <nskamat@xxxxxx> > --- > arch/arm/mach-omap2/id.c | 31 ++++++++++++++++++++----- > ------ > arch/arm/plat-omap/include/plat/cpu.h | 16 +++++++++++----- > 2 files changed, 31 insertions(+), 16 deletions(-) > > diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c > index 5f9086c..8fd0535 100644 > --- a/arch/arm/mach-omap2/id.c > +++ b/arch/arm/mach-omap2/id.c > @@ -6,7 +6,7 @@ > * Copyright (C) 2005 Nokia Corporation > * Written by Tony Lindgren <tony@xxxxxxxxxxx> > * > - * Copyright (C) 2009 Texas Instruments > + * Copyright (C) 2009-11 Texas Instruments > * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@xxxxxx> > * > * This program is free software; you can redistribute it and/or > modify > @@ -307,7 +307,7 @@ static void __init omap4_check_revision(void) > */ > idcode = read_tap_reg(OMAP_TAP_IDCODE); > hawkeye = (idcode >> 12) & 0xffff; > - rev = (idcode >> 28) & 0xff; > + rev = (idcode >> 28) & 0xf; > > /* > * Few initial ES2.0 samples IDCODE is same as ES1.0 > @@ -326,22 +326,31 @@ static void __init omap4_check_revision(void) > omap_chip.oc |= CHIP_IS_OMAP4430ES1; > break; > case 1: > + default: > omap_revision = OMAP4430_REV_ES2_0; > omap_chip.oc |= CHIP_IS_OMAP4430ES2; > + } > + break; > + case 0xb95c: > + switch (rev) { > + case 3: > + omap_revision = OMAP4430_REV_ES2_1; > + omap_chip.oc |= CHIP_IS_OMAP4430ES2_1; > break; > + case 4: > default: > - omap_revision = OMAP4430_REV_ES2_0; > - omap_chip.oc |= CHIP_IS_OMAP4430ES2; > - } > - break; > + omap_revision = OMAP4430_REV_ES2_2; > + omap_chip.oc |= CHIP_IS_OMAP4430ES2_2; > + } > + break; > default: > - /* Unknown default to latest silicon rev as default*/ > - omap_revision = OMAP4430_REV_ES2_0; > - omap_chip.oc |= CHIP_IS_OMAP4430ES2; > + /* Unknown default to latest silicon rev as default */ > + omap_revision = OMAP4430_REV_ES2_2; > + omap_chip.oc |= CHIP_IS_OMAP4430ES2_2; > } > > - pr_info("OMAP%04x ES%d.0\n", > - omap_rev() >> 16, ((omap_rev() >> 12) & 0xf) + 1); > + pr_info("OMAP%04x ES%d.%d\n", omap_rev() >> 16, > + ((omap_rev() >> 12) & 0xf), ((omap_rev() >> 8) & 0xf)); > } > > #define OMAP3_SHOW_FEATURE(feat) \ > diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat- > omap/include/plat/cpu.h > index 3fd8b40..989f9e6 100644 > --- a/arch/arm/plat-omap/include/plat/cpu.h > +++ b/arch/arm/plat-omap/include/plat/cpu.h > @@ -5,7 +5,7 @@ > * > * Copyright (C) 2004, 2008 Nokia Corporation > * > - * Copyright (C) 2009 Texas Instruments. > + * Copyright (C) 2009-11 Texas Instruments. > * > * Written by Tony Lindgren <tony.lindgren@xxxxxxxxx> > * > @@ -390,8 +390,10 @@ IS_OMAP_TYPE(3517, 0x3517) > #define OMAP3517_REV(v) (OMAP35XX_CLASS | (0x3517 << 16) | > (v << 8)) > > #define OMAP443X_CLASS 0x44300044 > -#define OMAP4430_REV_ES1_0 OMAP443X_CLASS > -#define OMAP4430_REV_ES2_0 0x44301044 > +#define OMAP4430_REV_ES1_0 (OMAP443X_CLASS | (0x10 << 8)) > +#define OMAP4430_REV_ES2_0 (OMAP443X_CLASS | (0x20 << 8)) > +#define OMAP4430_REV_ES2_1 (OMAP443X_CLASS | (0x21 << 8)) > +#define OMAP4430_REV_ES2_2 (OMAP443X_CLASS | (0x22 << 8)) > > /* > * omap_chip bits > @@ -419,11 +421,15 @@ IS_OMAP_TYPE(3517, 0x3517) > #define CHIP_IS_OMAP3630ES1_1 (1 << 9) > #define CHIP_IS_OMAP3630ES1_2 (1 << 10) > #define CHIP_IS_OMAP4430ES2 (1 << 11) > +#define CHIP_IS_OMAP4430ES2_1 (1 << 12) > +#define CHIP_IS_OMAP4430ES2_2 (1 << 13) > > #define CHIP_IS_OMAP24XX (CHIP_IS_OMAP2420 | > CHIP_IS_OMAP2430) > > -#define CHIP_IS_OMAP4430 (CHIP_IS_OMAP4430ES1 | \ > - CHIP_IS_OMAP4430ES2) > +#define CHIP_IS_OMAP4430 (CHIP_IS_OMAP4430ES1 | \ > + CHIP_IS_OMAP4430ES2 | \ > + CHIP_IS_OMAP4430ES2_1 | \ > + CHIP_IS_OMAP4430ES2_2) > > /* > * "GE" here represents "greater than or equal to" in terms of ES > -- > 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html