提交 f8731174 编写于 作者: H Haojian Zhuang

ARM: mmp: add more compatible names in gpio driver

Since more driver names are added into platform id, do the same thing on
compatible names for DT mode.
Signed-off-by: NHaojian Zhuang <haojian.zhuang@linaro.org>
Acked-by: NLinus Walleij <linus.walleij@linaro.org>
上级 b8f649f1
* Marvell PXA GPIO controller * Marvell PXA GPIO controller
Required properties: Required properties:
- compatible : Should be "mrvl,pxa-gpio" or "mrvl,mmp-gpio" - compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio",
"intel,pxa27x-gpio", "intel,pxa3xx-gpio",
"marvell,pxa93x-gpio", "marvell,mmp-gpio" or
"marvell,mmp2-gpio".
- reg : Address and length of the register set for the device - reg : Address and length of the register set for the device
- interrupts : Should be the port interrupt shared by all gpio pins. - interrupts : Should be the port interrupt shared by all gpio pins.
There're three gpio interrupts in arch-pxa, and they're gpio0, There're three gpio interrupts in arch-pxa, and they're gpio0,
...@@ -18,7 +21,7 @@ Required properties: ...@@ -18,7 +21,7 @@ Required properties:
Example: Example:
gpio: gpio@d4019000 { gpio: gpio@d4019000 {
compatible = "mrvl,mmp-gpio"; compatible = "marvell,mmp-gpio";
reg = <0xd4019000 0x1000>; reg = <0xd4019000 0x1000>;
interrupts = <49>; interrupts = <49>;
interrupt-name = "gpio_mux"; interrupt-name = "gpio_mux";
......
...@@ -160,7 +160,7 @@ ...@@ -160,7 +160,7 @@
}; };
gpio@d4019000 { gpio@d4019000 {
compatible = "mrvl,mmp-gpio"; compatible = "marvell,mmp2-gpio";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
reg = <0xd4019000 0x1000>; reg = <0xd4019000 0x1000>;
......
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
}; };
gpio@d4019000 { gpio@d4019000 {
compatible = "mrvl,mmp-gpio"; compatible = "marvell,mmp-gpio";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
reg = <0xd4019000 0x1000>; reg = <0xd4019000 0x1000>;
......
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
}; };
gpio@d4019000 { gpio@d4019000 {
compatible = "mrvl,mmp-gpio"; compatible = "marvell,mmp-gpio";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
reg = <0xd4019000 0x1000>; reg = <0xd4019000 0x1000>;
......
...@@ -28,7 +28,7 @@ static const struct of_dev_auxdata pxa168_auxdata_lookup[] __initconst = { ...@@ -28,7 +28,7 @@ static const struct of_dev_auxdata pxa168_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4026000, "pxa2xx-uart.2", NULL), OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4026000, "pxa2xx-uart.2", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL),
OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "mmp-gpio", NULL), OF_DEV_AUXDATA("marvell,mmp-gpio", 0xd4019000, "mmp-gpio", NULL),
OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL),
{} {}
}; };
...@@ -39,7 +39,7 @@ static const struct of_dev_auxdata pxa910_auxdata_lookup[] __initconst = { ...@@ -39,7 +39,7 @@ static const struct of_dev_auxdata pxa910_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4036000, "pxa2xx-uart.2", NULL), OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4036000, "pxa2xx-uart.2", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4037000, "pxa2xx-i2c.1", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4037000, "pxa2xx-i2c.1", NULL),
OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "mmp-gpio", NULL), OF_DEV_AUXDATA("marvell,mmp-gpio", 0xd4019000, "mmp-gpio", NULL),
OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL),
{} {}
}; };
......
...@@ -31,7 +31,7 @@ static const struct of_dev_auxdata mmp2_auxdata_lookup[] __initconst = { ...@@ -31,7 +31,7 @@ static const struct of_dev_auxdata mmp2_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4016000, "pxa2xx-uart.3", NULL), OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4016000, "pxa2xx-uart.3", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL),
OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "mmp2-gpio", NULL), OF_DEV_AUXDATA("marvell,mmp-gpio", 0xd4019000, "mmp2-gpio", NULL),
OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL),
{} {}
}; };
......
...@@ -499,8 +499,13 @@ static int pxa_gpio_nums(struct platform_device *pdev) ...@@ -499,8 +499,13 @@ static int pxa_gpio_nums(struct platform_device *pdev)
#ifdef CONFIG_OF #ifdef CONFIG_OF
static struct of_device_id pxa_gpio_dt_ids[] = { static struct of_device_id pxa_gpio_dt_ids[] = {
{ .compatible = "mrvl,pxa-gpio" }, { .compatible = "intel,pxa25x-gpio", .data = &pxa25x_id, },
{ .compatible = "mrvl,mmp-gpio", .data = (void *)MMP_GPIO }, { .compatible = "intel,pxa26x-gpio", .data = &pxa26x_id, },
{ .compatible = "intel,pxa27x-gpio", .data = &pxa27x_id, },
{ .compatible = "intel,pxa3xx-gpio", .data = &pxa3xx_id, },
{ .compatible = "marvell,pxa93x-gpio", .data = &pxa93x_id, },
{ .compatible = "marvell,mmp-gpio", .data = &mmp_id, },
{ .compatible = "marvell,mmp2-gpio", .data = &mmp2_id, },
{} {}
}; };
...@@ -520,16 +525,18 @@ const struct irq_domain_ops pxa_irq_domain_ops = { ...@@ -520,16 +525,18 @@ const struct irq_domain_ops pxa_irq_domain_ops = {
static int pxa_gpio_probe_dt(struct platform_device *pdev) static int pxa_gpio_probe_dt(struct platform_device *pdev)
{ {
int ret, nr_banks, nr_gpios; int ret, nr_gpios;
struct device_node *prev, *next, *np = pdev->dev.of_node; struct device_node *prev, *next, *np = pdev->dev.of_node;
const struct of_device_id *of_id = const struct of_device_id *of_id =
of_match_device(pxa_gpio_dt_ids, &pdev->dev); of_match_device(pxa_gpio_dt_ids, &pdev->dev);
const struct pxa_gpio_id *gpio_id;
if (!of_id) { if (!of_id || !of_id->data) {
dev_err(&pdev->dev, "Failed to find gpio controller\n"); dev_err(&pdev->dev, "Failed to find gpio controller\n");
return -EFAULT; return -EFAULT;
} }
gpio_type = (int)of_id->data; gpio_id = of_id->data;
gpio_type = gpio_id->type;
next = of_get_next_child(np, NULL); next = of_get_next_child(np, NULL);
prev = next; prev = next;
...@@ -538,14 +545,8 @@ static int pxa_gpio_probe_dt(struct platform_device *pdev) ...@@ -538,14 +545,8 @@ static int pxa_gpio_probe_dt(struct platform_device *pdev)
ret = -EINVAL; ret = -EINVAL;
goto err; goto err;
} }
for (nr_banks = 1; ; nr_banks++) {
next = of_get_next_child(np, prev);
if (!next)
break;
prev = next;
}
of_node_put(prev); of_node_put(prev);
nr_gpios = nr_banks << 5; nr_gpios = gpio_id->gpio_nums;
pxa_last_gpio = nr_gpios - 1; pxa_last_gpio = nr_gpios - 1;
irq_base = irq_alloc_descs(-1, 0, nr_gpios, 0); irq_base = irq_alloc_descs(-1, 0, nr_gpios, 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册