diff --git a/drivers/staging/fsl-mc/bus/Makefile b/drivers/staging/fsl-mc/bus/Makefile index bd09fc8cf650..25433a998478 100644 --- a/drivers/staging/fsl-mc/bus/Makefile +++ b/drivers/staging/fsl-mc/bus/Makefile @@ -5,15 +5,13 @@ # # This file is released under the GPLv2 # -obj-$(CONFIG_FSL_MC_BUS) += mc-bus-driver.o \ - mc-allocator-driver.o +obj-$(CONFIG_FSL_MC_BUS) += mc-bus-driver.o mc-bus-driver-objs := mc-bus.o \ mc-sys.o \ dprc.o \ dpmng.o \ - dprc-driver.o - -mc-allocator-driver-objs := mc-allocator.o \ - dpmcp.o \ - dpbp.o + dprc-driver.o \ + mc-allocator.o \ + dpmcp.o \ + dpbp.o diff --git a/drivers/staging/fsl-mc/bus/mc-allocator.c b/drivers/staging/fsl-mc/bus/mc-allocator.c index cc4a7d316990..e36235ddbe3e 100644 --- a/drivers/staging/fsl-mc/bus/mc-allocator.c +++ b/drivers/staging/fsl-mc/bus/mc-allocator.c @@ -562,8 +562,12 @@ static struct fsl_mc_driver fsl_mc_allocator_driver = { .remove = fsl_mc_allocator_remove, }; -module_fsl_mc_driver(fsl_mc_allocator_driver); +int __init fsl_mc_allocator_driver_init(void) +{ + return fsl_mc_driver_register(&fsl_mc_allocator_driver); +} -MODULE_AUTHOR("Freescale Semiconductor Inc."); -MODULE_DESCRIPTION("Freescale's MC object device allocator"); -MODULE_LICENSE("GPL"); +void __exit fsl_mc_allocator_driver_exit(void) +{ + fsl_mc_driver_unregister(&fsl_mc_allocator_driver); +} diff --git a/drivers/staging/fsl-mc/bus/mc-bus.c b/drivers/staging/fsl-mc/bus/mc-bus.c index d943d99ba992..b347db927484 100644 --- a/drivers/staging/fsl-mc/bus/mc-bus.c +++ b/drivers/staging/fsl-mc/bus/mc-bus.c @@ -730,8 +730,15 @@ static int __init fsl_mc_bus_driver_init(void) if (error < 0) goto error_cleanup_driver; + error = fsl_mc_allocator_driver_init(); + if (error < 0) + goto error_cleanup_dprc_driver; + return 0; +error_cleanup_dprc_driver: + dprc_driver_exit(); + error_cleanup_driver: platform_driver_unregister(&fsl_mc_bus_driver); @@ -750,6 +757,7 @@ static void __exit fsl_mc_bus_driver_exit(void) if (WARN_ON(!mc_dev_cache)) return; + fsl_mc_allocator_driver_exit(); dprc_driver_exit(); platform_driver_unregister(&fsl_mc_bus_driver); bus_unregister(&fsl_mc_bus_type); diff --git a/drivers/staging/fsl-mc/include/mc-private.h b/drivers/staging/fsl-mc/include/mc-private.h index 8e67075f43b2..c045f49f227e 100644 --- a/drivers/staging/fsl-mc/include/mc-private.h +++ b/drivers/staging/fsl-mc/include/mc-private.h @@ -102,6 +102,10 @@ int __init dprc_driver_init(void); void __exit dprc_driver_exit(void); +int __init fsl_mc_allocator_driver_init(void); + +void __exit fsl_mc_allocator_driver_exit(void); + int __must_check fsl_mc_resource_allocate(struct fsl_mc_bus *mc_bus, enum fsl_mc_pool_type pool_type, struct fsl_mc_resource