提交 b5abf644 编写于 作者: A Ajay Kumar Gupta 提交者: Remy Bohmer

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: NVaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: NSanjeev Premi <premi@ti.com>
Signed-off-by: NAjay Kumar Gupta <ajay.gupta@ti.com>
Acked-by: NSandeep Paulraj <s-paulraj@ti.com>
上级 9bb47abf
......@@ -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)
......
......@@ -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);
/*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册