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