|
@@ -26,12 +26,12 @@
|
|
|
|
|
|
#include <mach/hardware.h>
|
|
|
|
|
|
-static int cpu_silicon_rev = -1;
|
|
|
-static int cpu_partnumber;
|
|
|
+static int mx27_cpu_rev = -1;
|
|
|
+static int mx27_cpu_partnumber;
|
|
|
|
|
|
#define SYS_CHIP_ID 0x00 /* The offset of CHIP ID register */
|
|
|
|
|
|
-static void query_silicon_parameter(void)
|
|
|
+static int mx27_read_cpu_rev(void)
|
|
|
{
|
|
|
u32 val;
|
|
|
/*
|
|
@@ -42,20 +42,18 @@ static void query_silicon_parameter(void)
|
|
|
val = __raw_readl(MX27_IO_ADDRESS(MX27_SYSCTRL_BASE_ADDR
|
|
|
+ SYS_CHIP_ID));
|
|
|
|
|
|
+ mx27_cpu_partnumber = (int)((val >> 12) & 0xFFFF);
|
|
|
+
|
|
|
switch (val >> 28) {
|
|
|
case 0:
|
|
|
- cpu_silicon_rev = IMX_CHIP_REVISION_1_0;
|
|
|
- break;
|
|
|
+ return IMX_CHIP_REVISION_1_0;
|
|
|
case 1:
|
|
|
- cpu_silicon_rev = IMX_CHIP_REVISION_2_0;
|
|
|
- break;
|
|
|
+ return IMX_CHIP_REVISION_2_0;
|
|
|
case 2:
|
|
|
- cpu_silicon_rev = IMX_CHIP_REVISION_2_1;
|
|
|
- break;
|
|
|
+ return IMX_CHIP_REVISION_2_1;
|
|
|
default:
|
|
|
- cpu_silicon_rev = IMX_CHIP_REVISION_UNKNOWN;
|
|
|
+ return IMX_CHIP_REVISION_UNKNOWN;
|
|
|
}
|
|
|
- cpu_partnumber = (int)((val >> 12) & 0xFFFF);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -65,12 +63,12 @@ static void query_silicon_parameter(void)
|
|
|
*/
|
|
|
int mx27_revision(void)
|
|
|
{
|
|
|
- if (cpu_silicon_rev == -1)
|
|
|
- query_silicon_parameter();
|
|
|
+ if (mx27_cpu_rev == -1)
|
|
|
+ mx27_cpu_rev = mx27_read_cpu_rev();
|
|
|
|
|
|
- if (cpu_partnumber != 0x8821)
|
|
|
+ if (mx27_cpu_partnumber != 0x8821)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- return cpu_silicon_rev;
|
|
|
+ return mx27_cpu_rev;
|
|
|
}
|
|
|
EXPORT_SYMBOL(mx27_revision);
|