lkml.org 
[lkml]   [2016]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 086/128] pinctrl: bcm2835: Fix initial value for direction_output
    Date
    3.16.7-ckt23 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Stefan Wahren <stefan.wahren@i2se.com>

    commit 4c02cba18cc9de672a554ddda4f23dec8cb4b48e upstream.

    Currently the provided initial value for bcm2835_gpio_direction_output
    has no effect. So fix this issue by changing the value before
    changing the GPIO direction. As a result we need to move the function below
    bcm2835_gpio_set.

    Suggested-by: Martin Sperl <kernel@martin.sperl.org>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Acked-by: Eric Anholt <eric@anholt.net>
    Acked-by: Stephen Warren <swarren@wwwdotorg.org>
    Fixes: e1b2dc70cd5b ("pinctrl: add bcm2835 driver")
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    [ luis: backported to 3.16:
    - file rename: drivers/pinctrl/bcm/pinctrl-bcm2835.c ->
    drivers/pinctrl/pinctrl-bcm2835.c ]
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    drivers/pinctrl/pinctrl-bcm2835.c | 13 +++++++------
    1 file changed, 7 insertions(+), 6 deletions(-)

    diff --git a/drivers/pinctrl/pinctrl-bcm2835.c b/drivers/pinctrl/pinctrl-bcm2835.c
    index 3d907de9bc91..1ad7caf08b6c 100644
    --- a/drivers/pinctrl/pinctrl-bcm2835.c
    +++ b/drivers/pinctrl/pinctrl-bcm2835.c
    @@ -352,12 +352,6 @@ static int bcm2835_gpio_get(struct gpio_chip *chip, unsigned offset)
    return bcm2835_gpio_get_bit(pc, GPLEV0, offset);
    }

    -static int bcm2835_gpio_direction_output(struct gpio_chip *chip,
    - unsigned offset, int value)
    -{
    - return pinctrl_gpio_direction_output(chip->base + offset);
    -}
    -
    static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
    {
    struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev);
    @@ -365,6 +359,13 @@ static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
    bcm2835_gpio_set_bit(pc, value ? GPSET0 : GPCLR0, offset);
    }

    +static int bcm2835_gpio_direction_output(struct gpio_chip *chip,
    + unsigned offset, int value)
    +{
    + bcm2835_gpio_set(chip, offset, value);
    + return pinctrl_gpio_direction_output(chip->base + offset);
    +}
    +
    static int bcm2835_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
    {
    struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev);
    \
     
     \ /
      Last update: 2016-01-25 00:01    [W:4.517 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site