lkml.org 
[lkml]   [2018]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 122/361] gpio: brcmstb: allow 0 width GPIO banks
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

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

    From: Justin Chen <justinpopo6@gmail.com>

    [ Upstream commit bfba223dcc4548632d8f3bfd15690a86d4c68504 ]

    Sometimes we have empty banks within the GPIO block. This commit allows
    proper handling of 0 width GPIO banks. We handle 0 width GPIO banks by
    incrementing the bank and number of GPIOs, but not initializing them.
    This will mean a call into the non-existent GPIOs will return an error.

    Also remove "GPIO registered" dev print. This information is misleading
    since the incremented banks and gpio_base do not reflect the actual GPIOs
    that get initialized. We leave this information out since it is already
    printed with dev_dbg.

    Signed-off-by: Justin Chen <justinpopo6@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/gpio/gpio-brcmstb.c | 15 ++++++++++++---
    1 file changed, 12 insertions(+), 3 deletions(-)

    --- a/drivers/gpio/gpio-brcmstb.c
    +++ b/drivers/gpio/gpio-brcmstb.c
    @@ -664,6 +664,18 @@ static int brcmstb_gpio_probe(struct pla
    struct brcmstb_gpio_bank *bank;
    struct gpio_chip *gc;

    + /*
    + * If bank_width is 0, then there is an empty bank in the
    + * register block. Special handling for this case.
    + */
    + if (bank_width == 0) {
    + dev_dbg(dev, "Width 0 found: Empty bank @ %d\n",
    + num_banks);
    + num_banks++;
    + gpio_base += MAX_GPIO_PER_BANK;
    + continue;
    + }
    +
    bank = devm_kzalloc(dev, sizeof(*bank), GFP_KERNEL);
    if (!bank) {
    err = -ENOMEM;
    @@ -740,9 +752,6 @@ static int brcmstb_gpio_probe(struct pla
    goto fail;
    }

    - dev_info(dev, "Registered %d banks (GPIO(s): %d-%d)\n",
    - num_banks, priv->gpio_base, gpio_base - 1);
    -
    if (priv->parent_wake_irq && need_wakeup_event)
    pm_wakeup_event(dev, 0);


    \
     
     \ /
      Last update: 2018-11-12 01:10    [W:4.692 / U:1.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site