lkml.org 
[lkml]   [2024]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 08/13] i2c: nomadik: replace jiffies by ktime for FIFO flushing timeout
    The FIFO flush function uses a jiffies amount to detect timeouts as the
    flushing is async. Replace with ktime to get more accurate precision
    and support short timeouts.

    Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
    ---
    drivers/i2c/busses/i2c-nomadik.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/i2c/busses/i2c-nomadik.c b/drivers/i2c/busses/i2c-nomadik.c
    index e68b8e0d7919..afd54999bbbb 100644
    --- a/drivers/i2c/busses/i2c-nomadik.c
    +++ b/drivers/i2c/busses/i2c-nomadik.c
    @@ -219,8 +219,8 @@ static inline void i2c_clr_bit(void __iomem *reg, u32 mask)
    static int flush_i2c_fifo(struct nmk_i2c_dev *priv)
    {
    #define LOOP_ATTEMPTS 10
    + ktime_t timeout;
    int i;
    - unsigned long timeout;

    /*
    * flush the transmit and receive FIFO. The flushing
    @@ -232,9 +232,9 @@ static int flush_i2c_fifo(struct nmk_i2c_dev *priv)
    writel((I2C_CR_FTX | I2C_CR_FRX), priv->virtbase + I2C_CR);

    for (i = 0; i < LOOP_ATTEMPTS; i++) {
    - timeout = jiffies + priv->adap.timeout;
    + timeout = ktime_add_us(ktime_get(), priv->timeout_usecs);

    - while (!time_after(jiffies, timeout)) {
    + while (ktime_after(timeout, ktime_get())) {
    if ((readl(priv->virtbase + I2C_CR) &
    (I2C_CR_FTX | I2C_CR_FRX)) == 0)
    return 0;
    --
    2.43.1


    \
     
     \ /
      Last update: 2024-05-27 15:05    [W:4.116 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site