lkml.org 
[lkml]   [2023]   [Dec]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 5/9] i2c: stm32f7: perform I2C_ISR read once at beginning of event isr
    Date
    Move readl_relaxed of I2C_ISR register at beginning of event isr
    so that it done once for both master & slave handling.

    Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
    ---
    drivers/i2c/busses/i2c-stm32f7.c | 12 +++++-------
    1 file changed, 5 insertions(+), 7 deletions(-)

    diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c
    index 15100fed0a3f..f7abf6d3a7b9 100644
    --- a/drivers/i2c/busses/i2c-stm32f7.c
    +++ b/drivers/i2c/busses/i2c-stm32f7.c
    @@ -1419,15 +1419,13 @@ static bool stm32f7_i2c_is_slave_busy(struct stm32f7_i2c_dev *i2c_dev)
    return i == busy;
    }

    -static irqreturn_t stm32f7_i2c_slave_isr_event(struct stm32f7_i2c_dev *i2c_dev)
    +static irqreturn_t stm32f7_i2c_slave_isr_event(struct stm32f7_i2c_dev *i2c_dev, u32 status)
    {
    void __iomem *base = i2c_dev->base;
    - u32 cr2, status, mask;
    + u32 cr2, mask;
    u8 val;
    int ret;

    - status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR);
    -
    /* Slave transmitter mode */
    if (status & STM32F7_I2C_ISR_TXIS) {
    i2c_slave_event(i2c_dev->slave_running,
    @@ -1531,11 +1529,11 @@ static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data)
    u32 status, mask;
    int ret;

    - if (!i2c_dev->master_mode)
    - return stm32f7_i2c_slave_isr_event(i2c_dev);
    -
    status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR);

    + if (!i2c_dev->master_mode)
    + return stm32f7_i2c_slave_isr_event(i2c_dev, status);
    +
    /* NACK received */
    if (status & STM32F7_I2C_ISR_NACKF) {
    dev_dbg(i2c_dev->dev, "<%s>: Receive NACK (addr %x)\n",
    --
    2.25.1

    \
     
     \ /
      Last update: 2023-12-15 18:10    [W:7.879 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site