Hello Alexander, On 01.02.23 18:50, Alexander Shiyan wrote: > 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)). udelay is already defined used ARMv8 architected timer, so what John is doingvis providing an implementation for i.MX6. So even if it uses a loop, the iterations are chosen to be roughly the amount of microseconds in the argument and thus the name is ok IMO. See his latest revision of the patch. Cheers, Ahmad > > 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 >> >> > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |