[U-Boot] [PATCH] omap3evm: Add board revision function

Hi Vaibhav/Sanjeev,
Please review this which I plan to submit today.
It almost same as submited on lo.
Regards, Ajay
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: Sanjeev Premi premi@ti.com Signed-off-by: Ajay Kumar Gupta ajay.gupta@ti.com --- Created against denx's u-boot master branch. board/ti/evm/evm.c | 29 +++++++++++++++++++++++++++++ board/ti/evm/evm.h | 14 ++++++++++++++ 2 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index 0718a08..6eacc00 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. @@ -45,6 +72,8 @@ int board_init(void) { DECLARE_GLOBAL_DATA_PTR;
+ omap3_evm_get_revision(); + gpmc_init(); /* in SRAM or SDRAM, finish GPMC */ /* board id for Linux */ gd->bd->bi_arch_number = MACH_TYPE_OMAP3EVM; 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);
/*

Somehow the local patch got sent to the list. Apologies for it.
Please find the correct patch attached.
Regards, Ajay
-----Original Message----- From: Gupta, Ajay Kumar Sent: Friday, November 13, 2009 3:24 PM To: u-boot@lists.denx.de Cc: Gupta, Ajay Kumar; Hiremath, Vaibhav; Premi, Sanjeev Subject: [PATCH] omap3evm: Add board revision function
Hi Vaibhav/Sanjeev,
Please review this which I plan to submit today.
It almost same as submited on lo.
Regards, Ajay
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: Sanjeev Premi premi@ti.com Signed-off-by: Ajay Kumar Gupta ajay.gupta@ti.com
Created against denx's u-boot master branch. board/ti/evm/evm.c | 29 +++++++++++++++++++++++++++++ board/ti/evm/evm.h | 14 ++++++++++++++ 2 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index 0718a08..6eacc00 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.
@@ -45,6 +72,8 @@ int board_init(void) { DECLARE_GLOBAL_DATA_PTR;
- omap3_evm_get_revision();
- gpmc_init(); /* in SRAM or SDRAM, finish GPMC */ /* board id for Linux */ gd->bd->bi_arch_number = MACH_TYPE_OMAP3EVM;
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);
/*
1.6.2.4

Hi,
-----Original Message----- From: u-boot-bounces@lists.denx.de [mailto:u-boot-bounces@lists.denx.de] On Behalf Of Gupta, Ajay Kumar Sent: Friday, November 13, 2009 3:31 PM To: u-boot@lists.denx.de Cc: Hiremath, Vaibhav Subject: Re: [U-Boot] [PATCH] omap3evm: Add board revision function
<snip...>
/*
- Routine: board_init
- Description: Early hardware init.
@@ -45,6 +72,8 @@ int board_init(void) { DECLARE_GLOBAL_DATA_PTR;
- omap3_evm_get_revision();
This must be called after setup_net_chip() else ethernet id Read statement wouldn't work.
I will resubmit this patch.
Regards, ajay
gpmc_init(); /* in SRAM or SDRAM, finish GPMC */ /* board id for Linux */ gd->bd->bi_arch_number = MACH_TYPE_OMAP3EVM; 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);
/*
1.6.2.4
participants (2)
-
Ajay Kumar Gupta
-
Gupta, Ajay Kumar