Merge tag 'gpio-v4.5-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio

Pull GPIO fixes from Linus Walleij:
- Probe errorpath fix for the Altera
- irqchip ofnode pointer added to the DaVinci driver
- controller instance number correction for DaVinci

* tag 'gpio-v4.5-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
gpio: davinci: Fix the number of controllers allocated
gpio: davinci: Add the missing of-node pointer
gpio: gpio-altera: Remove gpiochip on probe failure.

+7 -5
+3 -2
drivers/gpio/gpio-altera.c
··· 312 312 handle_simple_irq, IRQ_TYPE_NONE); 313 313 314 314 if (ret) { 315 - dev_info(&pdev->dev, "could not add irqchip\n"); 316 - return ret; 315 + dev_err(&pdev->dev, "could not add irqchip\n"); 316 + goto teardown; 317 317 } 318 318 319 319 gpiochip_set_chained_irqchip(&altera_gc->mmchip.gc, ··· 326 326 skip_irq: 327 327 return 0; 328 328 teardown: 329 + of_mm_gpiochip_remove(&altera_gc->mmchip); 329 330 pr_err("%s: registration failed with status %d\n", 330 331 node->full_name, ret); 331 332
+4 -3
drivers/gpio/gpio-davinci.c
··· 195 195 static int davinci_gpio_probe(struct platform_device *pdev) 196 196 { 197 197 int i, base; 198 - unsigned ngpio; 198 + unsigned ngpio, nbank; 199 199 struct davinci_gpio_controller *chips; 200 200 struct davinci_gpio_platform_data *pdata; 201 201 struct davinci_gpio_regs __iomem *regs; ··· 224 224 if (WARN_ON(ARCH_NR_GPIOS < ngpio)) 225 225 ngpio = ARCH_NR_GPIOS; 226 226 227 + nbank = DIV_ROUND_UP(ngpio, 32); 227 228 chips = devm_kzalloc(dev, 228 - ngpio * sizeof(struct davinci_gpio_controller), 229 + nbank * sizeof(struct davinci_gpio_controller), 229 230 GFP_KERNEL); 230 231 if (!chips) 231 232 return -ENOMEM; ··· 512 511 return irq; 513 512 } 514 513 515 - irq_domain = irq_domain_add_legacy(NULL, ngpio, irq, 0, 514 + irq_domain = irq_domain_add_legacy(dev->of_node, ngpio, irq, 0, 516 515 &davinci_gpio_irq_ops, 517 516 chips); 518 517 if (!irq_domain) {