[PATCH 6/9] arm: mvebu: axp/high_speed_env_lib: Switch to DM_I2C API

Stefan Roese sr at denx.de
Thu Nov 18 09:19:36 CET 2021


After all Armada XP boards have been switched over from legacy I2C
support to DM I2C, let's now also convert this serdes code to use
the DM I2C API.

Signed-off-by: Stefan Roese <sr at denx.de>
---
 .../mach-mvebu/serdes/axp/high_speed_env_lib.c  | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-mvebu/serdes/axp/high_speed_env_lib.c b/arch/arm/mach-mvebu/serdes/axp/high_speed_env_lib.c
index ea3b4c7d5b72..0b63664dd8be 100644
--- a/arch/arm/mach-mvebu/serdes/axp/high_speed_env_lib.c
+++ b/arch/arm/mach-mvebu/serdes/axp/high_speed_env_lib.c
@@ -77,6 +77,7 @@ static u32 board_id_get(void)
 
 __weak u8 board_sat_r_get(u8 dev_num, u8 reg)
 {
+	struct udevice *udev;
 	u8 data;
 	u8 *dev;
 	u32 board_id = board_id_get();
@@ -107,8 +108,11 @@ __weak u8 board_sat_r_get(u8 dev_num, u8 reg)
 	}
 
 	/* Read MPP module ID */
-	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-	ret = i2c_read(dev[dev_num], 0, 1, (u8 *)&data, 1);
+	ret = i2c_get_chip_for_busnum(0, dev[dev_num], 1, &udev);
+	if (ret)
+		return MV_ERROR;
+
+	ret = dm_i2c_read(udev, 0, &data, 1);
 	if (ret)
 		return MV_ERROR;
 
@@ -124,13 +128,18 @@ static int board_modules_scan(void)
 	/* Perform scan only for DB board */
 	if ((board_id == DB_88F78XX0_BP_ID) ||
 	    (board_id == DB_88F78XX0_BP_REV2_ID)) {
+		struct udevice *udev;
+
 		/* reset modules flags */
 		config_module = 0;
 
-		i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+		ret = i2c_get_chip_for_busnum(0, MV_BOARD_PEX_MODULE_ADDR,
+					      1, &udev);
+		if (ret)
+			return MV_ERROR;
 
 		/* SERDES module (only PEX model is supported now) */
-		ret = i2c_read(MV_BOARD_PEX_MODULE_ADDR, 0, 1, (u8 *)&val, 1);
+		ret = dm_i2c_read(udev, 0, &val, 1);
 		if (ret)
 			return MV_ERROR;
 
-- 
2.34.0



More information about the U-Boot mailing list