#include <linux/align.h>
#include <linux/array_size.h>
#include <linux/bits.h>
#include <linux/build_bug.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/dev_printk.h>
#include <linux/device.h>
#include <linux/dma-mapping.h>
#include <linux/err.h>
#include <linux/math.h>
#include <linux/mfd/syscon.h>
#include <linux/minmax.h>
#include <linux/mmc/card.h>
#include <linux/mmc/host.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/pinctrl/consumer.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/reset.h>
#include <linux/sizes.h>
#include <linux/types.h>
#include "sdhci-pltfm.h"
#include "sdhci.h"
#define MA35_SYS_MISCFCR0 …
#define MA35_SDHCI_MSHCCTL …
#define MA35_SDHCI_MBIUCTL …
#define MA35_SDHCI_CMD_CONFLICT_CHK …
#define MA35_SDHCI_INCR_MSK …
#define MA35_SDHCI_INCR16 …
#define MA35_SDHCI_INCR8 …
struct ma35_priv { … };
struct ma35_restore_data { … };
static const struct ma35_restore_data restore_data[] = …;
static void ma35_adma_write_desc(struct sdhci_host *host, void **desc, dma_addr_t addr, int len,
unsigned int cmd)
{ … }
static void ma35_set_clock(struct sdhci_host *host, unsigned int clock)
{ … }
static int ma35_start_signal_voltage_switch(struct mmc_host *mmc, struct mmc_ios *ios)
{ … }
static void ma35_voltage_switch(struct sdhci_host *host)
{ … }
static int ma35_execute_tuning(struct mmc_host *mmc, u32 opcode)
{ … }
static const struct sdhci_ops sdhci_ma35_ops = …;
static const struct sdhci_pltfm_data sdhci_ma35_pdata = …;
static int ma35_probe(struct platform_device *pdev)
{ … }
static void ma35_disable_card_clk(struct sdhci_host *host)
{ … }
static void ma35_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id sdhci_ma35_dt_ids[] = …;
static struct platform_driver sdhci_ma35_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;