Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

gpio: mvebu: Use devm_gpiochip_add_data() for gpio registration

Use devm_gpiochip_add_data() for GPIO registration and clean the
error path.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>

+3 -8
+3 -8
drivers/gpio/gpio-mvebu.c
··· 756 756 BUG(); 757 757 } 758 758 759 - gpiochip_add_data(&mvchip->chip, mvchip); 759 + devm_gpiochip_add_data(&pdev->dev, &mvchip->chip, mvchip); 760 760 761 761 /* Some gpio controllers do not provide irq support */ 762 762 if (!of_irq_count(np)) ··· 777 777 mvchip->irqbase = irq_alloc_descs(-1, 0, ngpios, -1); 778 778 if (mvchip->irqbase < 0) { 779 779 dev_err(&pdev->dev, "no irqs\n"); 780 - err = mvchip->irqbase; 781 - goto err_gpiochip_add; 780 + return mvchip->irqbase; 782 781 } 783 782 784 783 gc = irq_alloc_generic_chip("mvebu_gpio_irq", 2, mvchip->irqbase, 785 784 mvchip->membase, handle_level_irq); 786 785 if (!gc) { 787 786 dev_err(&pdev->dev, "Cannot allocate generic irq_chip\n"); 788 - err = -ENOMEM; 789 - goto err_gpiochip_add; 787 + return -ENOMEM; 790 788 } 791 789 792 790 gc->private = mvchip; ··· 825 827 irq_remove_generic_chip(gc, IRQ_MSK(ngpios), IRQ_NOREQUEST, 826 828 IRQ_LEVEL | IRQ_NOPROBE); 827 829 kfree(gc); 828 - 829 - err_gpiochip_add: 830 - gpiochip_remove(&mvchip->chip); 831 830 832 831 return err; 833 832 }