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.
This commit is contained in:
parent
527e4e62ac
commit
8839e0e9f3
@ -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;
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user