]> Git Repo - J-linux.git/blobdiff - drivers/gpio/gpio-em.c
Merge tag 'gpio-v5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux...
[J-linux.git] / drivers / gpio / gpio-em.c
index 84a7375cee0a36456bb25fdcfd0c045b76f13449..b6af705a4e5f4810f1a8fc74c51ad0b74b440b78 100644 (file)
@@ -270,10 +270,8 @@ static int em_gio_probe(struct platform_device *pdev)
        int ret;
 
        p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL);
-       if (!p) {
-               ret = -ENOMEM;
-               goto err0;
-       }
+       if (!p)
+               return -ENOMEM;
 
        p->pdev = pdev;
        platform_set_drvdata(pdev, p);
@@ -286,30 +284,22 @@ static int em_gio_probe(struct platform_device *pdev)
 
        if (!io[0] || !io[1] || !irq[0] || !irq[1]) {
                dev_err(&pdev->dev, "missing IRQ or IOMEM\n");
-               ret = -EINVAL;
-               goto err0;
+               return -EINVAL;
        }
 
        p->base0 = devm_ioremap_nocache(&pdev->dev, io[0]->start,
                                        resource_size(io[0]));
-       if (!p->base0) {
-               dev_err(&pdev->dev, "failed to remap low I/O memory\n");
-               ret = -ENXIO;
-               goto err0;
-       }
+       if (!p->base0)
+               return -ENOMEM;
 
        p->base1 = devm_ioremap_nocache(&pdev->dev, io[1]->start,
                                   resource_size(io[1]));
-       if (!p->base1) {
-               dev_err(&pdev->dev, "failed to remap high I/O memory\n");
-               ret = -ENXIO;
-               goto err0;
-       }
+       if (!p->base1)
+               return -ENOMEM;
 
        if (of_property_read_u32(pdev->dev.of_node, "ngpios", &ngpios)) {
                dev_err(&pdev->dev, "Missing ngpios OF property\n");
-               ret = -EINVAL;
-               goto err0;
+               return -EINVAL;
        }
 
        gpio_chip = &p->gpio_chip;
@@ -339,9 +329,8 @@ static int em_gio_probe(struct platform_device *pdev)
        p->irq_domain = irq_domain_add_simple(pdev->dev.of_node, ngpios, 0,
                                              &em_gio_irq_domain_ops, p);
        if (!p->irq_domain) {
-               ret = -ENXIO;
                dev_err(&pdev->dev, "cannot initialize irq domain\n");
-               goto err0;
+               return -ENXIO;
        }
 
        if (devm_request_irq(&pdev->dev, irq[0]->start,
@@ -358,7 +347,7 @@ static int em_gio_probe(struct platform_device *pdev)
                goto err1;
        }
 
-       ret = gpiochip_add_data(gpio_chip, p);
+       ret = devm_gpiochip_add_data(&pdev->dev, gpio_chip, p);
        if (ret) {
                dev_err(&pdev->dev, "failed to add GPIO controller\n");
                goto err1;
@@ -368,7 +357,6 @@ static int em_gio_probe(struct platform_device *pdev)
 
 err1:
        irq_domain_remove(p->irq_domain);
-err0:
        return ret;
 }
 
@@ -376,8 +364,6 @@ static int em_gio_remove(struct platform_device *pdev)
 {
        struct em_gio_priv *p = platform_get_drvdata(pdev);
 
-       gpiochip_remove(&p->gpio_chip);
-
        irq_domain_remove(p->irq_domain);
        return 0;
 }
This page took 0.030717 seconds and 4 git commands to generate.