static void setup_board_eeprom_env(void) { char *name = "beagle_x15"; int rc; rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS); if (rc) goto invalid_eeprom; if (board_is_x15()) { if (board_is_x15_revb1()) name = "beagle_x15_revb1"; else name = "beagle_x15"; } else if (board_is_am572x_evm()) { if (board_is_am572x_evm_reva3()) name = "am57xx_evm_reva3"; else name = "am57xx_evm"; } else if (board_is_am572x_idk()) { name = "am572x_idk"; } else if (board_is_am571x_idk()) { name = "am571x_idk"; } else { printf("Unidentified board claims %s in eeprom header\n", board_ti_get_name()); } invalid_eeprom: set_board_info_env(name); }
int __maybe_unused ti_i2c_eeprom_am_get_print(int bus_addr, int dev_addr, struct ti_am_eeprom_printable *p) { struct ti_am_eeprom *ep; int rc; /* Incase of invalid eeprom contents */ p->name[0] = 0x00; p->version[0] = 0x00; p->serial[0] = 0x00; rc = ti_i2c_eeprom_am_get(bus_addr, dev_addr, &ep); if (rc) return rc; /* * Alas! we have to null terminate and cleanup the strings! */ strlcpy(p->name, ep->name, TI_EEPROM_HDR_NAME_LEN + 1); ti_eeprom_string_cleanup(p->name); strlcpy(p->version, ep->version, TI_EEPROM_HDR_REV_LEN + 1); ti_eeprom_string_cleanup(p->version); strlcpy(p->serial, ep->serial, TI_EEPROM_HDR_SERIAL_LEN + 1); ti_eeprom_string_cleanup(p->serial); return 0; }
/* Override function to read eeprom information: actual i2c read done by SPL*/ void do_board_detect(void) { char *bname = NULL; int rc; rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS); if (rc) printf("ti_i2c_eeprom_init failed %d\n", rc); if (board_is_x15()) bname = "BeagleBoard X15"; else if (board_is_am572x_evm()) bname = "AM572x EVM"; else if (board_is_am574x_idk()) bname = "AM574x IDK"; else if (board_is_am572x_idk()) bname = "AM572x IDK"; else if (board_is_am571x_idk()) bname = "AM571x IDK"; if (bname) snprintf(sysinfo.board_string, SYSINFO_BOARD_NAME_MAX_LEN, "Board: %s REV %s\n", bname, board_ti_get_rev()); }
void do_board_detect(void) { /* Ensure I2C is initialized for EEPROM access*/ gpi2c_init(); if (ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS)) printf("ti_i2c_eeprom_init failed\n"); }
/* Override function to read eeprom information */ void do_board_detect(void) { int rc; rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS); if (rc) printf("ti_i2c_eeprom_init failed %d\n", rc); }
int embedded_dtb_select(void) { int rc; rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS); if (rc) { rc = k2g_alt_board_detect(); if (rc) { printf("Unable to do board detection\n"); return -1; } } fdtdec_setup(); k2g_mux_config(); k2g_reset_mux_config(); if (board_is_k2g_gp() || board_is_k2g_g1()) { /* deassert FLASH_HOLD */ clrbits_le32(K2G_GPIO1_BANK2_BASE + K2G_GPIO_DIR_OFFSET, BIT(9)); setbits_le32(K2G_GPIO1_BANK2_BASE + K2G_GPIO_SETDATA_OFFSET, BIT(9)); } else if (board_is_k2g_ice()) { /* GBE Phy workaround. For Phy to latch the input * configuration, a GPIO reset is asserted at the * Phy reset pin to latch configuration correctly after SoC * reset. GPIO0 Pin 10 (Ball AA20) is used for this on ICE * board. Just do a low to high transition. */ clrbits_le32(K2G_GPIO0_BANK0_BASE + K2G_GPIO_DIR_OFFSET, BIT(10)); setbits_le32(K2G_GPIO0_BANK0_BASE + K2G_GPIO_CLRDATA_OFFSET, BIT(10)); /* Delay just to get a transition to high */ udelay(100); setbits_le32(K2G_GPIO0_BANK0_BASE + K2G_GPIO_SETDATA_OFFSET, BIT(10)); } return 0; }
int board_late_init(void) { #if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_TI_I2C_BOARD_DETECT) int rc; rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS); if (rc) printf("ti_i2c_eeprom_init failed %d\n", rc); board_ti_set_ethaddr(1); #endif #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG if (board_is_k2g_gp()) env_set("board_name", "66AK2GGP\0"); else if (board_is_k2g_g1()) env_set("board_name", "66AK2GG1\0"); else if (board_is_k2g_ice()) env_set("board_name", "66AK2GIC\0"); #endif return 0; }
void do_board_detect(void) { if (ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, CONFIG_EEPROM_CHIP_ADDRESS)) printf("ti_i2c_eeprom_init failed\n"); }
void do_board_detect(void) { if (ti_i2c_eeprom_am_get(-1, CONFIG_SYS_I2C_EEPROM_ADDR)) printf("ti_i2c_eeprom_init failed\n"); }
/* * Read header information from EEPROM into global structure. */ static inline int __maybe_unused read_eeprom(void) { return ti_i2c_eeprom_am_get(-1, CONFIG_SYS_I2C_EEPROM_ADDR); }