Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f76c8515 authored by Pierre Ossman's avatar Pierre Ossman
Browse files

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
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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);
+18 −0
Original line number Diff line number Diff line
@@ -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