Dear Chuanhua Han, In message <20190726032729.14381-2-chuanhua....@nxp.com> you wrote: > > /* Set I2c to Slot 1 */ > - i2c_write(0x77, 0, 0, &a, 1); > +#ifndef CONFIG_DM_I2C > + ret = i2c_write(0x77, 0, 0, &a, 1); > +#else > + ret = i2c_get_chip_for_busnum(0, 0x77, 1, &udev); > + if (!ret) > + ret = dm_i2c_write(udev, 0, &a, 1); > +#endif
See my other comment. You should add error checking for the i2c_write(), too. > + ret = i2c_write(i2c_addr[dpmac], 6, 1, &a, 1); > + if (ret) > + goto error; > a = 0x38; > - i2c_write(i2c_addr[dpmac], 4, 1, &a, 1); > + ret = i2c_write(i2c_addr[dpmac], 4, 1, &a, 1); > + if (ret) > + goto error; > a = 0x4; > - i2c_write(i2c_addr[dpmac], 8, 1, &a, 1); > + ret = i2c_write(i2c_addr[dpmac], 8, 1, &a, 1); > + if (ret) > + goto error; > > - i2c_write(i2c_addr[dpmac], 0xf, 1, > - &ch_a_eq[i], 1); > - i2c_write(i2c_addr[dpmac], 0x11, 1, > - &ch_a_ctl2[j], 1); > + ret = i2c_write(i2c_addr[dpmac], 0xf, > + 1, &ch_a_eq[i], 1); > + if (ret) > + goto error; > + ret = i2c_write(i2c_addr[dpmac], 0x11, > + 1, &ch_a_ctl2[j], 1); > + if (ret) > + goto error; > > - i2c_write(i2c_addr[dpmac], 0x16, 1, > - &ch_b_eq[i], 1); > - i2c_write(i2c_addr[dpmac], 0x18, 1, > - &ch_b_ctl2[j], 1); > + ret = i2c_write(i2c_addr[dpmac], 0x16, > + 1, &ch_b_eq[i], 1); > + if (ret) > + goto error; > + ret = i2c_write(i2c_addr[dpmac], 0x18, > + 1, &ch_b_ctl2[j], 1); > + if (ret) > + goto error; > > a = 0x14; > - i2c_write(i2c_addr[dpmac], 0x23, 1, &a, 1); > + ret = i2c_write(i2c_addr[dpmac], > + 0x23, 1, &a, 1); > + if (ret) > + goto error; > a = 0xb5; > - i2c_write(i2c_addr[dpmac], 0x2d, 1, &a, 1); > + ret = i2c_write(i2c_addr[dpmac], > + 0x2d, 1, &a, 1); > + if (ret) > + goto error; > a = 0x20; > - i2c_write(i2c_addr[dpmac], 4, 1, &a, 1); > + ret = i2c_write(i2c_addr[dpmac], 4, 1, &a, 1); > + if (ret) > + goto error; > +#else > + ret = i2c_get_chip_for_busnum(0, > + i2c_addr[dpmac], > + 1, &udev); > + if (!ret) { > + a = 0x18; > + ret = dm_i2c_write(udev, 6, &a, 1); > + if (ret) > + goto error; > + a = 0x38; > + ret = dm_i2c_write(udev, 4, &a, 1); > + if (ret) > + goto error; > + a = 0x4; > + ret = dm_i2c_write(udev, 8, &a, 1); > + if (ret) > + goto error; > + > + ret = dm_i2c_write(udev, 0xf, > + &ch_a_eq[i], 1); > + if (ret) > + goto error; > + ret = dm_i2c_write(udev, 0x11, > + &ch_a_ctl2[j], 1); > + if (ret) > + goto error; > + > + ret = dm_i2c_write(udev, 0x16, > + &ch_b_eq[i], 1); > + if (ret) > + goto error; > + ret = dm_i2c_write(udev, 0x18, > + &ch_b_ctl2[j], 1); > + if (ret) > + goto error; > + a = 0x14; > + ret = dm_i2c_write(udev, 0x23, &a, 1); > + if (ret) > + goto error; > + a = 0xb5; > + ret = dm_i2c_write(udev, 0x2d, &a, 1); > + if (ret) > + goto error; > + a = 0x20; > + ret = dm_i2c_write(udev, 4, &a, 1); > + if (ret) > + goto error; > + } > + NAK. You really want to change this ugly code, please. > /* Set I2c to Slot 1 */ > - i2c_write(0x77, 0, 0, &a, 1); > +#ifndef CONFIG_DM_I2C > + ret = i2c_write(0x77, 0, 0, &a, 1); > +#else > + ret = i2c_get_chip_for_busnum(0, 0x77, 1, &udev); > + if (!ret) > + ret = dm_i2c_write(udev, 0, &a, 1); > +#endif Why do you do it here, but not above? You need to work more consisntently! > diff --git a/board/freescale/ls2080aqds/ls2080aqds.c > b/board/freescale/ls2080aqds/ls2080aqds.c > index a0a3301..ec22cf8 100644 > --- a/board/freescale/ls2080aqds/ls2080aqds.c > +++ b/board/freescale/ls2080aqds/ls2080aqds.c > @@ -161,7 +161,15 @@ int select_i2c_ch_pca9547(u8 ch) > { > int ret; > > +#ifndef CONFIG_DM_I2C > ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1); > +#else > + struct udevice *dev; No declarations after code, please! Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de Single tasking: Just Say No. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot