Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 172785
b: refs/heads/master
c: 048f4bd
h: refs/heads/master
i:
  172783: 82866f8
v: v3
  • Loading branch information
Sanjeev Premi authored and Tony Lindgren committed Nov 22, 2009
1 parent 0e9d23a commit 21296cd
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8384ce071365244332ea05c81112bfffcf48be87
refs/heads/master: 048f4bd7607eb714d4831f90dea6fd27eac9e494
65 changes: 54 additions & 11 deletions trunk/arch/arm/mach-omap2/id.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,6 @@ void __init omap3_check_revision(void)
u32 cpuid, idcode;
u16 hawkeye;
u8 rev;
char *rev_name = "ES1.0";

/*
* We cannot access revision registers on ES1.0.
Expand All @@ -197,7 +196,7 @@ void __init omap3_check_revision(void)
cpuid = read_cpuid(CPUID_ID);
if ((((cpuid >> 4) & 0xfff) == 0xc08) && ((cpuid & 0xf) == 0x0)) {
omap_revision = OMAP3430_REV_ES1_0;
goto out;
return;
}

/*
Expand All @@ -212,31 +211,24 @@ void __init omap3_check_revision(void)

if (hawkeye == 0xb7ae) {
switch (rev) {
case 0:
case 0: /* Take care of early samples */
case 1:
omap_revision = OMAP3430_REV_ES2_0;
rev_name = "ES2.0";
break;
case 2:
omap_revision = OMAP3430_REV_ES2_1;
rev_name = "ES2.1";
break;
case 3:
omap_revision = OMAP3430_REV_ES3_0;
rev_name = "ES3.0";
break;
case 4:
omap_revision = OMAP3430_REV_ES3_1;
rev_name = "ES3.1";
break;
default:
/* Use the latest known revision as default */
omap_revision = OMAP3430_REV_ES3_1;
rev_name = "Unknown revision\n";
}
}

out:
pr_info("OMAP%04x %s\n", omap_rev() >> 16, rev_name);
}

#define OMAP3_SHOW_FEATURE(feat) \
Expand All @@ -248,6 +240,57 @@ void __init omap3_check_revision(void)

void __init omap3_cpuinfo(void)
{
u8 rev = GET_OMAP_REVISION();
char cpu_name[16], cpu_rev[16];

/* OMAP3430 and OMAP3530 are assumed to be same.
*
* OMAP3525, OMAP3515 and OMAP3503 can be detected only based
* on available features. Upon detection, update the CPU id
* and CPU class bits.
*/
if (omap3_has_iva() && omap3_has_sgx()) {
strcpy(cpu_name, "3430/3530");
}
else if (omap3_has_sgx()) {
omap_revision = OMAP3525_REV(rev);
strcpy(cpu_name, "3525");
}
else if (omap3_has_iva()) {
omap_revision = OMAP3515_REV(rev);
strcpy(cpu_name, "3515");
}
else {
omap_revision = OMAP3503_REV(rev);
strcpy(cpu_name, "3503");
}

switch (rev) {
case OMAP_REVBITS_00:
strcpy(cpu_rev, "1.0");
break;
case OMAP_REVBITS_10:
strcpy(cpu_rev, "2.0");
break;
case OMAP_REVBITS_20:
strcpy(cpu_rev, "2.1");
break;
case OMAP_REVBITS_30:
strcpy(cpu_rev, "3.0");
break;
case OMAP_REVBITS_40:
strcpy(cpu_rev, "3.1");
break;
default:
/* Use the latest known revision as default */
strcpy(cpu_rev, "3.1");
}

/*
* Print verbose information
*/
pr_info("OMAP%s ES%s\n", cpu_name, cpu_rev);

OMAP3_SHOW_FEATURE(l2cache);
OMAP3_SHOW_FEATURE(iva);
OMAP3_SHOW_FEATURE(sgx);
Expand Down
41 changes: 41 additions & 0 deletions trunk/arch/arm/plat-omap/include/plat/cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,23 @@ struct omap_chip_id {
*/
unsigned int omap_rev(void);

/*
* Define CPU revision bits
*
* Verbose meaning of the revision bits may be different for a silicon
* family. This difference can be handled separately.
*/
#define OMAP_REVBITS_00 0x00
#define OMAP_REVBITS_10 0x10
#define OMAP_REVBITS_20 0x20
#define OMAP_REVBITS_30 0x30
#define OMAP_REVBITS_40 0x40

/*
* Get the CPU revision for OMAP devices
*/
#define GET_OMAP_REVISION() ((omap_rev() >> 8) & 0xff)

/*
* Test if multicore OMAP support is needed
*/
Expand Down Expand Up @@ -303,6 +320,10 @@ IS_OMAP_TYPE(3430, 0x3430)
#define cpu_is_omap2422() 0
#define cpu_is_omap2423() 0
#define cpu_is_omap2430() 0
#define cpu_is_omap3503() 0
#define cpu_is_omap3515() 0
#define cpu_is_omap3525() 0
#define cpu_is_omap3530() 0
#define cpu_is_omap3430() 0

/*
Expand Down Expand Up @@ -353,7 +374,21 @@ IS_OMAP_TYPE(3430, 0x3430)

#if defined(CONFIG_ARCH_OMAP34XX)
# undef cpu_is_omap3430
# undef cpu_is_omap3503
# undef cpu_is_omap3515
# undef cpu_is_omap3525
# undef cpu_is_omap3530
# define cpu_is_omap3430() is_omap3430()
# define cpu_is_omap3503() (cpu_is_omap3430() && \
(!omap3_has_iva()) && \
(!omap3_has_sgx()))
# define cpu_is_omap3515() (cpu_is_omap3430() && \
(omap3_has_iva()) && \
(!omap3_has_sgx()))
# define cpu_is_omap3525() (cpu_is_omap3430() && \
(omap3_has_sgx()) && \
(!omap3_has_iva()))
# define cpu_is_omap3530() (cpu_is_omap3430())
#endif

# if defined(CONFIG_ARCH_OMAP4)
Expand Down Expand Up @@ -384,6 +419,12 @@ IS_OMAP_TYPE(3430, 0x3430)
#define OMAP3430_REV_ES3_0 0x34303034
#define OMAP3430_REV_ES3_1 0x34304034

#define OMAP35XX_CLASS 0x35000034
#define OMAP3503_REV(v) (OMAP35XX_CLASS | (0x3503 << 16) | (v << 12))
#define OMAP3515_REV(v) (OMAP35XX_CLASS | (0x3515 << 16) | (v << 12))
#define OMAP3525_REV(v) (OMAP35XX_CLASS | (0x3525 << 16) | (v << 12))
#define OMAP3530_REV(v) (OMAP35XX_CLASS | (0x3530 << 16) | (v << 12))

#define OMAP443X_CLASS 0x44300034

/*
Expand Down

0 comments on commit 21296cd

Please sign in to comment.