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; }
int __maybe_unused ti_i2c_eeprom_dra7_get(int bus_addr, int dev_addr) { int rc, offset = 0; struct dra7_eeprom dra7_ep; struct ti_common_eeprom *ep; ep = TI_EEPROM_DATA; #ifndef CONFIG_SPL_BUILD if (ep->header == DRA7_EEPROM_HEADER_MAGIC) return 0; /* EEPROM has already been read */ #endif /* Initialize with a known bad marker for i2c fails.. */ ep->header = TI_DEAD_EEPROM_MAGIC; ep->name[0] = 0x0; ep->version[0] = 0x0; ep->serial[0] = 0x0; ep->config[0] = 0x0; ep->emif1_size = 0; ep->emif2_size = 0; rc = ti_i2c_eeprom_get(bus_addr, dev_addr, DRA7_EEPROM_HEADER_MAGIC, sizeof(dra7_ep), (uint8_t *)&dra7_ep); if (rc) return rc; ep->header = dra7_ep.header; strlcpy(ep->name, dra7_ep.name, TI_EEPROM_HDR_NAME_LEN + 1); ti_eeprom_string_cleanup(ep->name); offset = dra7_ep.version_major - 1; /* Rev F is skipped */ if (offset >= 5) offset = offset + 1; snprintf(ep->version, TI_EEPROM_HDR_REV_LEN + 1, "%c.%d", 'A' + offset, dra7_ep.version_minor); ti_eeprom_string_cleanup(ep->version); ep->emif1_size = (u64)dra7_ep.emif1_size; ep->emif2_size = (u64)dra7_ep.emif2_size; strlcpy(ep->config, dra7_ep.config, TI_EEPROM_HDR_CONFIG_LEN + 1); ti_eeprom_string_cleanup(ep->config); return 0; }
int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr) { int rc; struct ti_am_eeprom am_ep; struct ti_common_eeprom *ep; ep = TI_EEPROM_DATA; #ifndef CONFIG_SPL_BUILD if (ep->header == TI_EEPROM_HEADER_MAGIC) return 0; /* EEPROM has already been read */ #endif /* Initialize with a known bad marker for i2c fails.. */ ep->header = TI_DEAD_EEPROM_MAGIC; ep->name[0] = 0x0; ep->version[0] = 0x0; ep->serial[0] = 0x0; ep->config[0] = 0x0; rc = ti_i2c_eeprom_get(bus_addr, dev_addr, TI_EEPROM_HEADER_MAGIC, sizeof(am_ep), (uint8_t *)&am_ep); if (rc) return rc; ep->header = am_ep.header; strlcpy(ep->name, am_ep.name, TI_EEPROM_HDR_NAME_LEN + 1); ti_eeprom_string_cleanup(ep->name); /* BeagleBone Green '1' eeprom, board_rev: 0x1a 0x00 0x00 0x00 */ if (am_ep.version[0] == 0x1a && am_ep.version[1] == 0x00 && am_ep.version[2] == 0x00 && am_ep.version[3] == 0x00) strlcpy(ep->version, "BBG1", TI_EEPROM_HDR_REV_LEN + 1); else strlcpy(ep->version, am_ep.version, TI_EEPROM_HDR_REV_LEN + 1); ti_eeprom_string_cleanup(ep->version); strlcpy(ep->serial, am_ep.serial, TI_EEPROM_HDR_SERIAL_LEN + 1); ti_eeprom_string_cleanup(ep->serial); strlcpy(ep->config, am_ep.config, TI_EEPROM_HDR_CONFIG_LEN + 1); ti_eeprom_string_cleanup(ep->config); memcpy(ep->mac_addr, am_ep.mac_addr, TI_EEPROM_HDR_NO_OF_MAC_ADDR * TI_EEPROM_HDR_ETH_ALEN); return 0; }