Hi, Here is a fix that works on top of your patch. Tested with ES2.1 and ES3.0 chips. I left out the caching for CPU type. -Tero >-----Original Message----- >From: ext Tony Lindgren [mailto:tony@xxxxxxxxxxx] >Sent: 25 September, 2008 13:18 >To: Kristo Tero (Nokia-D/Tampere) >Cc: linux-omap@xxxxxxxxxxxxxxx >Subject: Re: [PATCH] Fixed OMAP3 version check > >Hi, > >* Tero Kristo <tero.kristo@xxxxxxxxx> [080916 14:59]: >> CPU version was reported incorrectly (e.g. ES3.0 instead of ES2.1.) >> Also added a piece of optimization for CPU type check (omap_type()). >> >> Signed-off-by: Tero Kristo <tero.kristo@xxxxxxxxx> >> --- >> arch/arm/mach-omap2/id.c | 7 +++++-- >> 1 files changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/id.c >b/arch/arm/mach-omap2/id.c index >> ab7a6e9..4e2b449 100644 >> --- a/arch/arm/mach-omap2/id.c >> +++ b/arch/arm/mach-omap2/id.c >> @@ -37,7 +37,10 @@ EXPORT_SYMBOL(omap_chip_is); >> >> int omap_type(void) >> { >> - u32 val = 0; >> + static u32 val; >> + >> + if (val != 0) >> + return val; > >Hmm I guess this would return a random val? :) > > >> if (cpu_is_omap24xx()) { >> val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS); >> @@ -169,7 +172,7 @@ void __init omap34xx_check_revision(void) >> rev = (idcode >> 28) & 0xff; >> >> if (hawkeye == 0xb7ae) >> - system_rev = 0x34300034 | ((1 + rev) << 12); >> + system_rev = 0x34300034 | (rev << 12); >> >> out: >> switch (system_rev) { > >Well AFAIK here are the numbers for rev: > >ES1.0 0 /* Cannot read idcode register */ >ES2.0 0 >ES2.1 1 >ES3.0 2 > >While ES3.0 TRM claims: > >ES1.0 0 >ES2.0 1 >ES2.1 2 >ES3.0 3 > >Which I think is incorrect at least for ES2.0 and ES2.1. > >Can you please try the attached patch and see if it detects >your ES3.0 correctly? > >Tony >
Attachment:
0001-OMAP3-Fixed-version-check.patch
Description: 0001-OMAP3-Fixed-version-check.patch