Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 172496
b: refs/heads/master
c: 52939c0
h: refs/heads/master
v: v3
  • Loading branch information
Daniel Mack authored and Sascha Hauer committed Nov 23, 2009
1 parent 7ae2be2 commit 027c80c
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 4 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: 2cc326833f616ee49f73be94d4bf0ab1bc9a72d9
refs/heads/master: 52939c03e53b151848da9e83fd839bddfda29e78
2 changes: 1 addition & 1 deletion trunk/arch/arm/mach-mx3/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

# Object file lists.

obj-y := mm.o devices.o
obj-y := mm.o devices.o cpu.o
obj-$(CONFIG_ARCH_MX31) += clock.o iomux.o
obj-$(CONFIG_ARCH_MX35) += clock-imx35.o
obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/arm/mach-mx3/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -616,6 +616,8 @@ int __init mx31_clocks_init(unsigned long fref)

clk_enable(&serial_pll_clk);

mx31_read_cpu_rev();

if (mx31_revision() >= CHIP_REV_2_0) {
reg = __raw_readl(MXC_CCM_PMCR1);
/* No PLL restart on DVFS switch; enable auto EMI handshake */
Expand Down
57 changes: 57 additions & 0 deletions trunk/arch/arm/mach-mx3/cpu.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* MX3 CPU type detection
*
* Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/

#include <linux/module.h>
#include <linux/io.h>
#include <mach/hardware.h>
#include <mach/iim.h>

unsigned int mx31_cpu_rev;
EXPORT_SYMBOL(mx31_cpu_rev);

struct mx3_cpu_type {
u8 srev;
const char *name;
const char *v;
unsigned int rev;
};

static struct mx3_cpu_type mx31_cpu_type[] __initdata = {
{ .srev = 0x00, .name = "i.MX31(L)", .v = "1.0", .rev = CHIP_REV_1_0 },
{ .srev = 0x10, .name = "i.MX31", .v = "1.1", .rev = CHIP_REV_1_1 },
{ .srev = 0x11, .name = "i.MX31L", .v = "1.1", .rev = CHIP_REV_1_1 },
{ .srev = 0x12, .name = "i.MX31", .v = "1.15", .rev = CHIP_REV_1_1 },
{ .srev = 0x13, .name = "i.MX31L", .v = "1.15", .rev = CHIP_REV_1_1 },
{ .srev = 0x14, .name = "i.MX31", .v = "1.2", .rev = CHIP_REV_1_2 },
{ .srev = 0x15, .name = "i.MX31L", .v = "1.2", .rev = CHIP_REV_1_2 },
{ .srev = 0x28, .name = "i.MX31", .v = "2.0", .rev = CHIP_REV_2_0 },
{ .srev = 0x29, .name = "i.MX31L", .v = "2.0", .rev = CHIP_REV_2_0 },
};

void __init mx31_read_cpu_rev(void)
{
u32 i, srev;

/* read SREV register from IIM module */
srev = __raw_readl(IO_ADDRESS(IIM_BASE_ADDR) + MXC_IIMSREV);

for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
if (srev == mx31_cpu_type[i].srev) {
printk(KERN_INFO
"CPU identified as %s, silicon rev %s\n",
mx31_cpu_type[i].name, mx31_cpu_type[i].v);

mx31_cpu_rev = mx31_cpu_type[i].rev;
return;
}

printk(KERN_WARNING "Unknown CPU identifier. srev = %02x\n", srev);
}
5 changes: 3 additions & 2 deletions trunk/arch/arm/plat-mxc/include/mach/mx3x.h
Original file line number Diff line number Diff line change
Expand Up @@ -260,11 +260,12 @@

#if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS)

extern unsigned int system_rev;
extern unsigned int mx31_cpu_rev;
extern void mx31_read_cpu_rev(void);

static inline int mx31_revision(void)
{
return system_rev;
return mx31_cpu_rev;
}
#endif

Expand Down

0 comments on commit 027c80c

Please sign in to comment.