#include <linux/err.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/clk.h>
#include <linux/module.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/of.h>
#include <linux/mmc/sdio.h>
#include <linux/mmc/mmc.h>
#include <linux/pinctrl/consumer.h>
#include "sdhci.h"
#include "sdhci-pltfm.h"
#define SD_FIFO_PARAM …
#define DIS_PAD_SD_CLK_GATE …
#define CLK_GATE_ON …
#define CLK_GATE_CTL …
#define CLK_GATE_SETTING_BITS …
#define SD_CLOCK_BURST_SIZE_SETUP …
#define SDCLK_SEL_SHIFT …
#define SDCLK_SEL_MASK …
#define SDCLK_DELAY_SHIFT …
#define SDCLK_DELAY_MASK …
#define SD_CE_ATA_2 …
#define MMC_CARD …
#define MMC_WIDTH …
struct sdhci_pxav2_host { … };
static void pxav2_reset(struct sdhci_host *host, u8 mask)
{ … }
static u16 pxav1_readw(struct sdhci_host *host, int reg)
{ … }
static u32 pxav1_irq(struct sdhci_host *host, u32 intmask)
{ … }
static void pxav1_request_done(struct sdhci_host *host, struct mmc_request *mrq)
{ … }
static void pxav2_mmc_set_bus_width(struct sdhci_host *host, int width)
{ … }
struct sdhci_pxa_variant { … };
static const struct sdhci_ops pxav1_sdhci_ops = …;
static const struct sdhci_pxa_variant __maybe_unused pxav1_variant = …;
static const struct sdhci_ops pxav2_sdhci_ops = …;
static const struct sdhci_pxa_variant pxav2_variant = …;
#ifdef CONFIG_OF
static const struct of_device_id sdhci_pxav2_of_match[] = …;
MODULE_DEVICE_TABLE(of, sdhci_pxav2_of_match);
static struct sdhci_pxa_platdata *pxav2_get_mmc_pdata(struct device *dev)
{ … }
#else
static inline struct sdhci_pxa_platdata *pxav2_get_mmc_pdata(struct device *dev)
{
return NULL;
}
#endif
static int sdhci_pxav2_probe(struct platform_device *pdev)
{ … }
static struct platform_driver sdhci_pxav2_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;