forked from luck/tmp_suning_uos_patched
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@ti.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
59556765cd
commit
e49c4d27ab
|
@ -6,7 +6,7 @@
|
|||
* Copyright (C) 2005 Nokia Corporation
|
||||
* Written by Tony Lindgren <tony@atomide.com>
|
||||
*
|
||||
* Copyright (C) 2009 Texas Instruments
|
||||
* Copyright (C) 2009-11 Texas Instruments
|
||||
* Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -328,7 +328,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
|
||||
|
@ -347,22 +347,31 @@ static void __init omap4_check_revision(void)
|
|||
omap_chip.oc |= CHIP_IS_OMAP4430ES1;
|
||||
break;
|
||||
case 1:
|
||||
omap_revision = OMAP4430_REV_ES2_0;
|
||||
omap_chip.oc |= CHIP_IS_OMAP4430ES2;
|
||||
break;
|
||||
default:
|
||||
omap_revision = OMAP4430_REV_ES2_0;
|
||||
omap_chip.oc |= CHIP_IS_OMAP4430ES2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
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_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) \
|
||||
|
|
|
@ -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@nokia.com>
|
||||
*
|
||||
|
@ -405,8 +405,10 @@ IS_OMAP_TYPE(3517, 0x3517)
|
|||
#define TI8168_REV_ES1_1 (TI816X_CLASS | (OMAP_REVBITS_01 << 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
|
||||
|
@ -434,12 +436,16 @@ 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_TI816X (1 << 14)
|
||||
|
||||
#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
|
||||
|
|
Loading…
Reference in New Issue
Block a user