[PATCH v2] i.MX35: use the correct IIM register to get CPU revision
Eric Bénard
eric at eukrea.com
Fri Oct 8 09:00:47 EDT 2010
Hi Uwe,
Le 08/10/2010 14:31, Uwe Kleine-König a écrit :
>> diff --git a/arch/arm/mach-mx3/clock-imx35.c b/arch/arm/mach-mx3/clock-imx35.c
>> index 85884c7..f7cec59 100644
>> --- a/arch/arm/mach-mx3/clock-imx35.c
>> +++ b/arch/arm/mach-mx3/clock-imx35.c
>> @@ -535,6 +535,7 @@ int __init mx35_clocks_init()
>> __raw_writel(cgr2, CCM_BASE + CCM_CGR2);
>> __raw_writel(cgr3, CCM_BASE + CCM_CGR3);
>>
>> + clk_enable(&iim_clk);
>> mx35_read_cpu_rev();
>
> Do you let the clock running on purpose?
>
same as on i.MX31 : the iim clock is kept on.
>> mxc_timer_init(&gpt_clk,
>> diff --git a/arch/arm/mach-mx3/cpu.c b/arch/arm/mach-mx3/cpu.c
>> index db7af50..d00a754 100644
>> --- a/arch/arm/mach-mx3/cpu.c
>> +++ b/arch/arm/mach-mx3/cpu.c
>> @@ -59,31 +59,26 @@ void __init mx31_read_cpu_rev(void)
>> unsigned int mx35_cpu_rev;
>> EXPORT_SYMBOL(mx35_cpu_rev);
>>
>> -#define MX35_ROM_SI_REV 0x40
>> -
>> void __init mx35_read_cpu_rev(void)
>> {
>> - void __iomem *rom = ioremap(MX35_IROM_BASE_ADDR, MX35_IROM_SIZE);
>> u32 rev;
>> char *srev = "unknown";
>>
>> - if (!rom)
>> - return;
>> -
>> - rev = readl(rom + MX35_ROM_SI_REV);
>> + rev = __raw_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV));
>> switch (rev) {
>> - case 0x1:
>> - mx35_cpu_rev = MX35_CHIP_REV_1_0;
>> + case 0x00:
>> + mx35_cpu_rev = MX3x_CHIP_REV_1_0;
>> srev = "1.0";
>> break;
>> - case 0x2:
>> - mx35_cpu_rev = MX35_CHIP_REV_2_0;
>> + case 0x10:
>> + mx35_cpu_rev = MX3x_CHIP_REV_2_0;
>> srev = "2.0";
>> break;
>> + case 0x11:
>> + mx35_cpu_rev = MX3x_CHIP_REV_2_1;
>> + srev = "2.1";
>> + break;
> Would it make sense here to do:
>
> mx35_cpu_rev = 0x10 + rev;
>
> ?
>
we don't know how future chip will be numbered !
Eric
More information about the linux-arm-kernel
mailing list