Hello! Just a nitpick, udelay means milliseconds (udelay_(us)), which isn't quite right in this case, so I think we should use the "loops" value here (delay_loops() or so)). Thanks! чт, 26 янв. 2023 г. в 21:57, John Watts <contact@xxxxxxxxxx>: > > udelay isn't provided in the PBL, so use our own definition. > > This avoids boards having to define udelay in their code. > > Signed-off-by: John Watts <contact@xxxxxxxxxx> > --- > drivers/i2c/busses/i2c-imx-early.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/i2c/busses/i2c-imx-early.c b/drivers/i2c/busses/i2c-imx-early.c > index 6c8bdc7904..fcf279eff8 100644 > --- a/drivers/i2c/busses/i2c-imx-early.c > +++ b/drivers/i2c/busses/i2c-imx-early.c > @@ -90,6 +90,13 @@ static int i2c_fsl_acked(struct fsl_i2c *fsl_i2c) > return i2c_fsl_poll_status(fsl_i2c, 0, I2SR_RXAK); > } > > +static void __udelay(int us) > +{ > + volatile int i; > + > + for (i = 0; i < us * 1000; i++); > +} > + > static int i2c_fsl_start(struct fsl_i2c *fsl_i2c) > { > unsigned int temp = 0; > @@ -104,7 +111,7 @@ static int i2c_fsl_start(struct fsl_i2c *fsl_i2c) > fsl_i2c, FSL_I2C_I2CR); > > /* Wait controller to be stable */ > - udelay(100); > + __udelay(100); > > /* Start I2C transaction */ > temp = fsl_i2c_read_reg(fsl_i2c, FSL_I2C_I2CR); > -- > 2.39.1 > >