aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mx3
diff options
context:
space:
mode:
authorDinh Nguyen <Dinh.Nguyen@freescale.com>2010-11-15 12:30:01 -0500
committerSascha Hauer <s.hauer@pengutronix.de>2010-11-28 13:51:47 -0500
commit9ab4650f718a0e1cb8792bab4ef97efca4ac75c2 (patch)
treeb04138d06accafc9861098238260f815d35edb8a /arch/arm/mach-mx3
parentb66ff7a2cd411a2245c984793a7eb98ee91771f9 (diff)
ARM: imx: Get the silicon version from the IIM module
Instead of reading the silicon version from ROM, we should read the SREV register from the IIM. Freescale has dropped all support for MX51 REV1.0, only MX51 REV 2.0 and 3.0 are valid. Signed-off-by: Dinh Nguyen <Dinh.Nguyen@freescale.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx3')
-rw-r--r--arch/arm/mach-mx3/clock-imx31.c2
-rw-r--r--arch/arm/mach-mx3/cpu.c31
2 files changed, 19 insertions, 14 deletions
diff --git a/arch/arm/mach-mx3/clock-imx31.c b/arch/arm/mach-mx3/clock-imx31.c
index 109e98f323e0..7cf6d29f376b 100644
--- a/arch/arm/mach-mx3/clock-imx31.c
+++ b/arch/arm/mach-mx3/clock-imx31.c
@@ -615,7 +615,7 @@ int __init mx31_clocks_init(unsigned long fref)
615 615
616 mx31_read_cpu_rev(); 616 mx31_read_cpu_rev();
617 617
618 if (mx31_revision() >= MX31_CHIP_REV_2_0) { 618 if (mx31_revision() >= IMX_CHIP_REVISION_2_0) {
619 reg = __raw_readl(MXC_CCM_PMCR1); 619 reg = __raw_readl(MXC_CCM_PMCR1);
620 /* No PLL restart on DVFS switch; enable auto EMI handshake */ 620 /* No PLL restart on DVFS switch; enable auto EMI handshake */
621 reg |= MXC_CCM_PMCR1_PLLRDIS | MXC_CCM_PMCR1_EMIRQ_EN; 621 reg |= MXC_CCM_PMCR1_PLLRDIS | MXC_CCM_PMCR1_EMIRQ_EN;
diff --git a/arch/arm/mach-mx3/cpu.c b/arch/arm/mach-mx3/cpu.c
index d00a75457812..d1d339576fdf 100644
--- a/arch/arm/mach-mx3/cpu.c
+++ b/arch/arm/mach-mx3/cpu.c
@@ -25,15 +25,15 @@ struct mx3_cpu_type {
25}; 25};
26 26
27static struct mx3_cpu_type mx31_cpu_type[] __initdata = { 27static struct mx3_cpu_type mx31_cpu_type[] __initdata = {
28 { .srev = 0x00, .name = "i.MX31(L)", .v = "1.0", .rev = MX3x_CHIP_REV_1_0 }, 28 { .srev = 0x00, .name = "i.MX31(L)", .v = "1.0", .rev = IMX_CHIP_REVISION_1_0 },
29 { .srev = 0x10, .name = "i.MX31", .v = "1.1", .rev = MX3x_CHIP_REV_1_1 }, 29 { .srev = 0x10, .name = "i.MX31", .v = "1.1", .rev = IMX_CHIP_REVISION_1_1 },
30 { .srev = 0x11, .name = "i.MX31L", .v = "1.1", .rev = MX3x_CHIP_REV_1_1 }, 30 { .srev = 0x11, .name = "i.MX31L", .v = "1.1", .rev = IMX_CHIP_REVISION_1_1 },
31 { .srev = 0x12, .name = "i.MX31", .v = "1.15", .rev = MX3x_CHIP_REV_1_1 }, 31 { .srev = 0x12, .name = "i.MX31", .v = "1.15", .rev = IMX_CHIP_REVISION_1_1 },
32 { .srev = 0x13, .name = "i.MX31L", .v = "1.15", .rev = MX3x_CHIP_REV_1_1 }, 32 { .srev = 0x13, .name = "i.MX31L", .v = "1.15", .rev = IMX_CHIP_REVISION_1_1 },
33 { .srev = 0x14, .name = "i.MX31", .v = "1.2", .rev = MX3x_CHIP_REV_1_2 }, 33 { .srev = 0x14, .name = "i.MX31", .v = "1.2", .rev = IMX_CHIP_REVISION_1_2 },
34 { .srev = 0x15, .name = "i.MX31L", .v = "1.2", .rev = MX3x_CHIP_REV_1_2 }, 34 { .srev = 0x15, .name = "i.MX31L", .v = "1.2", .rev = IMX_CHIP_REVISION_1_2 },
35 { .srev = 0x28, .name = "i.MX31", .v = "2.0", .rev = MX3x_CHIP_REV_2_0 }, 35 { .srev = 0x28, .name = "i.MX31", .v = "2.0", .rev = IMX_CHIP_REVISION_2_0 },
36 { .srev = 0x29, .name = "i.MX31L", .v = "2.0", .rev = MX3x_CHIP_REV_2_0 }, 36 { .srev = 0x29, .name = "i.MX31L", .v = "2.0", .rev = IMX_CHIP_REVISION_2_0 },
37}; 37};
38 38
39void __init mx31_read_cpu_rev(void) 39void __init mx31_read_cpu_rev(void)
@@ -53,6 +53,8 @@ void __init mx31_read_cpu_rev(void)
53 return; 53 return;
54 } 54 }
55 55
56 mx31_cpu_rev = IMX_CHIP_REVISION_UNKNOWN;
57
56 printk(KERN_WARNING "Unknown CPU identifier. srev = %02x\n", srev); 58 printk(KERN_WARNING "Unknown CPU identifier. srev = %02x\n", srev);
57} 59}
58 60
@@ -62,22 +64,25 @@ EXPORT_SYMBOL(mx35_cpu_rev);
62void __init mx35_read_cpu_rev(void) 64void __init mx35_read_cpu_rev(void)
63{ 65{
64 u32 rev; 66 u32 rev;
65 char *srev = "unknown"; 67 char *srev;
66 68
67 rev = __raw_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV)); 69 rev = __raw_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV));
68 switch (rev) { 70 switch (rev) {
69 case 0x00: 71 case 0x00:
70 mx35_cpu_rev = MX3x_CHIP_REV_1_0; 72 mx35_cpu_rev = IMX_CHIP_REVISION_1_0;
71 srev = "1.0"; 73 srev = "1.0";
72 break; 74 break;
73 case 0x10: 75 case 0x10:
74 mx35_cpu_rev = MX3x_CHIP_REV_2_0; 76 mx35_cpu_rev = IMX_CHIP_REVISION_2_0;
75 srev = "2.0"; 77 srev = "2.0";
76 break; 78 break;
77 case 0x11: 79 case 0x11:
78 mx35_cpu_rev = MX3x_CHIP_REV_2_1; 80 mx35_cpu_rev = IMX_CHIP_REVISION_2_1;
79 srev = "2.1"; 81 srev = "2.1";
80 break; 82 break;
83 default:
84 mx35_cpu_rev = IMX_CHIP_REVISION_UNKNOWN;
85 srev = "unknown";
81 } 86 }
82 87
83 printk(KERN_INFO "CPU identified as i.MX35, silicon rev %s\n", srev); 88 printk(KERN_INFO "CPU identified as i.MX35, silicon rev %s\n", srev);