These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / gpio / gpio-em.c
index 3cfcfc6..6bca1e1 100644 (file)
@@ -31,7 +31,6 @@
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/pinctrl/consumer.h>
-#include <linux/platform_data/gpio-em.h>
 
 struct em_gio_priv {
        void __iomem *base0;
@@ -262,24 +261,22 @@ static int em_gio_irq_domain_map(struct irq_domain *h, unsigned int irq,
 
        irq_set_chip_data(irq, h->host_data);
        irq_set_chip_and_handler(irq, &p->irq_chip, handle_level_irq);
-       set_irq_flags(irq, IRQF_VALID); /* kill me now */
        return 0;
 }
 
-static struct irq_domain_ops em_gio_irq_domain_ops = {
+static const struct irq_domain_ops em_gio_irq_domain_ops = {
        .map    = em_gio_irq_domain_map,
        .xlate  = irq_domain_xlate_twocell,
 };
 
 static int em_gio_probe(struct platform_device *pdev)
 {
-       struct gpio_em_config pdata_dt;
-       struct gpio_em_config *pdata = dev_get_platdata(&pdev->dev);
        struct em_gio_priv *p;
        struct resource *io[2], *irq[2];
        struct gpio_chip *gpio_chip;
        struct irq_chip *irq_chip;
        const char *name = dev_name(&pdev->dev);
+       unsigned int ngpios;
        int ret;
 
        p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL);
@@ -319,18 +316,10 @@ static int em_gio_probe(struct platform_device *pdev)
                goto err0;
        }
 
-       if (!pdata) {
-               memset(&pdata_dt, 0, sizeof(pdata_dt));
-               pdata = &pdata_dt;
-
-               if (of_property_read_u32(pdev->dev.of_node, "ngpios",
-                                        &pdata->number_of_pins)) {
-                       dev_err(&pdev->dev, "Missing ngpios OF property\n");
-                       ret = -EINVAL;
-                       goto err0;
-               }
-
-               pdata->gpio_base = -1;
+       if (of_property_read_u32(pdev->dev.of_node, "ngpios", &ngpios)) {
+               dev_err(&pdev->dev, "Missing ngpios OF property\n");
+               ret = -EINVAL;
+               goto err0;
        }
 
        gpio_chip = &p->gpio_chip;
@@ -345,8 +334,8 @@ static int em_gio_probe(struct platform_device *pdev)
        gpio_chip->label = name;
        gpio_chip->dev = &pdev->dev;
        gpio_chip->owner = THIS_MODULE;
-       gpio_chip->base = pdata->gpio_base;
-       gpio_chip->ngpio = pdata->number_of_pins;
+       gpio_chip->base = -1;
+       gpio_chip->ngpio = ngpios;
 
        irq_chip = &p->irq_chip;
        irq_chip->name = name;
@@ -357,9 +346,7 @@ static int em_gio_probe(struct platform_device *pdev)
        irq_chip->irq_release_resources = em_gio_irq_relres;
        irq_chip->flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND;
 
-       p->irq_domain = irq_domain_add_simple(pdev->dev.of_node,
-                                             pdata->number_of_pins,
-                                             pdata->irq_base,
+       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;
@@ -387,12 +374,6 @@ static int em_gio_probe(struct platform_device *pdev)
                goto err1;
        }
 
-       if (pdata->pctl_name) {
-               ret = gpiochip_add_pin_range(gpio_chip, pdata->pctl_name, 0,
-                                            gpio_chip->base, gpio_chip->ngpio);
-               if (ret < 0)
-                       dev_warn(&pdev->dev, "failed to add pin range\n");
-       }
        return 0;
 
 err1: