lkml.org 
[lkml]   [2020]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 29/36] i2c: tegra: Consolidate error handling in tegra_i2c_xfer_msg()
    Date
    Consolidate error handling in tegra_i2c_xfer_msg() into a common code
    path in order to make code cleaner.

    Reviewed-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    ---
    drivers/i2c/busses/i2c-tegra.c | 13 +++++++++----
    1 file changed, 9 insertions(+), 4 deletions(-)

    diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
    index 68becf9da9e1..63ae9bdee502 100644
    --- a/drivers/i2c/busses/i2c-tegra.c
    +++ b/drivers/i2c/busses/i2c-tegra.c
    @@ -1274,8 +1274,8 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,

    if (!time_left && !completion_done(&i2c_dev->dma_complete)) {
    dev_err(i2c_dev->dev, "DMA transfer timeout\n");
    - tegra_i2c_init(i2c_dev);
    - return -ETIMEDOUT;
    + err = -ETIMEDOUT;
    + goto reset_hardware;
    }

    if (i2c_dev->msg_read && i2c_dev->msg_err == I2C_ERR_NONE) {
    @@ -1295,8 +1295,8 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,

    if (time_left == 0) {
    dev_err(i2c_dev->dev, "i2c transfer timed out\n");
    - tegra_i2c_init(i2c_dev);
    - return -ETIMEDOUT;
    + err = -ETIMEDOUT;
    + goto reset_hardware;
    }

    dev_dbg(i2c_dev->dev, "transfer complete: %lu %d %d\n",
    @@ -1310,6 +1310,11 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
    return err;

    return 0;
    +
    +reset_hardware:
    + tegra_i2c_init(i2c_dev);
    +
    + return err;
    }

    static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
    --
    2.27.0
    \
     
     \ /
      Last update: 2020-09-06 20:55    [W:4.054 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site