Message ID | 1459169262-3941-1-git-send-email-ckeepax@opensource.wolfsonmicro.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Date: Mon, 28 Mar 2016 13:47:42 +0100 > GPIOlib will print warning messages if we call GPIO functions without a > valid GPIO. Change the code to avoid doing so. > > Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Applied.
Hello. On 03/28/2016 03:47 PM, Charles Keepax wrote: > GPIOlib will print warning messages if we call GPIO functions without a > valid GPIO. Change the code to avoid doing so. > > Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> > --- > drivers/net/ethernet/cadence/macb.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c > index 6619178..71bb42e 100644 > --- a/drivers/net/ethernet/cadence/macb.c > +++ b/drivers/net/ethernet/cadence/macb.c > @@ -2957,9 +2957,10 @@ static int macb_probe(struct platform_device *pdev) > phy_node = of_get_next_available_child(np, NULL); > if (phy_node) { > int gpio = of_get_named_gpio(phy_node, "reset-gpios", 0); > - if (gpio_is_valid(gpio)) > + if (gpio_is_valid(gpio)) { > bp->reset_gpio = gpio_to_desc(gpio); > - gpiod_direction_output(bp->reset_gpio, 1); > + gpiod_direction_output(bp->reset_gpio, 1); > + } Oops, sorry for missing this while fixing this code. > } > of_node_put(phy_node); > > @@ -3029,7 +3030,8 @@ static int macb_remove(struct platform_device *pdev) > mdiobus_free(bp->mii_bus); > > /* Shutdown the PHY if there is a GPIO reset */ > - gpiod_set_value(bp->reset_gpio, 0); > + if (bp->reset_gpio) > + gpiod_set_value(bp->reset_gpio, 0); Hm, this function was previously OK to call with NULL (it didn't curse)... > > unregister_netdev(dev); > clk_disable_unprepare(bp->tx_clk); MBR, Sergei
On Mon, Mar 28, 2016 at 08:30:11PM +0300, Sergei Shtylyov wrote: > >@@ -3029,7 +3030,8 @@ static int macb_remove(struct platform_device *pdev) > > mdiobus_free(bp->mii_bus); > > > > /* Shutdown the PHY if there is a GPIO reset */ > >- gpiod_set_value(bp->reset_gpio, 0); > >+ if (bp->reset_gpio) > >+ gpiod_set_value(bp->reset_gpio, 0); > > Hm, this function was previously OK to call with NULL (it didn't curse)... > Looks like it was changed so that it does complain fairly recently (patch librally snipped down): commit fdeb8e1547cb9dd39d5d7223b33f3565cf86c28e Author: Linus Walleij <linus.walleij@linaro.org> gpio: reflect base and ngpio into gpio_device +#define VALIDATE_DESC_VOID(desc) do { \ + if (!desc || !desc->gdev) { \ + pr_warn("%s: invalid GPIO\n", __func__); \ + return; \ + } \ + void gpiod_set_value(struct gpio_desc *desc, int value) { - if (!desc) - return; + VALIDATE_DESC_VOID(desc); Thanks, Charles
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c index 6619178..71bb42e 100644 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c @@ -2957,9 +2957,10 @@ static int macb_probe(struct platform_device *pdev) phy_node = of_get_next_available_child(np, NULL); if (phy_node) { int gpio = of_get_named_gpio(phy_node, "reset-gpios", 0); - if (gpio_is_valid(gpio)) + if (gpio_is_valid(gpio)) { bp->reset_gpio = gpio_to_desc(gpio); - gpiod_direction_output(bp->reset_gpio, 1); + gpiod_direction_output(bp->reset_gpio, 1); + } } of_node_put(phy_node); @@ -3029,7 +3030,8 @@ static int macb_remove(struct platform_device *pdev) mdiobus_free(bp->mii_bus); /* Shutdown the PHY if there is a GPIO reset */ - gpiod_set_value(bp->reset_gpio, 0); + if (bp->reset_gpio) + gpiod_set_value(bp->reset_gpio, 0); unregister_netdev(dev); clk_disable_unprepare(bp->tx_clk);
GPIOlib will print warning messages if we call GPIO functions without a valid GPIO. Change the code to avoid doing so. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> --- drivers/net/ethernet/cadence/macb.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)