diff options
author | Ajay Kumar Gupta <ajay.gupta@ti.com> | 2010-06-10 11:20:49 +0530 |
---|---|---|
committer | Remy Bohmer <linux@bohmer.net> | 2010-06-30 21:37:37 +0200 |
commit | b5abf644aa6d1d11023df449a251d0f296c45b89 (patch) | |
tree | 1609c4b698901844fecbcea5b2048e099a6cb28e /board/ti/evm | |
parent | 9bb47abf0d88e2dd151b36b39bf64c6593f417c8 (diff) | |
download | u-boot-imx-b5abf644aa6d1d11023df449a251d0f296c45b89.zip u-boot-imx-b5abf644aa6d1d11023df449a251d0f296c45b89.tar.gz u-boot-imx-b5abf644aa6d1d11023df449a251d0f296c45b89.tar.bz2 |
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
CC: Remy Bohmer <linux@bohmer.net>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Sanjeev Premi <premi@ti.com>
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Acked-by: Sandeep Paulraj <s-paulraj@ti.com>
Diffstat (limited to 'board/ti/evm')
-rw-r--r-- | board/ti/evm/evm.c | 30 | ||||
-rw-r--r-- | board/ti/evm/evm.h | 14 |
2 files changed, 44 insertions, 0 deletions
diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index 0718a08..fcc1803 100644 --- a/board/ti/evm/evm.c +++ b/board/ti/evm/evm.c @@ -37,6 +37,33 @@ #include <asm/mach-types.h> #include "evm.h" +static u8 omap3_evm_version; + +u8 get_omap3_evm_rev(void) +{ + return omap3_evm_version; +} + +static void omap3_evm_get_revision(void) +{ + unsigned int smsc_id; + + /* Ethernet PHY ID is stored at ID_REV register */ + smsc_id = readl(CONFIG_SMC911X_BASE + 0x50) & 0xFFFF0000; + printf("Read back SMSC id 0x%x\n", smsc_id); + + switch (smsc_id) { + /* SMSC9115 chipset */ + case 0x01150000: + omap3_evm_version = OMAP3EVM_BOARD_GEN_1; + break; + /* SMSC 9220 chipset */ + case 0x92200000: + default: + omap3_evm_version = OMAP3EVM_BOARD_GEN_2; + } +} + /* * Routine: board_init * Description: Early hardware init. @@ -121,6 +148,9 @@ static void setup_net_chip(void) writel(GPIO0, &gpio3_base->cleardataout); udelay(1); writel(GPIO0, &gpio3_base->setdataout); + + /* determine omap3evm revision */ + omap3_evm_get_revision(); } int board_eth_init(bd_t *bis) diff --git a/board/ti/evm/evm.h b/board/ti/evm/evm.h index 37da29d..e2581f6 100644 --- a/board/ti/evm/evm.h +++ b/board/ti/evm/evm.h @@ -33,6 +33,20 @@ const omap3_sysinfo sysinfo = { #endif }; +/* + * OMAP35x EVM revision + * Run time detection of EVM revision is done by reading Ethernet + * PHY ID - + * GEN_1 = 0x01150000 + * GEN_2 = 0x92200000 + */ +enum { + OMAP3EVM_BOARD_GEN_1 = 0, /* EVM Rev between A - D */ + OMAP3EVM_BOARD_GEN_2, /* EVM Rev >= Rev E */ +}; + +u8 get_omap3_evm_rev(void); + static void setup_net_chip(void); /* |