diff options
author | Ajay Kumar Gupta <ajay.gupta@ti.com> | 2009-11-22 13:11:27 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2009-11-22 13:24:33 -0500 |
commit | db408023b85644e1bee80d4004aff1ff188032e9 (patch) | |
tree | bed99e2c03d4b137082e58b76fb0528fe75cff8a /arch/arm/mach-omap2/board-omap3evm.c | |
parent | 50a1f7bfea7ba9330f984ecb7d35aeb93d326cc3 (diff) |
omap3evm: Add board revision function
Added function to differentiate between the OMAP3EVM revisions. The
chip-id of the ethernet PHY is being used for this purpose.
Rev A to D : 0x01150000
Rev >= E : 0x92200000
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Sanjeev Premi <premi@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/board-omap3evm.c')
-rw-r--r-- | arch/arm/mach-omap2/board-omap3evm.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 1edf06adbe3c..149d45ca89a7 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -46,9 +46,42 @@ | |||
46 | 46 | ||
47 | #define OMAP3EVM_ETHR_START 0x2c000000 | 47 | #define OMAP3EVM_ETHR_START 0x2c000000 |
48 | #define OMAP3EVM_ETHR_SIZE 1024 | 48 | #define OMAP3EVM_ETHR_SIZE 1024 |
49 | #define OMAP3EVM_ETHR_ID_REV 0x50 | ||
49 | #define OMAP3EVM_ETHR_GPIO_IRQ 176 | 50 | #define OMAP3EVM_ETHR_GPIO_IRQ 176 |
50 | #define OMAP3EVM_SMC911X_CS 5 | 51 | #define OMAP3EVM_SMC911X_CS 5 |
51 | 52 | ||
53 | static u8 omap3_evm_version; | ||
54 | |||
55 | u8 get_omap3_evm_rev(void) | ||
56 | { | ||
57 | return omap3_evm_version; | ||
58 | } | ||
59 | EXPORT_SYMBOL(get_omap3_evm_rev); | ||
60 | |||
61 | static void __init omap3_evm_get_revision(void) | ||
62 | { | ||
63 | void __iomem *ioaddr; | ||
64 | unsigned int smsc_id; | ||
65 | |||
66 | /* Ethernet PHY ID is stored at ID_REV register */ | ||
67 | ioaddr = ioremap_nocache(OMAP3EVM_ETHR_START, SZ_1K); | ||
68 | if (!ioaddr) | ||
69 | return; | ||
70 | smsc_id = readl(ioaddr + OMAP3EVM_ETHR_ID_REV) & 0xFFFF0000; | ||
71 | iounmap(ioaddr); | ||
72 | |||
73 | switch (smsc_id) { | ||
74 | /*SMSC9115 chipset*/ | ||
75 | case 0x01150000: | ||
76 | omap3_evm_version = OMAP3EVM_BOARD_GEN_1; | ||
77 | break; | ||
78 | /*SMSC 9220 chipset*/ | ||
79 | case 0x92200000: | ||
80 | default: | ||
81 | omap3_evm_version = OMAP3EVM_BOARD_GEN_2; | ||
82 | } | ||
83 | } | ||
84 | |||
52 | static struct resource omap3evm_smc911x_resources[] = { | 85 | static struct resource omap3evm_smc911x_resources[] = { |
53 | [0] = { | 86 | [0] = { |
54 | .start = OMAP3EVM_ETHR_START, | 87 | .start = OMAP3EVM_ETHR_START, |
@@ -321,6 +354,8 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | |||
321 | 354 | ||
322 | static void __init omap3_evm_init(void) | 355 | static void __init omap3_evm_init(void) |
323 | { | 356 | { |
357 | omap3_evm_get_revision(); | ||
358 | |||
324 | omap3_evm_i2c_init(); | 359 | omap3_evm_i2c_init(); |
325 | 360 | ||
326 | platform_add_devices(omap3_evm_devices, ARRAY_SIZE(omap3_evm_devices)); | 361 | platform_add_devices(omap3_evm_devices, ARRAY_SIZE(omap3_evm_devices)); |