12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- --- a/drivers/bcma/main.c
- +++ b/drivers/bcma/main.c
- @@ -668,11 +668,36 @@ static int bcma_device_uevent(struct dev
- core->id.rev, core->id.class);
- }
-
- -static int __init bcma_modinit(void)
- +static unsigned int bcma_bus_registered;
- +
- +/*
- + * If built-in, bus has to be registered early, before any driver calls
- + * bcma_driver_register.
- + * Otherwise registering driver would trigger BUG in driver_register.
- + */
- +static int __init bcma_init_bus_register(void)
- {
- int err;
-
- + if (bcma_bus_registered)
- + return 0;
- +
- err = bus_register(&bcma_bus_type);
- + if (!err)
- + bcma_bus_registered = 1;
- +
- + return err;
- +}
- +#ifndef MODULE
- +fs_initcall(bcma_init_bus_register);
- +#endif
- +
- +/* Main initialization has to be done with SPI/mtd/NAND/SPROM available */
- +static int __init bcma_modinit(void)
- +{
- + int err;
- +
- + err = bcma_init_bus_register();
- if (err)
- return err;
-
- @@ -691,7 +716,7 @@ static int __init bcma_modinit(void)
-
- return err;
- }
- -fs_initcall(bcma_modinit);
- +module_init(bcma_modinit);
-
- static void __exit bcma_modexit(void)
- {
|