diff options
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/gpio-stmpe.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/gpio/gpio-stmpe.c b/drivers/gpio/gpio-stmpe.c index 2776a09bee58..628b58494294 100644 --- a/drivers/gpio/gpio-stmpe.c +++ b/drivers/gpio/gpio-stmpe.c | |||
@@ -23,7 +23,8 @@ | |||
23 | enum { REG_RE, REG_FE, REG_IE }; | 23 | enum { REG_RE, REG_FE, REG_IE }; |
24 | 24 | ||
25 | #define CACHE_NR_REGS 3 | 25 | #define CACHE_NR_REGS 3 |
26 | #define CACHE_NR_BANKS (STMPE_NR_GPIOS / 8) | 26 | /* No variant has more than 24 GPIOs */ |
27 | #define CACHE_NR_BANKS (24 / 8) | ||
27 | 28 | ||
28 | struct stmpe_gpio { | 29 | struct stmpe_gpio { |
29 | struct gpio_chip chip; | 30 | struct gpio_chip chip; |
@@ -31,8 +32,6 @@ struct stmpe_gpio { | |||
31 | struct device *dev; | 32 | struct device *dev; |
32 | struct mutex irq_lock; | 33 | struct mutex irq_lock; |
33 | struct irq_domain *domain; | 34 | struct irq_domain *domain; |
34 | |||
35 | int irq_base; | ||
36 | unsigned norequest_mask; | 35 | unsigned norequest_mask; |
37 | 36 | ||
38 | /* Caches of interrupt control registers for bus_lock */ | 37 | /* Caches of interrupt control registers for bus_lock */ |
@@ -311,13 +310,8 @@ static const struct irq_domain_ops stmpe_gpio_irq_simple_ops = { | |||
311 | static int stmpe_gpio_irq_init(struct stmpe_gpio *stmpe_gpio, | 310 | static int stmpe_gpio_irq_init(struct stmpe_gpio *stmpe_gpio, |
312 | struct device_node *np) | 311 | struct device_node *np) |
313 | { | 312 | { |
314 | int base = 0; | ||
315 | |||
316 | if (!np) | ||
317 | base = stmpe_gpio->irq_base; | ||
318 | |||
319 | stmpe_gpio->domain = irq_domain_add_simple(np, | 313 | stmpe_gpio->domain = irq_domain_add_simple(np, |
320 | stmpe_gpio->chip.ngpio, base, | 314 | stmpe_gpio->chip.ngpio, 0, |
321 | &stmpe_gpio_irq_simple_ops, stmpe_gpio); | 315 | &stmpe_gpio_irq_simple_ops, stmpe_gpio); |
322 | if (!stmpe_gpio->domain) { | 316 | if (!stmpe_gpio->domain) { |
323 | dev_err(stmpe_gpio->dev, "failed to create irqdomain\n"); | 317 | dev_err(stmpe_gpio->dev, "failed to create irqdomain\n"); |
@@ -354,7 +348,7 @@ static int stmpe_gpio_probe(struct platform_device *pdev) | |||
354 | #ifdef CONFIG_OF | 348 | #ifdef CONFIG_OF |
355 | stmpe_gpio->chip.of_node = np; | 349 | stmpe_gpio->chip.of_node = np; |
356 | #endif | 350 | #endif |
357 | stmpe_gpio->chip.base = pdata ? pdata->gpio_base : -1; | 351 | stmpe_gpio->chip.base = -1; |
358 | 352 | ||
359 | if (pdata) | 353 | if (pdata) |
360 | stmpe_gpio->norequest_mask = pdata->norequest_mask; | 354 | stmpe_gpio->norequest_mask = pdata->norequest_mask; |
@@ -362,9 +356,7 @@ static int stmpe_gpio_probe(struct platform_device *pdev) | |||
362 | of_property_read_u32(np, "st,norequest-mask", | 356 | of_property_read_u32(np, "st,norequest-mask", |
363 | &stmpe_gpio->norequest_mask); | 357 | &stmpe_gpio->norequest_mask); |
364 | 358 | ||
365 | if (irq >= 0) | 359 | if (irq < 0) |
366 | stmpe_gpio->irq_base = stmpe->irq_base + STMPE_INT_GPIO(0); | ||
367 | else | ||
368 | dev_info(&pdev->dev, | 360 | dev_info(&pdev->dev, |
369 | "device configured in no-irq mode; " | 361 | "device configured in no-irq mode; " |
370 | "irqs are not available\n"); | 362 | "irqs are not available\n"); |