static int set_ethaddr_from_at24mac(void) { const int ETH_ADDR_LEN = 6; unsigned char ethaddr[ETH_ADDR_LEN]; const char *ETHADDR_NAME = "ethaddr"; struct udevice *bus, *dev; if (getenv(ETHADDR_NAME)) return 0; if (uclass_get_device_by_seq(UCLASS_I2C, AT24MAC_ON_I2C_BUS, &bus)) { printf("Cannot find I2C bus\n"); return -1; } if (dm_i2c_probe(bus, AT24MAC_ADDR, 0, &dev)) { printf("Failed to probe I2C device chip\n"); return -1; } if (dm_i2c_read(dev, AT24MAC_REG, ethaddr, ETH_ADDR_LEN)) { printf("Failed to read ethernet address from AT24MAC\n"); return -1; } if (!is_valid_ethaddr(ethaddr)) { printf("The ethernet address read from AT24MAC is not valid\n"); return -1; } return eth_setenv_enetaddr(ETHADDR_NAME, ethaddr); }
bool dm_i2c_simple_probe(struct udevice *bus, uint chip_addr) { struct udevice *dev; return !dm_i2c_probe(bus, chip_addr, DM_I2C_CHIP_RD_ADDRESS | DM_I2C_CHIP_WR_ADDRESS, &dev); }
static int k2g_alt_board_detect(void) { #ifndef CONFIG_DM_I2C int rc; rc = i2c_set_bus_num(1); if (rc) return rc; rc = i2c_probe(K2G_GP_AUDIO_CODEC_ADDRESS); if (rc) return rc; #else struct udevice *bus, *dev; int rc; rc = uclass_get_device_by_seq(UCLASS_I2C, 1, &bus); if (rc) return rc; rc = dm_i2c_probe(bus, K2G_GP_AUDIO_CODEC_ADDRESS, 0, &dev); if (rc) return rc; #endif ti_i2c_eeprom_am_set("66AK2GGP", "1.0X"); return 0; }
int i2c_probe(uint8_t chip_addr) { struct udevice *bus, *dev; int ret; ret = uclass_get_device_by_seq(UCLASS_I2C, cur_busnum, &bus); if (ret) { debug("Cannot find I2C bus %d: err=%d\n", cur_busnum, ret); return ret; } if (!bus) return -ENOENT; return dm_i2c_probe(bus, chip_addr, 0, &dev); }