All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C
@ 2021-11-18  8:19 Stefan Roese
  2021-11-18  8:19 ` [PATCH 2/9] arm: mvebu: db-mv784mp-gp_defconfig: " Stefan Roese
                   ` (8 more replies)
  0 siblings, 9 replies; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot

Move to the DM I2C version, so that this board will not get dropped from
mainline.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 configs/theadorable_debug_defconfig | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/configs/theadorable_debug_defconfig b/configs/theadorable_debug_defconfig
index 556c91fe3ed0..cfa1bac707c9 100644
--- a/configs/theadorable_debug_defconfig
+++ b/configs/theadorable_debug_defconfig
@@ -58,10 +58,8 @@ CONFIG_SATA_MV=y
 CONFIG_BOOTCOUNT_LIMIT=y
 CONFIG_BOOTCOUNT_RAM=y
 CONFIG_FPGA_ALTERA=y
-CONFIG_SYS_I2C_LEGACY=y
-CONFIG_SPL_SYS_I2C_LEGACY=y
+CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_MVTWSI=y
-CONFIG_SYS_I2C_SLAVE=0x0
 # CONFIG_MMC is not set
 CONFIG_SF_DEFAULT_SPEED=27777777
 CONFIG_SPI_FLASH_MACRONIX=y
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 2/9] arm: mvebu: db-mv784mp-gp_defconfig: Enable DM_I2C
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
@ 2021-11-18  8:19 ` Stefan Roese
  2021-12-18 13:43   ` Stefan Roese
  2021-11-18  8:19 ` [PATCH 3/9] arm: mvebu: ds414_defconfig: " Stefan Roese
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot

Move to the DM I2C version, so that this board will not get dropped from
mainline.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 configs/db-mv784mp-gp_defconfig | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/configs/db-mv784mp-gp_defconfig b/configs/db-mv784mp-gp_defconfig
index b82b637c23d5..6a11aa0ecb8c 100644
--- a/configs/db-mv784mp-gp_defconfig
+++ b/configs/db-mv784mp-gp_defconfig
@@ -50,10 +50,8 @@ CONFIG_ENV_SPI_MAX_HZ=50000000
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_SATA_MV=y
-CONFIG_SYS_I2C_LEGACY=y
-CONFIG_SPL_SYS_I2C_LEGACY=y
+CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_MVTWSI=y
-CONFIG_SYS_I2C_SLAVE=0x0
 # CONFIG_MMC is not set
 CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 3/9] arm: mvebu: ds414_defconfig: Enable DM_I2C
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
  2021-11-18  8:19 ` [PATCH 2/9] arm: mvebu: db-mv784mp-gp_defconfig: " Stefan Roese
@ 2021-11-18  8:19 ` Stefan Roese
  2021-12-18 13:43   ` Stefan Roese
  2021-11-18  8:19 ` [PATCH 4/9] arm: mvebu: maxbcm_defconfig: " Stefan Roese
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot; +Cc: Phil Sutter

Move to the DM I2C version, so that this board will not get dropped from
mainline.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Phil Sutter <phil@nwl.cc>
---
 configs/ds414_defconfig | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/configs/ds414_defconfig b/configs/ds414_defconfig
index 4b867bcbe642..df143cdf6522 100644
--- a/configs/ds414_defconfig
+++ b/configs/ds414_defconfig
@@ -53,10 +53,8 @@ CONFIG_USE_ENV_SPI_MAX_HZ=y
 CONFIG_ENV_SPI_MAX_HZ=50000000
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SYS_I2C_LEGACY=y
-CONFIG_SPL_SYS_I2C_LEGACY=y
+CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_MVTWSI=y
-CONFIG_SYS_I2C_SLAVE=0x0
 # CONFIG_MMC is not set
 CONFIG_MTD=y
 CONFIG_SPI_FLASH_STMICRO=y
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 4/9] arm: mvebu: maxbcm_defconfig: Enable DM_I2C
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
  2021-11-18  8:19 ` [PATCH 2/9] arm: mvebu: db-mv784mp-gp_defconfig: " Stefan Roese
  2021-11-18  8:19 ` [PATCH 3/9] arm: mvebu: ds414_defconfig: " Stefan Roese
@ 2021-11-18  8:19 ` Stefan Roese
  2021-12-18 13:43   ` Stefan Roese
  2021-11-18  8:19 ` [PATCH 5/9] arm: mvebu: theadorable: Switch to using DM I2C API Stefan Roese
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot

Move to the DM I2C version, so that this board will not get dropped from
mainline.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 configs/maxbcm_defconfig | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/configs/maxbcm_defconfig b/configs/maxbcm_defconfig
index ce870c91c78a..9fa2f5134b2b 100644
--- a/configs/maxbcm_defconfig
+++ b/configs/maxbcm_defconfig
@@ -37,10 +37,8 @@ CONFIG_USE_ENV_SPI_MAX_HZ=y
 CONFIG_ENV_SPI_MAX_HZ=50000000
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SYS_I2C_LEGACY=y
-CONFIG_SPL_SYS_I2C_LEGACY=y
+CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_MVTWSI=y
-CONFIG_SYS_I2C_SLAVE=0x0
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SPANSION=y
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 5/9] arm: mvebu: theadorable: Switch to using DM I2C API
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
                   ` (2 preceding siblings ...)
  2021-11-18  8:19 ` [PATCH 4/9] arm: mvebu: maxbcm_defconfig: " Stefan Roese
@ 2021-11-18  8:19 ` Stefan Roese
  2021-12-18 13:44   ` Stefan Roese
  2021-11-18  8:19 ` [PATCH 6/9] arm: mvebu: axp/high_speed_env_lib: Switch to DM_I2C API Stefan Roese
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot

No functional change intended. This patch switches from the legacy I2C
API to the DM I2C API, so that this code can be used with DM I2C
enabled.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 board/theadorable/theadorable.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/board/theadorable/theadorable.c b/board/theadorable/theadorable.c
index bb2d51495638..6e41ca239919 100644
--- a/board/theadorable/theadorable.c
+++ b/board/theadorable/theadorable.c
@@ -298,10 +298,19 @@ int board_late_init(void)
 		bootcount_inc();
 
 		if (bootcount > PEX_SWITCH_NOT_FOUNT_LIMIT) {
-			printf("Issuing power-switch via uC!\n");
+			struct udevice *dev;
 
 			printf("Issuing power-switch via uC!\n");
-			i2c_set_bus_num(STM_I2C_BUS);
+			ret = i2c_get_chip_for_busnum(STM_I2C_BUS, STM_I2C_ADDR,
+						      1, &dev);
+			if (ret) {
+				printf("Error selecting STM on I2C bus (ret=%d)\n",
+				       ret);
+				printf("Issuing soft-reset...\n");
+				/* default handling: SOFT reset */
+				do_reset(NULL, 0, 0, NULL);
+			}
+
 			i2c_buf[0] = STM_I2C_ADDR << 1;
 			i2c_buf[1] = 0xc5;	/* cmd */
 			i2c_buf[2] = 0x01;	/* enable */
@@ -313,7 +322,7 @@ int board_late_init(void)
 			i2c_buf[6] = 0x00;
 			i2c_buf[7] = crc8(0x72, &i2c_buf[0], 7);
 
-			ret = i2c_write(STM_I2C_ADDR, 0, 0, &i2c_buf[1], 7);
+			ret = dm_i2c_write(dev, 0, &i2c_buf[1], 7);
 			if (ret) {
 				printf("I2C write error (ret=%d)\n", ret);
 				printf("Issuing soft-reset...\n");
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 6/9] arm: mvebu: axp/high_speed_env_lib: Switch to DM_I2C API
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
                   ` (3 preceding siblings ...)
  2021-11-18  8:19 ` [PATCH 5/9] arm: mvebu: theadorable: Switch to using DM I2C API Stefan Roese
@ 2021-11-18  8:19 ` Stefan Roese
  2021-12-18 13:44   ` Stefan Roese
  2021-11-18  8:19 ` [PATCH 7/9] arm: mvebu: axp: Remove unreferenced ddr3_get_eprom_fabric() function Stefan Roese
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot

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@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


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 7/9] arm: mvebu: axp: Remove unreferenced ddr3_get_eprom_fabric() function
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
                   ` (4 preceding siblings ...)
  2021-11-18  8:19 ` [PATCH 6/9] arm: mvebu: axp/high_speed_env_lib: Switch to DM_I2C API Stefan Roese
@ 2021-11-18  8:19 ` Stefan Roese
  2021-12-18 13:44   ` Stefan Roese
  2021-11-18  8:19 ` [PATCH 8/9] arm: mvebu: axp: ddr: Switch to using DM I2C API Stefan Roese
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot

This function is not referenced in mainline U-Boot. Let's remove now.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 drivers/ddr/marvell/axp/ddr3_hw_training.h |  1 -
 drivers/ddr/marvell/axp/ddr3_init.c        | 24 ----------------------
 drivers/ddr/marvell/axp/ddr3_init.h        |  1 -
 3 files changed, 26 deletions(-)

diff --git a/drivers/ddr/marvell/axp/ddr3_hw_training.h b/drivers/ddr/marvell/axp/ddr3_hw_training.h
index 30daaa9831b9..fcdef792c76a 100644
--- a/drivers/ddr/marvell/axp/ddr3_hw_training.h
+++ b/drivers/ddr/marvell/axp/ddr3_hw_training.h
@@ -373,7 +373,6 @@ int ddr3_load_dqs_patterns(MV_DRAM_INFO *dram_info);
 
 void ddr3_static_training_init(void);
 
-u8 ddr3_get_eprom_fabric(void);
 void ddr3_set_performance_params(MV_DRAM_INFO *dram_info);
 int ddr3_dram_sram_burst(u32 src, u32 dst, u32 len);
 void ddr3_save_training(MV_DRAM_INFO *dram_info);
diff --git a/drivers/ddr/marvell/axp/ddr3_init.c b/drivers/ddr/marvell/axp/ddr3_init.c
index 607f3e12c3ae..c5aa1ac18f51 100644
--- a/drivers/ddr/marvell/axp/ddr3_init.c
+++ b/drivers/ddr/marvell/axp/ddr3_init.c
@@ -943,30 +943,6 @@ int ddr3_check_config(u32 twsi_addr, MV_CONFIG_TYPE config_type)
 	return 0;
 }
 
-#if defined(DB_88F78X60_REV2)
-/*
- * Name:     ddr3_get_eprom_fabric - Get Fabric configuration from EPROM
- * Desc:
- * Args:     twsi Address
- * Notes:    Only Available for ArmadaXP DB Rev2 boards
- * Returns:  None.
- */
-u8 ddr3_get_eprom_fabric(void)
-{
-#ifdef AUTO_DETECTION_SUPPORT
-	u8 data = 0;
-	int ret;
-
-	ret = i2c_read(NEW_FABRIC_TWSI_ADDR, 1, 1, (u8 *)&data, 1);
-	if (!ret)
-		return data & 0x1F;
-#endif
-
-	return 0;
-}
-
-#endif
-
 /*
  * Name:     ddr3_cl_to_valid_cl - this return register matching CL value
  * Desc:
diff --git a/drivers/ddr/marvell/axp/ddr3_init.h b/drivers/ddr/marvell/axp/ddr3_init.h
index 569a14b7184f..9a21886ac3e7 100644
--- a/drivers/ddr/marvell/axp/ddr3_init.h
+++ b/drivers/ddr/marvell/axp/ddr3_init.h
@@ -98,7 +98,6 @@ int ddr3_hw_training(u32 target_freq, u32 ddr_width,
 
 void ddr3_print_version(void);
 void fix_pll_val(u8 target_fab);
-u8 ddr3_get_eprom_fabric(void);
 u32 ddr3_get_fab_opt(void);
 u32 ddr3_get_cpu_freq(void);
 u32 ddr3_get_vco_freq(void);
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 8/9] arm: mvebu: axp: ddr: Switch to using DM I2C API
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
                   ` (5 preceding siblings ...)
  2021-11-18  8:19 ` [PATCH 7/9] arm: mvebu: axp: Remove unreferenced ddr3_get_eprom_fabric() function Stefan Roese
@ 2021-11-18  8:19 ` Stefan Roese
  2021-12-18 13:44   ` Stefan Roese
  2021-11-18  8:19 ` [PATCH 9/9] arm: mvebu: armada-xp-theadorable.dts: Add I2C DT nodes Stefan Roese
  2021-12-18 13:43 ` [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
  8 siblings, 1 reply; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot

No functional change intended. This patch switches from the legacy I2C
API to the DM I2C API, so that this code can be used with DM I2C
enabled.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 drivers/ddr/marvell/axp/ddr3_init.c | 16 +++++++++++-----
 drivers/ddr/marvell/axp/ddr3_init.h |  2 +-
 drivers/ddr/marvell/axp/ddr3_spd.c  | 16 ++++++++++++++--
 3 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/drivers/ddr/marvell/axp/ddr3_init.c b/drivers/ddr/marvell/axp/ddr3_init.c
index c5aa1ac18f51..a9dcb74cecb7 100644
--- a/drivers/ddr/marvell/axp/ddr3_init.c
+++ b/drivers/ddr/marvell/axp/ddr3_init.c
@@ -361,12 +361,18 @@ static u32 ddr3_init_main(void)
 	__maybe_unused u32 ddr_width = BUS_WIDTH;
 	__maybe_unused int status;
 	__maybe_unused u32 win_backup[16];
+	__maybe_unused struct udevice *udev;
+	__maybe_unused int ret;
 
 	/* SoC/Board special Initializtions */
 	fab_opt = ddr3_get_fab_opt();
 
 #ifdef CONFIG_SPD_EEPROM
-	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+	ret = i2c_get_chip_for_busnum(0, BUS_WIDTH_ECC_TWSI_ADDR, 1, &udev);
+	if (ret) {
+		printf("Cannot find SPD EEPROM\n");
+		return MV_DDR3_TRAINING_ERR_BAD_DIMM_SETUP;
+	}
 #endif
 
 	ddr3_print_version();
@@ -438,7 +444,7 @@ static u32 ddr3_init_main(void)
 
 #if defined(ECC_SUPPORT) && defined(AUTO_DETECTION_SUPPORT)
 	ecc = 0;
-	if (ddr3_check_config(BUS_WIDTH_ECC_TWSI_ADDR, CONFIG_ECC))
+	if (ddr3_check_config(udev, CONFIG_ECC))
 		ecc = 1;
 #endif
 
@@ -483,7 +489,7 @@ static u32 ddr3_init_main(void)
 	 * Dynamically Set 32Bit and ECC for AXP (Relevant only for
 	 * Marvell DB boards)
 	 */
-	if (ddr3_check_config(BUS_WIDTH_ECC_TWSI_ADDR, CONFIG_BUS_WIDTH)) {
+	if (ddr3_check_config(udev, CONFIG_BUS_WIDTH)) {
 		ddr_width = 32;
 		DEBUG_INIT_S("DDR3 Training Sequence - DRAM bus width 32Bit\n");
 	}
@@ -904,7 +910,7 @@ void ddr3_static_mc_init(void)
  * Notes:    Only Available for ArmadaXP/Armada 370 DB boards
  * Returns:  None.
  */
-int ddr3_check_config(u32 twsi_addr, MV_CONFIG_TYPE config_type)
+int ddr3_check_config(struct udevice *udev, MV_CONFIG_TYPE config_type)
 {
 #ifdef AUTO_DETECTION_SUPPORT
 	u8 data = 0;
@@ -916,7 +922,7 @@ int ddr3_check_config(u32 twsi_addr, MV_CONFIG_TYPE config_type)
 	else
 		offset = 0;
 
-	ret = i2c_read(twsi_addr, offset, 1, (u8 *)&data, 1);
+	ret = dm_i2c_read(udev, offset, &data, 1);
 	if (!ret) {
 		switch (config_type) {
 		case CONFIG_ECC:
diff --git a/drivers/ddr/marvell/axp/ddr3_init.h b/drivers/ddr/marvell/axp/ddr3_init.h
index 9a21886ac3e7..a26bd2a120e9 100644
--- a/drivers/ddr/marvell/axp/ddr3_init.h
+++ b/drivers/ddr/marvell/axp/ddr3_init.h
@@ -101,7 +101,7 @@ void fix_pll_val(u8 target_fab);
 u32 ddr3_get_fab_opt(void);
 u32 ddr3_get_cpu_freq(void);
 u32 ddr3_get_vco_freq(void);
-int ddr3_check_config(u32 addr, MV_CONFIG_TYPE config_type);
+int ddr3_check_config(struct udevice *udev, MV_CONFIG_TYPE config_type);
 u32 ddr3_get_static_mc_value(u32 reg_addr, u32 offset1, u32 mask1, u32 offset2,
 			     u32 mask2);
 u32 ddr3_cl_to_valid_cl(u32 cl);
diff --git a/drivers/ddr/marvell/axp/ddr3_spd.c b/drivers/ddr/marvell/axp/ddr3_spd.c
index dd772e63ab19..4763403c1278 100644
--- a/drivers/ddr/marvell/axp/ddr3_spd.c
+++ b/drivers/ddr/marvell/axp/ddr3_spd.c
@@ -209,13 +209,19 @@ static u32 ddr3_get_dimm_num(u32 *dimm_addr)
 	/* Read the dimm eeprom */
 	for (dimm_cur_addr = MAX_DIMM_ADDR; dimm_cur_addr > MIN_DIMM_ADDR;
 	     dimm_cur_addr--) {
+		struct udevice *udev;
+
 		data[SPD_DEV_TYPE_BYTE] = 0;
 
 		/* Far-End DIMM must be connected */
 		if ((dimm_num == 0) && (dimm_cur_addr < FAR_END_DIMM_ADDR))
 			return 0;
 
-		ret = i2c_read(dimm_cur_addr, 0, 1, (uchar *)data, 3);
+		ret = i2c_get_chip_for_busnum(0, dimm_cur_addr, 1, &udev);
+		if (ret)
+			continue;
+
+		ret = dm_i2c_read(udev, 0, data, 3);
 		if (!ret) {
 			if (data[SPD_DEV_TYPE_BYTE] == SPD_MEM_TYPE_DDR3) {
 				dimm_addr[dimm_num] = dimm_cur_addr;
@@ -245,9 +251,15 @@ int ddr3_spd_init(MV_DIMM_INFO *info, u32 dimm_addr, u32 dimm_width)
 	__maybe_unused u8 vendor_high, vendor_low;
 
 	if (dimm_addr != 0) {
+		struct udevice *udev;
+
 		memset(spd_data, 0, SPD_SIZE * sizeof(u8));
 
-		ret = i2c_read(dimm_addr, 0, 1, (uchar *)spd_data, SPD_SIZE);
+		ret = i2c_get_chip_for_busnum(0, dimm_addr, 1, &udev);
+		if (ret)
+			return MV_DDR3_TRAINING_ERR_TWSI_FAIL;
+
+		ret = dm_i2c_read(udev, 0, spd_data, SPD_SIZE);
 		if (ret)
 			return MV_DDR3_TRAINING_ERR_TWSI_FAIL;
 	}
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 9/9] arm: mvebu: armada-xp-theadorable.dts: Add I2C DT nodes
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
                   ` (6 preceding siblings ...)
  2021-11-18  8:19 ` [PATCH 8/9] arm: mvebu: axp: ddr: Switch to using DM I2C API Stefan Roese
@ 2021-11-18  8:19 ` Stefan Roese
  2021-12-18 13:45   ` Stefan Roese
  2021-12-18 13:43 ` [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
  8 siblings, 1 reply; 18+ messages in thread
From: Stefan Roese @ 2021-11-18  8:19 UTC (permalink / raw)
  To: u-boot

Now with DM I2C support enabled we need to describe the I2C busses and
devices in the DT.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 arch/arm/dts/armada-xp-theadorable.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/dts/armada-xp-theadorable.dts b/arch/arm/dts/armada-xp-theadorable.dts
index 6a1df870ab56..24cc1cc5278e 100644
--- a/arch/arm/dts/armada-xp-theadorable.dts
+++ b/arch/arm/dts/armada-xp-theadorable.dts
@@ -71,6 +71,8 @@
 		spi0 = &spi0;
 		spi1 = &spi1;
 		ethernet0 = &eth0;
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
 	};
 
 	memory {
@@ -156,6 +158,16 @@
 	};
 };
 
+&i2c0 {
+	status = "okay";
+	clock-frequency = <100000>;
+};
+
+&i2c1 {
+	status = "okay";
+	clock-frequency = <100000>;
+};
+
 &spi0 {
 	status = "okay";
 	u-boot,dm-pre-reloc;
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C
  2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
                   ` (7 preceding siblings ...)
  2021-11-18  8:19 ` [PATCH 9/9] arm: mvebu: armada-xp-theadorable.dts: Add I2C DT nodes Stefan Roese
@ 2021-12-18 13:43 ` Stefan Roese
  8 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:43 UTC (permalink / raw)
  To: u-boot

On 11/18/21 09:19, Stefan Roese wrote:
> Move to the DM I2C version, so that this board will not get dropped from
> mainline.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   configs/theadorable_debug_defconfig | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/configs/theadorable_debug_defconfig b/configs/theadorable_debug_defconfig
> index 556c91fe3ed0..cfa1bac707c9 100644
> --- a/configs/theadorable_debug_defconfig
> +++ b/configs/theadorable_debug_defconfig
> @@ -58,10 +58,8 @@ CONFIG_SATA_MV=y
>   CONFIG_BOOTCOUNT_LIMIT=y
>   CONFIG_BOOTCOUNT_RAM=y
>   CONFIG_FPGA_ALTERA=y
> -CONFIG_SYS_I2C_LEGACY=y
> -CONFIG_SPL_SYS_I2C_LEGACY=y
> +CONFIG_DM_I2C=y
>   CONFIG_SYS_I2C_MVTWSI=y
> -CONFIG_SYS_I2C_SLAVE=0x0
>   # CONFIG_MMC is not set
>   CONFIG_SF_DEFAULT_SPEED=27777777
>   CONFIG_SPI_FLASH_MACRONIX=y
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/9] arm: mvebu: db-mv784mp-gp_defconfig: Enable DM_I2C
  2021-11-18  8:19 ` [PATCH 2/9] arm: mvebu: db-mv784mp-gp_defconfig: " Stefan Roese
@ 2021-12-18 13:43   ` Stefan Roese
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:43 UTC (permalink / raw)
  To: u-boot

On 11/18/21 09:19, Stefan Roese wrote:
> Move to the DM I2C version, so that this board will not get dropped from
> mainline.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   configs/db-mv784mp-gp_defconfig | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/configs/db-mv784mp-gp_defconfig b/configs/db-mv784mp-gp_defconfig
> index b82b637c23d5..6a11aa0ecb8c 100644
> --- a/configs/db-mv784mp-gp_defconfig
> +++ b/configs/db-mv784mp-gp_defconfig
> @@ -50,10 +50,8 @@ CONFIG_ENV_SPI_MAX_HZ=50000000
>   CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>   CONFIG_SPL_OF_TRANSLATE=y
>   CONFIG_SATA_MV=y
> -CONFIG_SYS_I2C_LEGACY=y
> -CONFIG_SPL_SYS_I2C_LEGACY=y
> +CONFIG_DM_I2C=y
>   CONFIG_SYS_I2C_MVTWSI=y
> -CONFIG_SYS_I2C_SLAVE=0x0
>   # CONFIG_MMC is not set
>   CONFIG_MTD=y
>   CONFIG_MTD_RAW_NAND=y
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 3/9] arm: mvebu: ds414_defconfig: Enable DM_I2C
  2021-11-18  8:19 ` [PATCH 3/9] arm: mvebu: ds414_defconfig: " Stefan Roese
@ 2021-12-18 13:43   ` Stefan Roese
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:43 UTC (permalink / raw)
  To: u-boot; +Cc: Phil Sutter

On 11/18/21 09:19, Stefan Roese wrote:
> Move to the DM I2C version, so that this board will not get dropped from
> mainline.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Phil Sutter <phil@nwl.cc>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   configs/ds414_defconfig | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/configs/ds414_defconfig b/configs/ds414_defconfig
> index 4b867bcbe642..df143cdf6522 100644
> --- a/configs/ds414_defconfig
> +++ b/configs/ds414_defconfig
> @@ -53,10 +53,8 @@ CONFIG_USE_ENV_SPI_MAX_HZ=y
>   CONFIG_ENV_SPI_MAX_HZ=50000000
>   CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>   CONFIG_SPL_OF_TRANSLATE=y
> -CONFIG_SYS_I2C_LEGACY=y
> -CONFIG_SPL_SYS_I2C_LEGACY=y
> +CONFIG_DM_I2C=y
>   CONFIG_SYS_I2C_MVTWSI=y
> -CONFIG_SYS_I2C_SLAVE=0x0
>   # CONFIG_MMC is not set
>   CONFIG_MTD=y
>   CONFIG_SPI_FLASH_STMICRO=y
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 4/9] arm: mvebu: maxbcm_defconfig: Enable DM_I2C
  2021-11-18  8:19 ` [PATCH 4/9] arm: mvebu: maxbcm_defconfig: " Stefan Roese
@ 2021-12-18 13:43   ` Stefan Roese
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:43 UTC (permalink / raw)
  To: u-boot

On 11/18/21 09:19, Stefan Roese wrote:
> Move to the DM I2C version, so that this board will not get dropped from
> mainline.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   configs/maxbcm_defconfig | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/configs/maxbcm_defconfig b/configs/maxbcm_defconfig
> index ce870c91c78a..9fa2f5134b2b 100644
> --- a/configs/maxbcm_defconfig
> +++ b/configs/maxbcm_defconfig
> @@ -37,10 +37,8 @@ CONFIG_USE_ENV_SPI_MAX_HZ=y
>   CONFIG_ENV_SPI_MAX_HZ=50000000
>   CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>   CONFIG_SPL_OF_TRANSLATE=y
> -CONFIG_SYS_I2C_LEGACY=y
> -CONFIG_SPL_SYS_I2C_LEGACY=y
> +CONFIG_DM_I2C=y
>   CONFIG_SYS_I2C_MVTWSI=y
> -CONFIG_SYS_I2C_SLAVE=0x0
>   # CONFIG_MMC is not set
>   CONFIG_SPI_FLASH_MACRONIX=y
>   CONFIG_SPI_FLASH_SPANSION=y
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 5/9] arm: mvebu: theadorable: Switch to using DM I2C API
  2021-11-18  8:19 ` [PATCH 5/9] arm: mvebu: theadorable: Switch to using DM I2C API Stefan Roese
@ 2021-12-18 13:44   ` Stefan Roese
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:44 UTC (permalink / raw)
  To: u-boot

On 11/18/21 09:19, Stefan Roese wrote:
> No functional change intended. This patch switches from the legacy I2C
> API to the DM I2C API, so that this code can be used with DM I2C
> enabled.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   board/theadorable/theadorable.c | 15 ++++++++++++---
>   1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/board/theadorable/theadorable.c b/board/theadorable/theadorable.c
> index bb2d51495638..6e41ca239919 100644
> --- a/board/theadorable/theadorable.c
> +++ b/board/theadorable/theadorable.c
> @@ -298,10 +298,19 @@ int board_late_init(void)
>   		bootcount_inc();
>   
>   		if (bootcount > PEX_SWITCH_NOT_FOUNT_LIMIT) {
> -			printf("Issuing power-switch via uC!\n");
> +			struct udevice *dev;
>   
>   			printf("Issuing power-switch via uC!\n");
> -			i2c_set_bus_num(STM_I2C_BUS);
> +			ret = i2c_get_chip_for_busnum(STM_I2C_BUS, STM_I2C_ADDR,
> +						      1, &dev);
> +			if (ret) {
> +				printf("Error selecting STM on I2C bus (ret=%d)\n",
> +				       ret);
> +				printf("Issuing soft-reset...\n");
> +				/* default handling: SOFT reset */
> +				do_reset(NULL, 0, 0, NULL);
> +			}
> +
>   			i2c_buf[0] = STM_I2C_ADDR << 1;
>   			i2c_buf[1] = 0xc5;	/* cmd */
>   			i2c_buf[2] = 0x01;	/* enable */
> @@ -313,7 +322,7 @@ int board_late_init(void)
>   			i2c_buf[6] = 0x00;
>   			i2c_buf[7] = crc8(0x72, &i2c_buf[0], 7);
>   
> -			ret = i2c_write(STM_I2C_ADDR, 0, 0, &i2c_buf[1], 7);
> +			ret = dm_i2c_write(dev, 0, &i2c_buf[1], 7);
>   			if (ret) {
>   				printf("I2C write error (ret=%d)\n", ret);
>   				printf("Issuing soft-reset...\n");
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 6/9] arm: mvebu: axp/high_speed_env_lib: Switch to DM_I2C API
  2021-11-18  8:19 ` [PATCH 6/9] arm: mvebu: axp/high_speed_env_lib: Switch to DM_I2C API Stefan Roese
@ 2021-12-18 13:44   ` Stefan Roese
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:44 UTC (permalink / raw)
  To: u-boot

On 11/18/21 09:19, Stefan Roese wrote:
> 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@denx.de>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   .../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;
>   
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 7/9] arm: mvebu: axp: Remove unreferenced ddr3_get_eprom_fabric() function
  2021-11-18  8:19 ` [PATCH 7/9] arm: mvebu: axp: Remove unreferenced ddr3_get_eprom_fabric() function Stefan Roese
@ 2021-12-18 13:44   ` Stefan Roese
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:44 UTC (permalink / raw)
  To: u-boot

On 11/18/21 09:19, Stefan Roese wrote:
> This function is not referenced in mainline U-Boot. Let's remove now.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   drivers/ddr/marvell/axp/ddr3_hw_training.h |  1 -
>   drivers/ddr/marvell/axp/ddr3_init.c        | 24 ----------------------
>   drivers/ddr/marvell/axp/ddr3_init.h        |  1 -
>   3 files changed, 26 deletions(-)
> 
> diff --git a/drivers/ddr/marvell/axp/ddr3_hw_training.h b/drivers/ddr/marvell/axp/ddr3_hw_training.h
> index 30daaa9831b9..fcdef792c76a 100644
> --- a/drivers/ddr/marvell/axp/ddr3_hw_training.h
> +++ b/drivers/ddr/marvell/axp/ddr3_hw_training.h
> @@ -373,7 +373,6 @@ int ddr3_load_dqs_patterns(MV_DRAM_INFO *dram_info);
>   
>   void ddr3_static_training_init(void);
>   
> -u8 ddr3_get_eprom_fabric(void);
>   void ddr3_set_performance_params(MV_DRAM_INFO *dram_info);
>   int ddr3_dram_sram_burst(u32 src, u32 dst, u32 len);
>   void ddr3_save_training(MV_DRAM_INFO *dram_info);
> diff --git a/drivers/ddr/marvell/axp/ddr3_init.c b/drivers/ddr/marvell/axp/ddr3_init.c
> index 607f3e12c3ae..c5aa1ac18f51 100644
> --- a/drivers/ddr/marvell/axp/ddr3_init.c
> +++ b/drivers/ddr/marvell/axp/ddr3_init.c
> @@ -943,30 +943,6 @@ int ddr3_check_config(u32 twsi_addr, MV_CONFIG_TYPE config_type)
>   	return 0;
>   }
>   
> -#if defined(DB_88F78X60_REV2)
> -/*
> - * Name:     ddr3_get_eprom_fabric - Get Fabric configuration from EPROM
> - * Desc:
> - * Args:     twsi Address
> - * Notes:    Only Available for ArmadaXP DB Rev2 boards
> - * Returns:  None.
> - */
> -u8 ddr3_get_eprom_fabric(void)
> -{
> -#ifdef AUTO_DETECTION_SUPPORT
> -	u8 data = 0;
> -	int ret;
> -
> -	ret = i2c_read(NEW_FABRIC_TWSI_ADDR, 1, 1, (u8 *)&data, 1);
> -	if (!ret)
> -		return data & 0x1F;
> -#endif
> -
> -	return 0;
> -}
> -
> -#endif
> -
>   /*
>    * Name:     ddr3_cl_to_valid_cl - this return register matching CL value
>    * Desc:
> diff --git a/drivers/ddr/marvell/axp/ddr3_init.h b/drivers/ddr/marvell/axp/ddr3_init.h
> index 569a14b7184f..9a21886ac3e7 100644
> --- a/drivers/ddr/marvell/axp/ddr3_init.h
> +++ b/drivers/ddr/marvell/axp/ddr3_init.h
> @@ -98,7 +98,6 @@ int ddr3_hw_training(u32 target_freq, u32 ddr_width,
>   
>   void ddr3_print_version(void);
>   void fix_pll_val(u8 target_fab);
> -u8 ddr3_get_eprom_fabric(void);
>   u32 ddr3_get_fab_opt(void);
>   u32 ddr3_get_cpu_freq(void);
>   u32 ddr3_get_vco_freq(void);
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 8/9] arm: mvebu: axp: ddr: Switch to using DM I2C API
  2021-11-18  8:19 ` [PATCH 8/9] arm: mvebu: axp: ddr: Switch to using DM I2C API Stefan Roese
@ 2021-12-18 13:44   ` Stefan Roese
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:44 UTC (permalink / raw)
  To: u-boot

On 11/18/21 09:19, Stefan Roese wrote:
> No functional change intended. This patch switches from the legacy I2C
> API to the DM I2C API, so that this code can be used with DM I2C
> enabled.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   drivers/ddr/marvell/axp/ddr3_init.c | 16 +++++++++++-----
>   drivers/ddr/marvell/axp/ddr3_init.h |  2 +-
>   drivers/ddr/marvell/axp/ddr3_spd.c  | 16 ++++++++++++++--
>   3 files changed, 26 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/ddr/marvell/axp/ddr3_init.c b/drivers/ddr/marvell/axp/ddr3_init.c
> index c5aa1ac18f51..a9dcb74cecb7 100644
> --- a/drivers/ddr/marvell/axp/ddr3_init.c
> +++ b/drivers/ddr/marvell/axp/ddr3_init.c
> @@ -361,12 +361,18 @@ static u32 ddr3_init_main(void)
>   	__maybe_unused u32 ddr_width = BUS_WIDTH;
>   	__maybe_unused int status;
>   	__maybe_unused u32 win_backup[16];
> +	__maybe_unused struct udevice *udev;
> +	__maybe_unused int ret;
>   
>   	/* SoC/Board special Initializtions */
>   	fab_opt = ddr3_get_fab_opt();
>   
>   #ifdef CONFIG_SPD_EEPROM
> -	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
> +	ret = i2c_get_chip_for_busnum(0, BUS_WIDTH_ECC_TWSI_ADDR, 1, &udev);
> +	if (ret) {
> +		printf("Cannot find SPD EEPROM\n");
> +		return MV_DDR3_TRAINING_ERR_BAD_DIMM_SETUP;
> +	}
>   #endif
>   
>   	ddr3_print_version();
> @@ -438,7 +444,7 @@ static u32 ddr3_init_main(void)
>   
>   #if defined(ECC_SUPPORT) && defined(AUTO_DETECTION_SUPPORT)
>   	ecc = 0;
> -	if (ddr3_check_config(BUS_WIDTH_ECC_TWSI_ADDR, CONFIG_ECC))
> +	if (ddr3_check_config(udev, CONFIG_ECC))
>   		ecc = 1;
>   #endif
>   
> @@ -483,7 +489,7 @@ static u32 ddr3_init_main(void)
>   	 * Dynamically Set 32Bit and ECC for AXP (Relevant only for
>   	 * Marvell DB boards)
>   	 */
> -	if (ddr3_check_config(BUS_WIDTH_ECC_TWSI_ADDR, CONFIG_BUS_WIDTH)) {
> +	if (ddr3_check_config(udev, CONFIG_BUS_WIDTH)) {
>   		ddr_width = 32;
>   		DEBUG_INIT_S("DDR3 Training Sequence - DRAM bus width 32Bit\n");
>   	}
> @@ -904,7 +910,7 @@ void ddr3_static_mc_init(void)
>    * Notes:    Only Available for ArmadaXP/Armada 370 DB boards
>    * Returns:  None.
>    */
> -int ddr3_check_config(u32 twsi_addr, MV_CONFIG_TYPE config_type)
> +int ddr3_check_config(struct udevice *udev, MV_CONFIG_TYPE config_type)
>   {
>   #ifdef AUTO_DETECTION_SUPPORT
>   	u8 data = 0;
> @@ -916,7 +922,7 @@ int ddr3_check_config(u32 twsi_addr, MV_CONFIG_TYPE config_type)
>   	else
>   		offset = 0;
>   
> -	ret = i2c_read(twsi_addr, offset, 1, (u8 *)&data, 1);
> +	ret = dm_i2c_read(udev, offset, &data, 1);
>   	if (!ret) {
>   		switch (config_type) {
>   		case CONFIG_ECC:
> diff --git a/drivers/ddr/marvell/axp/ddr3_init.h b/drivers/ddr/marvell/axp/ddr3_init.h
> index 9a21886ac3e7..a26bd2a120e9 100644
> --- a/drivers/ddr/marvell/axp/ddr3_init.h
> +++ b/drivers/ddr/marvell/axp/ddr3_init.h
> @@ -101,7 +101,7 @@ void fix_pll_val(u8 target_fab);
>   u32 ddr3_get_fab_opt(void);
>   u32 ddr3_get_cpu_freq(void);
>   u32 ddr3_get_vco_freq(void);
> -int ddr3_check_config(u32 addr, MV_CONFIG_TYPE config_type);
> +int ddr3_check_config(struct udevice *udev, MV_CONFIG_TYPE config_type);
>   u32 ddr3_get_static_mc_value(u32 reg_addr, u32 offset1, u32 mask1, u32 offset2,
>   			     u32 mask2);
>   u32 ddr3_cl_to_valid_cl(u32 cl);
> diff --git a/drivers/ddr/marvell/axp/ddr3_spd.c b/drivers/ddr/marvell/axp/ddr3_spd.c
> index dd772e63ab19..4763403c1278 100644
> --- a/drivers/ddr/marvell/axp/ddr3_spd.c
> +++ b/drivers/ddr/marvell/axp/ddr3_spd.c
> @@ -209,13 +209,19 @@ static u32 ddr3_get_dimm_num(u32 *dimm_addr)
>   	/* Read the dimm eeprom */
>   	for (dimm_cur_addr = MAX_DIMM_ADDR; dimm_cur_addr > MIN_DIMM_ADDR;
>   	     dimm_cur_addr--) {
> +		struct udevice *udev;
> +
>   		data[SPD_DEV_TYPE_BYTE] = 0;
>   
>   		/* Far-End DIMM must be connected */
>   		if ((dimm_num == 0) && (dimm_cur_addr < FAR_END_DIMM_ADDR))
>   			return 0;
>   
> -		ret = i2c_read(dimm_cur_addr, 0, 1, (uchar *)data, 3);
> +		ret = i2c_get_chip_for_busnum(0, dimm_cur_addr, 1, &udev);
> +		if (ret)
> +			continue;
> +
> +		ret = dm_i2c_read(udev, 0, data, 3);
>   		if (!ret) {
>   			if (data[SPD_DEV_TYPE_BYTE] == SPD_MEM_TYPE_DDR3) {
>   				dimm_addr[dimm_num] = dimm_cur_addr;
> @@ -245,9 +251,15 @@ int ddr3_spd_init(MV_DIMM_INFO *info, u32 dimm_addr, u32 dimm_width)
>   	__maybe_unused u8 vendor_high, vendor_low;
>   
>   	if (dimm_addr != 0) {
> +		struct udevice *udev;
> +
>   		memset(spd_data, 0, SPD_SIZE * sizeof(u8));
>   
> -		ret = i2c_read(dimm_addr, 0, 1, (uchar *)spd_data, SPD_SIZE);
> +		ret = i2c_get_chip_for_busnum(0, dimm_addr, 1, &udev);
> +		if (ret)
> +			return MV_DDR3_TRAINING_ERR_TWSI_FAIL;
> +
> +		ret = dm_i2c_read(udev, 0, spd_data, SPD_SIZE);
>   		if (ret)
>   			return MV_DDR3_TRAINING_ERR_TWSI_FAIL;
>   	}
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 9/9] arm: mvebu: armada-xp-theadorable.dts: Add I2C DT nodes
  2021-11-18  8:19 ` [PATCH 9/9] arm: mvebu: armada-xp-theadorable.dts: Add I2C DT nodes Stefan Roese
@ 2021-12-18 13:45   ` Stefan Roese
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Roese @ 2021-12-18 13:45 UTC (permalink / raw)
  To: u-boot

On 11/18/21 09:19, Stefan Roese wrote:
> Now with DM I2C support enabled we need to describe the I2C busses and
> devices in the DT.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>

Applied to u-boot-marvell/next

Thanks,
Stefan

> ---
>   arch/arm/dts/armada-xp-theadorable.dts | 12 ++++++++++++
>   1 file changed, 12 insertions(+)
> 
> diff --git a/arch/arm/dts/armada-xp-theadorable.dts b/arch/arm/dts/armada-xp-theadorable.dts
> index 6a1df870ab56..24cc1cc5278e 100644
> --- a/arch/arm/dts/armada-xp-theadorable.dts
> +++ b/arch/arm/dts/armada-xp-theadorable.dts
> @@ -71,6 +71,8 @@
>   		spi0 = &spi0;
>   		spi1 = &spi1;
>   		ethernet0 = &eth0;
> +		i2c0 = &i2c0;
> +		i2c1 = &i2c1;
>   	};
>   
>   	memory {
> @@ -156,6 +158,16 @@
>   	};
>   };
>   
> +&i2c0 {
> +	status = "okay";
> +	clock-frequency = <100000>;
> +};
> +
> +&i2c1 {
> +	status = "okay";
> +	clock-frequency = <100000>;
> +};
> +
>   &spi0 {
>   	status = "okay";
>   	u-boot,dm-pre-reloc;
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2021-12-18 13:45 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-18  8:19 [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese
2021-11-18  8:19 ` [PATCH 2/9] arm: mvebu: db-mv784mp-gp_defconfig: " Stefan Roese
2021-12-18 13:43   ` Stefan Roese
2021-11-18  8:19 ` [PATCH 3/9] arm: mvebu: ds414_defconfig: " Stefan Roese
2021-12-18 13:43   ` Stefan Roese
2021-11-18  8:19 ` [PATCH 4/9] arm: mvebu: maxbcm_defconfig: " Stefan Roese
2021-12-18 13:43   ` Stefan Roese
2021-11-18  8:19 ` [PATCH 5/9] arm: mvebu: theadorable: Switch to using DM I2C API Stefan Roese
2021-12-18 13:44   ` Stefan Roese
2021-11-18  8:19 ` [PATCH 6/9] arm: mvebu: axp/high_speed_env_lib: Switch to DM_I2C API Stefan Roese
2021-12-18 13:44   ` Stefan Roese
2021-11-18  8:19 ` [PATCH 7/9] arm: mvebu: axp: Remove unreferenced ddr3_get_eprom_fabric() function Stefan Roese
2021-12-18 13:44   ` Stefan Roese
2021-11-18  8:19 ` [PATCH 8/9] arm: mvebu: axp: ddr: Switch to using DM I2C API Stefan Roese
2021-12-18 13:44   ` Stefan Roese
2021-11-18  8:19 ` [PATCH 9/9] arm: mvebu: armada-xp-theadorable.dts: Add I2C DT nodes Stefan Roese
2021-12-18 13:45   ` Stefan Roese
2021-12-18 13:43 ` [PATCH 1/9] arm: mvebu: theadorable_debug_defconfig: Enable DM_I2C Stefan Roese

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.