[PATCH master] ARM: i.MX8M: nxp-imx8mn-evk: use regular i2c read for device detection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The barebox-nxp-imx8mn-evk image supports both DDR4 and LPDDR4 variants
by probing for the PMIC in use as the former uses a BD71847 and the
latter a PCA9450B.

The PCA9450B was observed to hang on the 0-byte (probe) reads.
This results in I/O errors during later PMIC writes and the image
would only boot on the EVKs with DDR4, which have the other PMIC.

Fix this by switching to a 1 byte read instead. Change tested on
i.MX8MN DDR4 EVK as well as another board with LPDDR4.

While at it, note the address of the PMIC in the error message, so it's
clear, what the result of the i2c probe was.

Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx>
---
 arch/arm/boards/nxp-imx8mn-evk/lowlevel.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boards/nxp-imx8mn-evk/lowlevel.c b/arch/arm/boards/nxp-imx8mn-evk/lowlevel.c
index bac632aa431b..de53213ebc77 100644
--- a/arch/arm/boards/nxp-imx8mn-evk/lowlevel.c
+++ b/arch/arm/boards/nxp-imx8mn-evk/lowlevel.c
@@ -56,7 +56,7 @@ static void pmic_reg_write(void *i2c, int addr, int reg, uint8_t val)
 
 	ret = i2c_fsl_xfer(i2c, msgs, ARRAY_SIZE(msgs));
 	if (ret != 1)
-		pr_err("Failed to write to pmic %d\n", ret);
+		pr_err("Failed to write to pmic@%x: %d\n", addr, ret);
 }
 
 static int power_init_board_pca9450(void *i2c, int addr)
@@ -66,7 +66,8 @@ static int power_init_board_pca9450(void *i2c, int addr)
 		{
 			.addr = addr,
 			.buf = buf,
-			.flags = I2C_M_RD
+			.flags = I2C_M_RD,
+			.len = 1,
 		},
 	};
 
-- 
2.30.2


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux