mmc: add SDIO driver handling
Add basic driver handling to the SDIO device model. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
This commit is contained in:
parent
e29a7d73f4
commit
f76c85154d
2 changed files with 41 additions and 0 deletions
|
@ -67,6 +67,29 @@ void sdio_unregister_bus(void)
|
||||||
bus_unregister(&sdio_bus_type);
|
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)
|
static void sdio_release_func(struct device *dev)
|
||||||
{
|
{
|
||||||
struct sdio_func *func = dev_to_sdio_func(dev);
|
struct sdio_func *func = dev_to_sdio_func(dev);
|
||||||
|
|
|
@ -31,5 +31,23 @@ struct sdio_func {
|
||||||
|
|
||||||
#define sdio_func_id(f) ((f)->dev.bus_id)
|
#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
|
#endif
|
||||||
|
|
||||||
|
|
Reference in a new issue