lkml.org 
[lkml]   [2012]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 040/108] p54spi: Release GPIO lines and IRQ on error in p54spi_probe
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Max Filippov <jcmvbkbc@gmail.com>

    commit 62ebeed8d00aef75eac4fd6c161cae75a41965ca upstream.

    This makes it possible to reload driver if insmod has failed due to
    missing firmware.

    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Acked-by: Christian Lamparter <chunkeey@googlemail.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/p54/p54spi.c | 14 ++++++++++----
    1 file changed, 10 insertions(+), 4 deletions(-)

    --- a/drivers/net/wireless/p54/p54spi.c
    +++ b/drivers/net/wireless/p54/p54spi.c
    @@ -623,19 +623,19 @@ static int __devinit p54spi_probe(struct
    ret = spi_setup(spi);
    if (ret < 0) {
    dev_err(&priv->spi->dev, "spi_setup failed");
    - goto err_free_common;
    + goto err_free;
    }

    ret = gpio_request(p54spi_gpio_power, "p54spi power");
    if (ret < 0) {
    dev_err(&priv->spi->dev, "power GPIO request failed: %d", ret);
    - goto err_free_common;
    + goto err_free;
    }

    ret = gpio_request(p54spi_gpio_irq, "p54spi irq");
    if (ret < 0) {
    dev_err(&priv->spi->dev, "irq GPIO request failed: %d", ret);
    - goto err_free_common;
    + goto err_free_gpio_power;
    }

    gpio_direction_output(p54spi_gpio_power, 0);
    @@ -646,7 +646,7 @@ static int __devinit p54spi_probe(struct
    priv->spi);
    if (ret < 0) {
    dev_err(&priv->spi->dev, "request_irq() failed");
    - goto err_free_common;
    + goto err_free_gpio_irq;
    }

    irq_set_irq_type(gpio_to_irq(p54spi_gpio_irq), IRQ_TYPE_EDGE_RISING);
    @@ -678,6 +678,12 @@ static int __devinit p54spi_probe(struct
    return 0;

    err_free_common:
    + free_irq(gpio_to_irq(p54spi_gpio_irq), spi);
    +err_free_gpio_irq:
    + gpio_free(p54spi_gpio_irq);
    +err_free_gpio_power:
    + gpio_free(p54spi_gpio_power);
    +err_free:
    p54_free_common(priv->hw);
    return ret;
    }



    \
     
     \ /
      Last update: 2012-03-31 01:07    [W:4.051 / U:0.508 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site