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>
This commit is contained in:
committed by
Tony Lindgren
parent
50a1f7bfea
commit
db408023b8
@@ -46,9 +46,42 @@
|
|||||||
|
|
||||||
#define OMAP3EVM_ETHR_START 0x2c000000
|
#define OMAP3EVM_ETHR_START 0x2c000000
|
||||||
#define OMAP3EVM_ETHR_SIZE 1024
|
#define OMAP3EVM_ETHR_SIZE 1024
|
||||||
|
#define OMAP3EVM_ETHR_ID_REV 0x50
|
||||||
#define OMAP3EVM_ETHR_GPIO_IRQ 176
|
#define OMAP3EVM_ETHR_GPIO_IRQ 176
|
||||||
#define OMAP3EVM_SMC911X_CS 5
|
#define OMAP3EVM_SMC911X_CS 5
|
||||||
|
|
||||||
|
static u8 omap3_evm_version;
|
||||||
|
|
||||||
|
u8 get_omap3_evm_rev(void)
|
||||||
|
{
|
||||||
|
return omap3_evm_version;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(get_omap3_evm_rev);
|
||||||
|
|
||||||
|
static void __init omap3_evm_get_revision(void)
|
||||||
|
{
|
||||||
|
void __iomem *ioaddr;
|
||||||
|
unsigned int smsc_id;
|
||||||
|
|
||||||
|
/* Ethernet PHY ID is stored at ID_REV register */
|
||||||
|
ioaddr = ioremap_nocache(OMAP3EVM_ETHR_START, SZ_1K);
|
||||||
|
if (!ioaddr)
|
||||||
|
return;
|
||||||
|
smsc_id = readl(ioaddr + OMAP3EVM_ETHR_ID_REV) & 0xFFFF0000;
|
||||||
|
iounmap(ioaddr);
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static struct resource omap3evm_smc911x_resources[] = {
|
static struct resource omap3evm_smc911x_resources[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
.start = OMAP3EVM_ETHR_START,
|
.start = OMAP3EVM_ETHR_START,
|
||||||
@@ -321,6 +354,8 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
|
|||||||
|
|
||||||
static void __init omap3_evm_init(void)
|
static void __init omap3_evm_init(void)
|
||||||
{
|
{
|
||||||
|
omap3_evm_get_revision();
|
||||||
|
|
||||||
omap3_evm_i2c_init();
|
omap3_evm_i2c_init();
|
||||||
|
|
||||||
platform_add_devices(omap3_evm_devices, ARRAY_SIZE(omap3_evm_devices));
|
platform_add_devices(omap3_evm_devices, ARRAY_SIZE(omap3_evm_devices));
|
||||||
|
@@ -14,6 +14,18 @@
|
|||||||
|
|
||||||
#include <plat/gpio-switch.h>
|
#include <plat/gpio-switch.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 */
|
||||||
|
};
|
||||||
|
|
||||||
/* Different peripheral ids */
|
/* Different peripheral ids */
|
||||||
#define OMAP_TAG_CLOCK 0x4f01
|
#define OMAP_TAG_CLOCK 0x4f01
|
||||||
#define OMAP_TAG_LCD 0x4f05
|
#define OMAP_TAG_LCD 0x4f05
|
||||||
@@ -157,4 +169,10 @@ extern int omap_board_config_size;
|
|||||||
/* for TI reference platforms sharing the same debug card */
|
/* for TI reference platforms sharing the same debug card */
|
||||||
extern int debug_card_init(u32 addr, unsigned gpio);
|
extern int debug_card_init(u32 addr, unsigned gpio);
|
||||||
|
|
||||||
|
/* OMAP3EVM revision */
|
||||||
|
#if defined(CONFIG_MACH_OMAP3EVM)
|
||||||
|
u8 get_omap3_evm_rev(void);
|
||||||
|
#else
|
||||||
|
#define get_omap3_evm_rev() (-EINVAL)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user