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[ 056/175] p54spi: Release GPIO lines and IRQ on error in p54spi_probe
    3.3-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
    @@ -618,19 +618,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);
    @@ -641,7 +641,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);
    @@ -673,6 +673,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-30 23:55    [W:0.022 / U:185.924 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site