[PATCH] board: beagle: convert to CONFIG_DM_I2C

Simon Glass sjg at chromium.org
Sat Jul 20 14:36:04 CEST 2024


Hi Anatolij,

On Fri, 19 Jul 2024 at 22:51, Anatolij Gustschin <agust at denx.de> wrote:
>
> Rework to remove use of legacy I2C API.
>
> Signed-off-by: Anatolij Gustschin <agust at denx.de>
> Cc: Tom Rini <trini at 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


More information about the U-Boot mailing list