Commit f76c8515 authored by Pierre Ossman's avatar Pierre Ossman

mmc: add SDIO driver handling

Add basic driver handling to the SDIO device model.
Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent e29a7d73
...@@ -67,6 +67,29 @@ void sdio_unregister_bus(void) ...@@ -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 { ...@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment