gpio: mb86s7x: Use devm_clk_get_optional() to get the input clock
PATCH 1/2 gpio: mb86s7x: Use devm_clk_get_optional() to get the input clock
Simplify the code which fetches the input clock by using devm_clk_get_optional(). If no input clock is present devm_clk_get_optional() will return NULL instead of an error which matches the behavior of the old code.
--- drivers/gpio/gpio-mb86s7x.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
drivers/gpio/gpio-mb86s7x.c +7 -9
@@ -168,15 +168,13 @@ static int mb86s70_gpio_probe(struct platform_device *pdev)if (IS_ERR (gchip->base))return PTR_ERR (gchip->base); -if (!has_acpi_companion (&pdev->dev)) { - gchip->clk =devm_clk_get (&pdev->dev,NULL ); -if (IS_ERR (gchip->clk)) -return PTR_ERR (gchip->clk); - - ret =clk_prepare_enable (gchip->clk); -if (ret) -return ret; - } + gchip->clk =devm_clk_get_optional (&pdev->dev,NULL ); +if (IS_ERR (gchip->clk)) +return PTR_ERR (gchip->clk); + + ret =clk_prepare_enable (gchip->clk); +if (ret) +return ret;spin_lock_init (&gchip->lock);
Signature · 1 line
2.26.2
PATCH 2/2 gpio: mb86s7x: Remove superfluous test for ACPI companion
acpi_gpiochip_request_interrupts() will check for ACPI handle of the GPIO chip parent device and bail out if there is none defined. Thus, has_acpi_companion() is effectively repeating above and is not needed in the individual driver.
Assigning ->to_irq() unconditionally doesn't change anything, except an error code, but this we fix as well by propagating it from platform_get_irq().
--- drivers/gpio/gpio-mb86s7x.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
drivers/gpio/gpio-mb86s7x.c +6 -8
@@ -145,7 +145,9 @@ static int mb86s70_gpio_to_irq(struct gpio_chip *gc, unsigned int offset)for (index =0 ;; index++) { irq =platform_get_irq (to_platform_device (gc->parent), index); -if (irq <=0 ) +if (irq <0 ) +return irq; +if (irq ==0 )break ;if (irq_get_irq_data (irq)->hwirq == offset)return irq;
@@ -184,15 +186,13 @@ static int mb86s70_gpio_probe(struct platform_device *pdev) gchip->gc.free = mb86s70_gpio_free; gchip->gc.get = mb86s70_gpio_get; gchip->gc.set = mb86s70_gpio_set; + gchip->gc.to_irq = mb86s70_gpio_to_irq; gchip->gc.label =dev_name (&pdev->dev); gchip->gc.ngpio =32 ; gchip->gc.owner =THIS_MODULE ; gchip->gc.parent = &pdev->dev; gchip->gc.base =-1 ; -if (has_acpi_companion (&pdev->dev)) - gchip->gc.to_irq = mb86s70_gpio_to_irq; - ret =gpiochip_add_data (&gchip->gc, gchip);if (ret) {dev_err (&pdev->dev,"couldn't register gpio driver\n" );
@@ -200,8 +200,7 @@ static int mb86s70_gpio_probe(struct platform_device *pdev)return ret; } -if (has_acpi_companion (&pdev->dev)) -acpi_gpiochip_request_interrupts (&gchip->gc); +acpi_gpiochip_request_interrupts (&gchip->gc);return 0 ; }
@@ -210,8 +209,7 @@ static int mb86s70_gpio_remove(struct platform_device *pdev) {struct mb86s70_gpio_chip *gchip =platform_get_drvdata (pdev); -if (has_acpi_companion (&pdev->dev)) -acpi_gpiochip_free_interrupts (&gchip->gc); +acpi_gpiochip_free_interrupts (&gchip->gc);gpiochip_remove (&gchip->gc);clk_disable_unprepare (gchip->clk);
Signature · 1 line
2.26.2
Re: [PATCH v1 2/2] gpio: mb86s7x: Remove superfluous test for ACPI companion
Quoted 10 lines · Andy Shevchenko
acpi_gpiochip_request_interrupts()will check for ACPI handle of the GPIO chip parent device and bail out if there is none defined. Thus,has_acpi_companion()is effectively repeating above and is not needed in the individual driver.Assigning ->to_irq() unconditionally doesn't change anything, except an error code, but this we fix as well by propagating it from
platform_get_irq().Signed-off-by Andy Shevchenko <[email protected]>
Patch applied.
Yours,
Linus Walleij
Quoted 6 lines · Andy Shevchenko
Simplify the code which fetches the input clock by using
devm_clk_get_optional(). If no input clock is presentdevm_clk_get_optional()will return NULL instead of an error which matches the behavior of the old code.Signed-off-by Andy Shevchenko <[email protected]>
Patch applied.
Yours,
Linus Walleij