diff --git a/sys/arm/arm/generic_timer.c b/sys/arm/arm/generic_timer.c --- a/sys/arm/arm/generic_timer.c +++ b/sys/arm/arm/generic_timer.c @@ -574,15 +574,25 @@ return (0); } +static device_method_t arm_tmr_methods[] = { + DEVMETHOD(device_attach, arm_tmr_attach), + + DEVMETHOD_END, +}; + +DEFINE_CLASS_0(generic_timer, arm_tmr_driver, arm_tmr_methods, 0); + #ifdef FDT static device_method_t arm_tmr_fdt_methods[] = { DEVMETHOD(device_probe, arm_tmr_fdt_probe), - DEVMETHOD(device_attach, arm_tmr_attach), + { 0, 0 } }; -static DEFINE_CLASS_0(generic_timer, arm_tmr_fdt_driver, arm_tmr_fdt_methods, - sizeof(struct arm_tmr_softc)); +#define generic_timer_baseclasses generic_timer_fdt_baseclasses +DEFINE_CLASS_1(generic_timer, arm_tmr_fdt_driver, arm_tmr_fdt_methods, + sizeof(struct arm_tmr_softc), arm_tmr_driver); +#undef generic_timer_baseclasses EARLY_DRIVER_MODULE(timer, simplebus, arm_tmr_fdt_driver, 0, 0, BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE); @@ -594,12 +604,13 @@ static device_method_t arm_tmr_acpi_methods[] = { DEVMETHOD(device_identify, arm_tmr_acpi_identify), DEVMETHOD(device_probe, arm_tmr_acpi_probe), - DEVMETHOD(device_attach, arm_tmr_attach), { 0, 0 } }; -static DEFINE_CLASS_0(generic_timer, arm_tmr_acpi_driver, arm_tmr_acpi_methods, - sizeof(struct arm_tmr_softc)); +#define generic_timer_baseclasses generic_timer_acpi_baseclasses +DEFINE_CLASS_1(generic_timer, arm_tmr_acpi_driver, arm_tmr_acpi_methods, + sizeof(struct arm_tmr_softc), arm_tmr_driver); +#undef generic_timer_baseclasses EARLY_DRIVER_MODULE(timer, acpi, arm_tmr_acpi_driver, 0, 0, BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE);