summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorloos <loos@FreeBSD.org>2014-10-28 18:33:59 +0000
committerloos <loos@FreeBSD.org>2014-10-28 18:33:59 +0000
commit7dd1b73c3843393e02fb47a35ad7b9bf4dac7c2f (patch)
treed80aa712cc7a8f76cb28507a8696a187f0a27495
parentae007aae20de488c994d204240aa025651e5ca22 (diff)
downloadFreeBSD-src-7dd1b73c3843393e02fb47a35ad7b9bf4dac7c2f.zip
FreeBSD-src-7dd1b73c3843393e02fb47a35ad7b9bf4dac7c2f.tar.gz
Make the GPIO children attach to the first unit available and not only to
unit 0. It seems that this 'simplification' was copied to all GPIO drivers in tree. This fix a bug where a GPIO controller could fail to attach its children (gpioc and gpiobus) if another GPIO driver attach first.
-rw-r--r--sys/arm/allwinner/a10_gpio.c4
-rw-r--r--sys/arm/broadcom/bcm2835/bcm2835_gpio.c5
-rw-r--r--sys/arm/freescale/imx/imx_gpio.c4
-rw-r--r--sys/arm/freescale/vybrid/vf_gpio.c4
-rw-r--r--sys/arm/lpc/lpc_gpio.c4
-rw-r--r--sys/arm/rockchip/rk30xx_gpio.c4
-rw-r--r--sys/arm/samsung/exynos/exynos5_pad.c4
-rw-r--r--sys/arm/ti/ti_gpio.c4
-rw-r--r--sys/arm/xilinx/zy7_gpio.c4
-rw-r--r--sys/arm/xscale/ixp425/avila_gpio.c5
-rw-r--r--sys/arm/xscale/ixp425/cambria_gpio.c5
-rw-r--r--sys/mips/atheros/ar71xx_gpio.c5
-rw-r--r--sys/mips/cavium/octeon_gpio.c5
-rw-r--r--sys/mips/rt305x/rt305x_gpio.c5
-rw-r--r--sys/powerpc/wii/wii_gpio.c4
15 files changed, 35 insertions, 31 deletions
diff --git a/sys/arm/allwinner/a10_gpio.c b/sys/arm/allwinner/a10_gpio.c
index b93bbc9..a532106 100644
--- a/sys/arm/allwinner/a10_gpio.c
+++ b/sys/arm/allwinner/a10_gpio.c
@@ -474,8 +474,8 @@ a10_gpio_attach(device_t dev)
}
sc->sc_gpio_npins = i;
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
a10_gpio_sc = sc;
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_gpio.c b/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
index 9881385..a8903ee 100644
--- a/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
+++ b/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
@@ -747,8 +747,9 @@ bcm_gpio_attach(device_t dev)
bcm_gpio_sysctl_init(sc);
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
+
return (bus_generic_attach(dev));
fail:
diff --git a/sys/arm/freescale/imx/imx_gpio.c b/sys/arm/freescale/imx/imx_gpio.c
index 95e24ca..b365489 100644
--- a/sys/arm/freescale/imx/imx_gpio.c
+++ b/sys/arm/freescale/imx/imx_gpio.c
@@ -435,8 +435,8 @@ imx51_gpio_attach(device_t dev)
"imx_gpio%d.%d", device_get_unit(dev), i);
}
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
return (bus_generic_attach(dev));
}
diff --git a/sys/arm/freescale/vybrid/vf_gpio.c b/sys/arm/freescale/vybrid/vf_gpio.c
index 686e05c..b83a877 100644
--- a/sys/arm/freescale/vybrid/vf_gpio.c
+++ b/sys/arm/freescale/vybrid/vf_gpio.c
@@ -146,8 +146,8 @@ vf_gpio_attach(device_t dev)
"vf_gpio%d.%d", device_get_unit(dev), i);
}
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
return (bus_generic_attach(dev));
}
diff --git a/sys/arm/lpc/lpc_gpio.c b/sys/arm/lpc/lpc_gpio.c
index b2310cb..d9536a7 100644
--- a/sys/arm/lpc/lpc_gpio.c
+++ b/sys/arm/lpc/lpc_gpio.c
@@ -192,8 +192,8 @@ lpc_gpio_attach(device_t dev)
lpc_gpio_sc = sc;
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
return (bus_generic_attach(dev));
}
diff --git a/sys/arm/rockchip/rk30xx_gpio.c b/sys/arm/rockchip/rk30xx_gpio.c
index 2a3288f..fc24947c 100644
--- a/sys/arm/rockchip/rk30xx_gpio.c
+++ b/sys/arm/rockchip/rk30xx_gpio.c
@@ -504,8 +504,8 @@ rk30_gpio_attach(device_t dev)
}
sc->sc_gpio_npins = i;
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
rk30_gpio_sc = sc;
diff --git a/sys/arm/samsung/exynos/exynos5_pad.c b/sys/arm/samsung/exynos/exynos5_pad.c
index c956e86..d00eddc 100644
--- a/sys/arm/samsung/exynos/exynos5_pad.c
+++ b/sys/arm/samsung/exynos/exynos5_pad.c
@@ -559,8 +559,8 @@ pad_attach(device_t dev)
"pad%d.%d", device_get_unit(dev), i);
}
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
return (bus_generic_attach(dev));
}
diff --git a/sys/arm/ti/ti_gpio.c b/sys/arm/ti/ti_gpio.c
index 83e06105..eb0c880 100644
--- a/sys/arm/ti/ti_gpio.c
+++ b/sys/arm/ti/ti_gpio.c
@@ -800,8 +800,8 @@ ti_gpio_attach(device_t dev)
}
/* Finish of the probe call */
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
return (bus_generic_attach(dev));
}
diff --git a/sys/arm/xilinx/zy7_gpio.c b/sys/arm/xilinx/zy7_gpio.c
index 77dc640..ac73c9f 100644
--- a/sys/arm/xilinx/zy7_gpio.c
+++ b/sys/arm/xilinx/zy7_gpio.c
@@ -329,8 +329,8 @@ zy7_gpio_attach(device_t dev)
/* Completely reset. */
zy7_gpio_hw_reset(sc);
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
return (bus_generic_attach(dev));
}
diff --git a/sys/arm/xscale/ixp425/avila_gpio.c b/sys/arm/xscale/ixp425/avila_gpio.c
index 8be9948..48f970d 100644
--- a/sys/arm/xscale/ixp425/avila_gpio.c
+++ b/sys/arm/xscale/ixp425/avila_gpio.c
@@ -318,8 +318,9 @@ avila_gpio_attach(device_t dev)
sc->sc_valid |= 1 << p->pin;
}
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
+
return (bus_generic_attach(dev));
#undef N
}
diff --git a/sys/arm/xscale/ixp425/cambria_gpio.c b/sys/arm/xscale/ixp425/cambria_gpio.c
index 18472cd..baa3483 100644
--- a/sys/arm/xscale/ixp425/cambria_gpio.c
+++ b/sys/arm/xscale/ixp425/cambria_gpio.c
@@ -447,8 +447,9 @@ cambria_gpio_attach(device_t dev)
cambria_gpio_pin_setflags(dev, pin, p->flags);
}
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
+
return (bus_generic_attach(dev));
}
diff --git a/sys/mips/atheros/ar71xx_gpio.c b/sys/mips/atheros/ar71xx_gpio.c
index d0a52ca..0e16332 100644
--- a/sys/mips/atheros/ar71xx_gpio.c
+++ b/sys/mips/atheros/ar71xx_gpio.c
@@ -441,8 +441,9 @@ ar71xx_gpio_attach(device_t dev)
ar71xx_gpio_pin_set(dev, j, 1);
}
}
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
+
return (bus_generic_attach(dev));
}
diff --git a/sys/mips/cavium/octeon_gpio.c b/sys/mips/cavium/octeon_gpio.c
index 788f0aa..26b42ea 100644
--- a/sys/mips/cavium/octeon_gpio.c
+++ b/sys/mips/cavium/octeon_gpio.c
@@ -441,8 +441,9 @@ octeon_gpio_attach(device_t dev)
}
}
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
+
return (bus_generic_attach(dev));
}
diff --git a/sys/mips/rt305x/rt305x_gpio.c b/sys/mips/rt305x/rt305x_gpio.c
index 1d68518..5f7defb 100644
--- a/sys/mips/rt305x/rt305x_gpio.c
+++ b/sys/mips/rt305x/rt305x_gpio.c
@@ -511,9 +511,8 @@ rt305x_gpio_attach(device_t dev)
}
#endif
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
-
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
return (bus_generic_attach(dev));
}
diff --git a/sys/powerpc/wii/wii_gpio.c b/sys/powerpc/wii/wii_gpio.c
index 78f6274..b9ecccb 100644
--- a/sys/powerpc/wii/wii_gpio.c
+++ b/sys/powerpc/wii/wii_gpio.c
@@ -182,8 +182,8 @@ wiigpio_attach(device_t dev)
"GPIO_PIN_INPUT" : "GPIO_PIN_OUTPUT");
#endif
}
- device_add_child(dev, "gpioc", device_get_unit(dev));
- device_add_child(dev, "gpiobus", device_get_unit(dev));
+ device_add_child(dev, "gpioc", -1);
+ device_add_child(dev, "gpiobus", -1);
/*
* We will be responsible for powering off the system.
*/
OpenPOWER on IntegriCloud