Loading drivers/mmc/core/sdio_bus.c +23 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,29 @@ void sdio_unregister_bus(void) bus_unregister(&sdio_bus_type); } /** * sdio_register_driver - register a function driver * @drv: SDIO function driver */ int sdio_register_driver(struct sdio_driver *drv) { drv->drv.name = drv->name; drv->drv.bus = &sdio_bus_type; return driver_register(&drv->drv); } EXPORT_SYMBOL_GPL(sdio_register_driver); /** * sdio_unregister_driver - unregister a function driver * @drv: SDIO function driver */ void sdio_unregister_driver(struct sdio_driver *drv) { drv->drv.bus = &sdio_bus_type; driver_unregister(&drv->drv); } EXPORT_SYMBOL_GPL(sdio_unregister_driver); static void sdio_release_func(struct device *dev) { struct sdio_func *func = dev_to_sdio_func(dev); Loading include/linux/mmc/sdio_func.h +18 −0 Original line number Diff line number Diff line Loading @@ -31,5 +31,23 @@ struct sdio_func { #define sdio_func_id(f) ((f)->dev.bus_id) #define sdio_get_drvdata(f) dev_get_drvdata(&(f)->dev) #define sdio_set_drvdata(f,d) dev_set_drvdata(&(f)->dev, d) /* * SDIO function device driver */ struct sdio_driver { char *name; int (*probe)(struct sdio_func *); void (*remove)(struct sdio_func *); struct device_driver drv; }; extern int sdio_register_driver(struct sdio_driver *); extern void sdio_unregister_driver(struct sdio_driver *); #endif Loading
drivers/mmc/core/sdio_bus.c +23 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,29 @@ void sdio_unregister_bus(void) bus_unregister(&sdio_bus_type); } /** * sdio_register_driver - register a function driver * @drv: SDIO function driver */ int sdio_register_driver(struct sdio_driver *drv) { drv->drv.name = drv->name; drv->drv.bus = &sdio_bus_type; return driver_register(&drv->drv); } EXPORT_SYMBOL_GPL(sdio_register_driver); /** * sdio_unregister_driver - unregister a function driver * @drv: SDIO function driver */ void sdio_unregister_driver(struct sdio_driver *drv) { drv->drv.bus = &sdio_bus_type; driver_unregister(&drv->drv); } EXPORT_SYMBOL_GPL(sdio_unregister_driver); static void sdio_release_func(struct device *dev) { struct sdio_func *func = dev_to_sdio_func(dev); Loading
include/linux/mmc/sdio_func.h +18 −0 Original line number Diff line number Diff line Loading @@ -31,5 +31,23 @@ struct sdio_func { #define sdio_func_id(f) ((f)->dev.bus_id) #define sdio_get_drvdata(f) dev_get_drvdata(&(f)->dev) #define sdio_set_drvdata(f,d) dev_set_drvdata(&(f)->dev, d) /* * SDIO function device driver */ struct sdio_driver { char *name; int (*probe)(struct sdio_func *); void (*remove)(struct sdio_func *); struct device_driver drv; }; extern int sdio_register_driver(struct sdio_driver *); extern void sdio_unregister_driver(struct sdio_driver *); #endif