diff options
Diffstat (limited to 'drivers/gpio/gpio-em.c')
| -rw-r--r-- | drivers/gpio/gpio-em.c | 35 | 
1 files changed, 8 insertions, 27 deletions
diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c index fbf287307c4c..6bca1e125e12 100644 --- a/drivers/gpio/gpio-em.c +++ b/drivers/gpio/gpio-em.c @@ -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,7 +261,6 @@ 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;  } @@ -273,13 +271,12 @@ static const struct irq_domain_ops em_gio_irq_domain_ops = {  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:  |