summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/isee/igep0046/igep0046.c128
1 files changed, 48 insertions, 80 deletions
diff --git a/board/isee/igep0046/igep0046.c b/board/isee/igep0046/igep0046.c
index cdb6174..d1997ed 100644
--- a/board/isee/igep0046/igep0046.c
+++ b/board/isee/igep0046/igep0046.c
@@ -82,10 +82,15 @@ DECLARE_GLOBAL_DATA_PTR;
#define PCB_CFG_1 IMX_GPIO_NR(3, 23)
#define PCB_CFG_2 IMX_GPIO_NR(3, 29)
#define PCB_CFG_3 IMX_GPIO_NR(6, 31)
-#define PCB_REV_A 1
-#define PCB_REV_B 2
-#define PCB_REV_C 3
-#define PCB_REV_D10 4
+
+#define PCB_REV_D01 0
+#define PCB_REV_D04 12 /* (b1100) */
+#define PCB_REV_D10 8 /* (b1000) */
+#define PCB_REV_EXU2_4 1
+#define PCB_REV_EWU1_4 9 /* (b1001) */
+
+unsigned char module_pcb_version = 0;
+static inline void pcb_version (void);
int dram_init(void)
{
@@ -135,8 +140,9 @@ iomux_v3_cfg_t const usdhc3_pads[] =
MX6_PAD_SD3_DAT4__SD3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_DAT5__SD3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_DAT6__SD3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
- MX6_PAD_SD3_DAT7__SD3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+ MX6_PAD_SD3_DAT7__SD3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
};
+
/* Ethernet MUX */
iomux_v3_cfg_t const enet_pads[] =
{
@@ -331,10 +337,11 @@ int board_mmc_init(bd_t *bis)
gpio_direction_input(USDHC1_CD_GPIO);
usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
break;
- case 1:
+ case 1:
imx_iomux_v3_setup_multiple_pads(
usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+ usdhc_cfg[1].max_bus_width = 8;
break;
default:
printf("Warning: you configured more USDHC controllers"
@@ -413,11 +420,6 @@ int board_eth_init(bd_t *bis)
return 0;
}
-int checkboard(void)
-{
- return 0;
-}
-
static int load_eeprom (void)
{
int result = -1;
@@ -463,7 +465,10 @@ int board_early_init_f(void)
}
int board_init(void)
-{
+{
+
+ pcb_version();
+
#ifdef CONFIG_BASE0040
reset_audio();
#endif
@@ -473,7 +478,6 @@ int board_init(void)
setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
mdelay(1);
#endif
-
/* load eeprom configuration */
load_eeprom();
@@ -489,80 +493,43 @@ int board_init(void)
return 0;
}
-static inline unsigned int pcb_version(void)
+static inline void pcb_version (void)
{
- unsigned int pcb_version_bit0, pcb_version_bit1,
- pcb_version_bit2, pcb_version_bit3;
-
- pcb_version_bit0 = gpio_get_value(PCB_CFG_0);
- pcb_version_bit1 = gpio_get_value(PCB_CFG_1);
- pcb_version_bit2 = gpio_get_value(PCB_CFG_2);
- pcb_version_bit3 = gpio_get_value(PCB_CFG_3);
-
- if (pcb_version_bit0 && pcb_version_bit1 \
- && pcb_version_bit2 && pcb_version_bit3)
- /* RA revision: 0b1111*/
- return PCB_REV_A;
- else if (!(pcb_version_bit0 || pcb_version_bit1 \
- || pcb_version_bit2 || pcb_version_bit3))
- /* RB revision: 0b0000*/
- return PCB_REV_B;
- else if (!(!(pcb_version_bit0) || pcb_version_bit1 \
- || pcb_version_bit2 || pcb_version_bit3))
- /* RC revision: 0b0001*/
- return PCB_REV_C;
- else if (!(pcb_version_bit0 || pcb_version_bit1 \
- || pcb_version_bit2 || !(pcb_version_bit3)))
- /* RD10 revision: 0b1000*/
- return PCB_REV_D10;
- else
- return 0;
+ module_pcb_version = 0;
+ module_pcb_version = gpio_get_value(PCB_CFG_0);
+ module_pcb_version |= gpio_get_value(PCB_CFG_1) << 1;
+ module_pcb_version |= gpio_get_value(PCB_CFG_2) << 2;
+ module_pcb_version |= gpio_get_value(PCB_CFG_3) << 3;
}
int board_late_init(void)
{
+ char str[12];
-#ifdef __notdef
- u32 crc_value = 0;
- u32 crc_save_value;
-
- if(check_eeprom() != 0){
- printf("EEPROM: not found\n");
- }else{
- /* Read configuration from eeprom */
- if(eeprom46_read_setup(0, (char*) &igep0046_eeprom_config, sizeof(struct igep_mf_setup)))
- printf("EEPROM: read fail\n");
- /* Verify crc32 */
-
- printf("EEPROM: read %d bytes \n", sizeof(struct igep_mf_setup));
- printf("---------------------------- |!| IGEP STRUCT |!| ----------------------------\n");
- printf("magic_id: 0x%x \n", igep0046_eeprom_config.magic_id);
- printf("crc32: 0x%x \n", igep0046_eeprom_config.crc32);
- printf("board_uuid: %.36s \n", igep0046_eeprom_config.board_uuid);
- printf("board_pid: %.16s \n", igep0046_eeprom_config.board_pid);
- printf("model: %.8s \n", igep0046_eeprom_config.model);
- printf("variant: %.9s \n", igep0046_eeprom_config.variant);
- printf("manf_of: %.6s \n", igep0046_eeprom_config.manf_of);
- printf("manf_timestamp: %.19s \n", igep0046_eeprom_config.manf_timestamp);
- printf("bmac0: %.17s \n", igep0046_eeprom_config.bmac0);
- printf("bmac1: %.17s \n", igep0046_eeprom_config.bmac1);
- printf("-----------------------------------------------------------------------------\n");
-
-
- crc_save_value = igep0046_eeprom_config.crc32;
- igep0046_eeprom_config.crc32 = 0;
- crc_value = crc32(0, (const unsigned char*) &igep0046_eeprom_config, sizeof(struct igep_mf_setup));
- printf("crc32 calculated: 0x%x \n", crc_value);
- if(crc_save_value != crc_value){
- printf("EEPROM: CRC32 failed. Loading default MAC\n");
- }else{
- printf("EEPROM: CRC32 OK! Loading MAC from eeprom\n");
- igep_eeprom_valid = 1;
- }
- }
-#endif
+ switch(module_pcb_version){
+ case PCB_REV_D01:
+ printf("Board: MX6-IGEP0046 Rev D01 (0x%.2x)\n", module_pcb_version);
+ break;
+ case PCB_REV_D04:
+ printf("Board: MX6-IGEP0046 Rev D04 (0x%.2x)\n", module_pcb_version);
+ break;
+ case PCB_REV_EWU1_4:
+ printf("Board: MX6-IGEP0046 Rev E (0x%.2x)\n", module_pcb_version);
+ break;
+ case PCB_REV_D10:
+ printf("Board: MX6-IGEP0046 Rev D10 (0x%.2x)\n", module_pcb_version);
+ break;
+ case PCB_REV_EXU2_4:
+ printf("Board: MX6-IGEP0046 Rev E (0x%.2x)\n", module_pcb_version);
+ break;
+ default:
+ printf("Module Version (0x%.2x)\n", module_pcb_version);
+ break;
+ }
+ sprintf(str, "%d", module_pcb_version);
+ setenv("board_rev", str);
- checkboard();
+#if 0
switch (pcb_version()) {
case PCB_REV_A:
puts("Board: MX6-IGEP0046 Rev A\n");
@@ -601,6 +568,7 @@ int board_late_init(void)
setenv("fdt_file", "");
break;
}
+#endif
return 0;
}