#include <linux/export.h>
#include <linux/device.h>
#include <linux/err.h>
#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/of.h>
#include <linux/pm_runtime.h>
#include <linux/sysfs.h>
#include <linux/mmc/card.h>
#include <linux/mmc/host.h>
#include "core.h"
#include "card.h"
#include "host.h"
#include "sdio_cis.h"
#include "bus.h"
#define to_mmc_driver(d) …
static ssize_t type_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(type);
static struct attribute *mmc_dev_attrs[] = …;
ATTRIBUTE_GROUPS(…);
static int
mmc_bus_uevent(const struct device *dev, struct kobj_uevent_env *env)
{ … }
static int mmc_bus_probe(struct device *dev)
{ … }
static void mmc_bus_remove(struct device *dev)
{ … }
static void mmc_bus_shutdown(struct device *dev)
{ … }
#ifdef CONFIG_PM_SLEEP
static int mmc_bus_suspend(struct device *dev)
{ … }
static int mmc_bus_resume(struct device *dev)
{ … }
#endif
#ifdef CONFIG_PM
static int mmc_runtime_suspend(struct device *dev)
{ … }
static int mmc_runtime_resume(struct device *dev)
{ … }
#endif
static const struct dev_pm_ops mmc_bus_pm_ops = …;
static const struct bus_type mmc_bus_type = …;
int mmc_register_bus(void)
{ … }
void mmc_unregister_bus(void)
{ … }
int mmc_register_driver(struct mmc_driver *drv)
{ … }
EXPORT_SYMBOL(…);
void mmc_unregister_driver(struct mmc_driver *drv)
{ … }
EXPORT_SYMBOL(…);
static void mmc_release_card(struct device *dev)
{ … }
struct mmc_card *mmc_alloc_card(struct mmc_host *host, const struct device_type *type)
{ … }
int mmc_add_card(struct mmc_card *card)
{ … }
void mmc_remove_card(struct mmc_card *card)
{ … }