#include <linux/err.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/mmc/card.h>
#include <linux/mmc/host.h>
#include <linux/platform_data/pxa_sdhci.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/pm.h>
#include <linux/pm_runtime.h>
#include <linux/mbus.h>
#include "sdhci.h"
#include "sdhci-pltfm.h"
#define PXAV3_RPM_DELAY_MS …
#define SD_CLOCK_BURST_SIZE_SETUP …
#define SDCLK_SEL …
#define SDCLK_DELAY_SHIFT …
#define SDCLK_DELAY_MASK …
#define SD_CFG_FIFO_PARAM …
#define SDCFG_GEN_PAD_CLK_ON …
#define SDCFG_GEN_PAD_CLK_CNT_MASK …
#define SDCFG_GEN_PAD_CLK_CNT_SHIFT …
#define SD_SPI_MODE …
#define SD_CE_ATA_1 …
#define SD_CE_ATA_2 …
#define SDCE_MISC_INT …
#define SDCE_MISC_INT_EN …
struct sdhci_pxa { … };
#define SDHCI_WINDOW_CTRL(i) …
#define SDHCI_WINDOW_BASE(i) …
#define SDHCI_MAX_WIN_NUM …
#define SDIO3_CONF_CLK_INV …
#define SDIO3_CONF_SD_FB_CLK …
static int mv_conf_mbus_windows(struct platform_device *pdev,
const struct mbus_dram_target_info *dram)
{ … }
static int armada_38x_quirks(struct platform_device *pdev,
struct sdhci_host *host)
{ … }
static void pxav3_reset(struct sdhci_host *host, u8 mask)
{ … }
#define MAX_WAIT_COUNT …
static void pxav3_gen_init_74_clocks(struct sdhci_host *host, u8 power_mode)
{ … }
static void pxav3_set_uhs_signaling(struct sdhci_host *host, unsigned int uhs)
{ … }
static void pxav3_set_power(struct sdhci_host *host, unsigned char mode,
unsigned short vdd)
{ … }
static const struct sdhci_ops pxav3_sdhci_ops = …;
static const struct sdhci_pltfm_data sdhci_pxav3_pdata = …;
#ifdef CONFIG_OF
static const struct of_device_id sdhci_pxav3_of_match[] = …;
MODULE_DEVICE_TABLE(of, sdhci_pxav3_of_match);
static struct sdhci_pxa_platdata *pxav3_get_mmc_pdata(struct device *dev)
{ … }
#else
static inline struct sdhci_pxa_platdata *pxav3_get_mmc_pdata(struct device *dev)
{
return NULL;
}
#endif
static int sdhci_pxav3_probe(struct platform_device *pdev)
{ … }
static void sdhci_pxav3_remove(struct platform_device *pdev)
{ … }
#ifdef CONFIG_PM_SLEEP
static int sdhci_pxav3_suspend(struct device *dev)
{ … }
static int sdhci_pxav3_resume(struct device *dev)
{ … }
#endif
#ifdef CONFIG_PM
static int sdhci_pxav3_runtime_suspend(struct device *dev)
{ … }
static int sdhci_pxav3_runtime_resume(struct device *dev)
{ … }
#endif
static const struct dev_pm_ops sdhci_pxav3_pmops = …;
static struct platform_driver sdhci_pxav3_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;