Commit 351c2163 authored by Linus Walleij's avatar Linus Walleij

pinctrl: coh901: add device tree support

This makes it possible to probe the COH901 pinctrl driver from
the device tree, and assigned the device tree node in the
gpio_chip so we can look up cross-references from the device
tree. Start grabbing the per-port (bank) IRQs by index instead
of by name so we don't have to look up the IRQs by name going
forward.
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 21a035db
ST-Ericsson COH 901 571/3 GPIO controller
Required properties:
- compatible: Compatible property value should be "stericsson,gpio-coh901"
- reg: Physical base address of the controller and length of memory mapped
region.
- interrupts: the 0...n interrupts assigned to the different GPIO ports/banks.
...@@ -773,8 +773,7 @@ static int __init u300_gpio_probe(struct platform_device *pdev) ...@@ -773,8 +773,7 @@ static int __init u300_gpio_probe(struct platform_device *pdev)
port->number = portno; port->number = portno;
port->gpio = gpio; port->gpio = gpio;
port->irq = platform_get_irq_byname(pdev, port->irq = platform_get_irq(pdev, portno);
port->name);
dev_dbg(gpio->dev, "register IRQ %d for port %s\n", port->irq, dev_dbg(gpio->dev, "register IRQ %d for port %s\n", port->irq,
port->name); port->name);
...@@ -811,6 +810,9 @@ static int __init u300_gpio_probe(struct platform_device *pdev) ...@@ -811,6 +810,9 @@ static int __init u300_gpio_probe(struct platform_device *pdev)
} }
dev_dbg(gpio->dev, "initialized %d GPIO ports\n", portno); dev_dbg(gpio->dev, "initialized %d GPIO ports\n", portno);
#ifdef CONFIG_OF_GPIO
gpio->chip.of_node = pdev->dev.of_node;
#endif
err = gpiochip_add(&gpio->chip); err = gpiochip_add(&gpio->chip);
if (err) { if (err) {
dev_err(gpio->dev, "unable to add gpiochip: %d\n", err); dev_err(gpio->dev, "unable to add gpiochip: %d\n", err);
...@@ -864,9 +866,15 @@ static int __exit u300_gpio_remove(struct platform_device *pdev) ...@@ -864,9 +866,15 @@ static int __exit u300_gpio_remove(struct platform_device *pdev)
return 0; return 0;
} }
static const struct of_device_id u300_gpio_match[] = {
{ .compatible = "stericsson,gpio-coh901" },
{},
};
static struct platform_driver u300_gpio_driver = { static struct platform_driver u300_gpio_driver = {
.driver = { .driver = {
.name = "u300-gpio", .name = "u300-gpio",
.of_match_table = u300_gpio_match,
}, },
.remove = __exit_p(u300_gpio_remove), .remove = __exit_p(u300_gpio_remove),
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment