lkml.org 
[lkml]   [2019]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 08/92] can: mcp251x: mcp251x_hw_reset(): allow more time after a reset
    Date
    From: Marc Kleine-Budde <mkl@pengutronix.de>

    commit d84ea2123f8d27144e3f4d58cd88c9c6ddc799de upstream.

    Some boards take longer than 5ms to power up after a reset, so allow
    some retries attempts before giving up.

    Fixes: ff06d611a31c ("can: mcp251x: Improve mcp251x_hw_reset()")
    Cc: linux-stable <stable@vger.kernel.org>
    Tested-by: Sean Nyekjaer <sean@geanix.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/can/spi/mcp251x.c | 19 ++++++++++++++-----
    1 file changed, 14 insertions(+), 5 deletions(-)

    --- a/drivers/net/can/spi/mcp251x.c
    +++ b/drivers/net/can/spi/mcp251x.c
    @@ -627,7 +627,7 @@ static int mcp251x_setup(struct net_devi
    static int mcp251x_hw_reset(struct spi_device *spi)
    {
    struct mcp251x_priv *priv = spi_get_drvdata(spi);
    - u8 reg;
    + unsigned long timeout;
    int ret;

    /* Wait for oscillator startup timer after power up */
    @@ -641,10 +641,19 @@ static int mcp251x_hw_reset(struct spi_d
    /* Wait for oscillator startup timer after reset */
    mdelay(MCP251X_OST_DELAY_MS);

    - reg = mcp251x_read_reg(spi, CANSTAT);
    - if ((reg & CANCTRL_REQOP_MASK) != CANCTRL_REQOP_CONF)
    - return -ENODEV;
    -
    + /* Wait for reset to finish */
    + timeout = jiffies + HZ;
    + while ((mcp251x_read_reg(spi, CANSTAT) & CANCTRL_REQOP_MASK) !=
    + CANCTRL_REQOP_CONF) {
    + usleep_range(MCP251X_OST_DELAY_MS * 1000,
    + MCP251X_OST_DELAY_MS * 1000 * 2);
    +
    + if (time_after(jiffies, timeout)) {
    + dev_err(&spi->dev,
    + "MCP251x didn't enter in conf mode after reset\n");
    + return -EBUSY;
    + }
    + }
    return 0;
    }


    \
     
     \ /
      Last update: 2019-10-17 00:19    [W:4.068 / U:0.176 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site