diff options
Diffstat (limited to 'drivers/gpio/gpio-stmpe.c')
| -rw-r--r-- | drivers/gpio/gpio-stmpe.c | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/gpio/gpio-stmpe.c b/drivers/gpio/gpio-stmpe.c index 770476a9da8..3ce5bc38ac3 100644 --- a/drivers/gpio/gpio-stmpe.c +++ b/drivers/gpio/gpio-stmpe.c @@ -307,11 +307,15 @@ static const struct irq_domain_ops stmpe_gpio_irq_simple_ops = {  	.xlate = irq_domain_xlate_twocell,  }; -static int stmpe_gpio_irq_init(struct stmpe_gpio *stmpe_gpio) +static int stmpe_gpio_irq_init(struct stmpe_gpio *stmpe_gpio, +		struct device_node *np)  { -	int base = stmpe_gpio->irq_base; +	int base = 0; -	stmpe_gpio->domain = irq_domain_add_simple(NULL, +	if (!np) +		base = stmpe_gpio->irq_base; + +	stmpe_gpio->domain = irq_domain_add_simple(np,  				stmpe_gpio->chip.ngpio, base,  				&stmpe_gpio_irq_simple_ops, stmpe_gpio);  	if (!stmpe_gpio->domain) { @@ -346,6 +350,9 @@ static int stmpe_gpio_probe(struct platform_device *pdev)  	stmpe_gpio->chip = template_chip;  	stmpe_gpio->chip.ngpio = stmpe->num_gpios;  	stmpe_gpio->chip.dev = &pdev->dev; +#ifdef CONFIG_OF +	stmpe_gpio->chip.of_node = np; +#endif  	stmpe_gpio->chip.base = pdata ? pdata->gpio_base : -1;  	if (pdata) @@ -366,7 +373,7 @@ static int stmpe_gpio_probe(struct platform_device *pdev)  		goto out_free;  	if (irq >= 0) { -		ret = stmpe_gpio_irq_init(stmpe_gpio); +		ret = stmpe_gpio_irq_init(stmpe_gpio, np);  		if (ret)  			goto out_disable;  |