Hi Anatolij, On Fri, 19 Jul 2024 at 22:51, Anatolij Gustschin <ag...@denx.de> wrote: > > Rework to remove use of legacy I2C API. > > Signed-off-by: Anatolij Gustschin <ag...@denx.de> > Cc: Tom Rini <tr...@konsulko.com> > --- > board/beagle/beagle/beagle.c | 41 +++++++++++++++++++++------------- > configs/omap3_beagle_defconfig | 2 +- > include/configs/omap3_beagle.h | 3 --- > 3 files changed, 26 insertions(+), 20 deletions(-) > > diff --git a/board/beagle/beagle/beagle.c b/board/beagle/beagle/beagle.c > index ac2f89cf21..ae258817e9 100644 > --- a/board/beagle/beagle/beagle.c > +++ b/board/beagle/beagle/beagle.c > @@ -41,7 +41,6 @@ > #include "beagle.h" > #include <command.h> > > -#define TWL4030_I2C_BUS 0 > #define EXPANSION_EEPROM_I2C_BUS 1 > #define EXPANSION_EEPROM_I2C_ADDRESS 0x50 > > @@ -213,27 +212,37 @@ void get_board_mem_timings(struct board_sdrc_timings > *timings) > */ > static unsigned int get_expansion_id(void) > { > - i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS); > + struct udevice *eeprom = NULL; > + int ret; > > - /* return BEAGLE_NO_EEPROM if eeprom doesn't respond */ > - if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1) { > - i2c_set_bus_num(TWL4030_I2C_BUS); > + ret = i2c_get_chip_for_busnum(EXPANSION_EEPROM_I2C_BUS, > + EXPANSION_EEPROM_I2C_ADDRESS, 1, > &eeprom); > + if (ret) > return BEAGLE_NO_EEPROM;
Isn't this in the devicetree? It should be possible to use i2c_eeprom_read(). See for example sysinfo_rcar_probe(). > - } > > /* read configuration data */ > - i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config, > - sizeof(expansion_config)); > + ret = dm_i2c_read(eeprom, 0, (uint8_t *)&expansion_config, > + sizeof(expansion_config)); > + if (ret != 0) { > + /* return BEAGLE_NO_EEPROM if eeprom doesn't respond */ > + return BEAGLE_NO_EEPROM; > + } > > - /* retry reading configuration data with 16bit addressing */ > if ((expansion_config.device_vendor == 0xFFFFFF00) || > (expansion_config.device_vendor == 0xFFFFFFFF)) { > printf("EEPROM is blank or 8bit addressing failed: retrying > with 16bit:\n"); > - i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 2, (u8 > *)&expansion_config, > - sizeof(expansion_config)); > } > > - i2c_set_bus_num(TWL4030_I2C_BUS); > + /* retry reading configuration data with 16bit addressing */ > + ret = i2c_get_chip_for_busnum(EXPANSION_EEPROM_I2C_BUS, > + EXPANSION_EEPROM_I2C_ADDRESS, 2, > &eeprom); > + if (ret) > + return BEAGLE_NO_EEPROM; > + > + ret = dm_i2c_read(eeprom, 0, (uint8_t *)&expansion_config, > + sizeof(expansion_config)); > + if (ret != 0) > + return BEAGLE_NO_EEPROM; > > return expansion_config.device_vendor; > } > @@ -281,13 +290,13 @@ static void beagle_dvi_pup(void) > #define GPIODATADIR1 (TWL4030_BASEADD_GPIO+3) > #define GPIODATAOUT1 (TWL4030_BASEADD_GPIO+6) > > - i2c_read(TWL4030_CHIP_GPIO, GPIODATADIR1, 1, &val, 1); > + twl4030_i2c_read_u8(TWL4030_CHIP_GPIO, GPIODATADIR1, &val); > val |= 4; > - i2c_write(TWL4030_CHIP_GPIO, GPIODATADIR1, 1, &val, 1); > + twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, GPIODATADIR1, val); > > - i2c_read(TWL4030_CHIP_GPIO, GPIODATAOUT1, 1, &val, 1); > + twl4030_i2c_read_u8(TWL4030_CHIP_GPIO, GPIODATAOUT1, &val); > val |= 4; > - i2c_write(TWL4030_CHIP_GPIO, GPIODATAOUT1, 1, &val, 1); > + twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, GPIODATAOUT1, val); > break; > } > } > diff --git a/configs/omap3_beagle_defconfig b/configs/omap3_beagle_defconfig > index 8a709243a9..f76709389c 100644 > --- a/configs/omap3_beagle_defconfig > +++ b/configs/omap3_beagle_defconfig > @@ -61,7 +61,7 @@ CONFIG_SPL_DM_SEQ_ALIAS=y > CONFIG_SPL_OF_TRANSLATE=y > CONFIG_USB_FUNCTION_FASTBOOT=y > CONFIG_FASTBOOT_BUF_ADDR=0x82000000 > -CONFIG_SYS_I2C_LEGACY=y > +CONFIG_DM_I2C=y > CONFIG_SPL_SYS_I2C_LEGACY=y > CONFIG_LED_STATUS=y > CONFIG_LED_STATUS0=y > diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h > index af7cb3513f..b616dd2608 100644 > --- a/include/configs/omap3_beagle.h > +++ b/include/configs/omap3_beagle.h > @@ -28,9 +28,6 @@ > /* NAND: SPL falcon mode configs */ > #endif /* CONFIG_MTD_RAW_NAND */ > > -/* Enable Multi Bus support for I2C */ > -#define CFG_I2C_MULTI_BUS > - > /* DSS Support */ > > /* TWL4030 LED Support */ > -- > 2.25.1 > Regards, Simon