#include <linux/delay.h>
#include <linux/pci.h>
#include <linux/module.h>
#include <linux/io.h>
#include <linux/pm.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <linux/mmc/host.h>
#include <linux/mmc/mmc.h>
#include <linux/alcor_pci.h>
enum alcor_cookie { … };
struct alcor_pll_conf { … };
struct alcor_sdmmc_host { … };
static const struct alcor_pll_conf alcor_pll_cfg[] = …;
static inline void alcor_rmw8(struct alcor_sdmmc_host *host, unsigned int addr,
u8 clear, u8 set)
{ … }
static inline void alcor_mask_sd_irqs(struct alcor_sdmmc_host *host)
{ … }
static inline void alcor_unmask_sd_irqs(struct alcor_sdmmc_host *host)
{ … }
static void alcor_reset(struct alcor_sdmmc_host *host, u8 val)
{ … }
static void alcor_data_set_dma(struct alcor_sdmmc_host *host)
{ … }
static void alcor_trigger_data_transfer(struct alcor_sdmmc_host *host)
{ … }
static void alcor_trf_block_pio(struct alcor_sdmmc_host *host, bool read)
{ … }
static void alcor_prepare_sg_miter(struct alcor_sdmmc_host *host)
{ … }
static void alcor_prepare_data(struct alcor_sdmmc_host *host,
struct mmc_command *cmd)
{ … }
static void alcor_send_cmd(struct alcor_sdmmc_host *host,
struct mmc_command *cmd, bool set_timeout)
{ … }
static void alcor_request_complete(struct alcor_sdmmc_host *host,
bool cancel_timeout)
{ … }
static void alcor_finish_data(struct alcor_sdmmc_host *host)
{ … }
static void alcor_err_irq(struct alcor_sdmmc_host *host, u32 intmask)
{ … }
static int alcor_cmd_irq_done(struct alcor_sdmmc_host *host, u32 intmask)
{ … }
static void alcor_cmd_irq_thread(struct alcor_sdmmc_host *host, u32 intmask)
{ … }
static int alcor_data_irq_done(struct alcor_sdmmc_host *host, u32 intmask)
{ … }
static void alcor_data_irq_thread(struct alcor_sdmmc_host *host, u32 intmask)
{ … }
static void alcor_cd_irq(struct alcor_sdmmc_host *host, u32 intmask)
{ … }
static irqreturn_t alcor_irq_thread(int irq, void *d)
{ … }
static irqreturn_t alcor_irq(int irq, void *d)
{ … }
static void alcor_set_clock(struct alcor_sdmmc_host *host, unsigned int clock)
{ … }
static void alcor_set_timing(struct mmc_host *mmc, struct mmc_ios *ios)
{ … }
static void alcor_set_bus_width(struct mmc_host *mmc, struct mmc_ios *ios)
{ … }
static int alcor_card_busy(struct mmc_host *mmc)
{ … }
static int alcor_get_cd(struct mmc_host *mmc)
{ … }
static int alcor_get_ro(struct mmc_host *mmc)
{ … }
static void alcor_request(struct mmc_host *mmc, struct mmc_request *mrq)
{ … }
static void alcor_pre_req(struct mmc_host *mmc,
struct mmc_request *mrq)
{ … }
static void alcor_post_req(struct mmc_host *mmc,
struct mmc_request *mrq,
int err)
{ … }
static void alcor_set_power_mode(struct mmc_host *mmc, struct mmc_ios *ios)
{ … }
static void alcor_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
{ … }
static int alcor_signal_voltage_switch(struct mmc_host *mmc,
struct mmc_ios *ios)
{ … }
static const struct mmc_host_ops alcor_sdc_ops = …;
static void alcor_timeout_timer(struct work_struct *work)
{ … }
static void alcor_hw_init(struct alcor_sdmmc_host *host)
{ … }
static void alcor_hw_uninit(struct alcor_sdmmc_host *host)
{ … }
static void alcor_init_mmc(struct alcor_sdmmc_host *host)
{ … }
static int alcor_pci_sdmmc_drv_probe(struct platform_device *pdev)
{ … }
static void alcor_pci_sdmmc_drv_remove(struct platform_device *pdev)
{ … }
#ifdef CONFIG_PM_SLEEP
static int alcor_pci_sdmmc_suspend(struct device *dev)
{ … }
static int alcor_pci_sdmmc_resume(struct device *dev)
{ … }
#endif
static SIMPLE_DEV_PM_OPS(alcor_mmc_pm_ops, alcor_pci_sdmmc_suspend,
alcor_pci_sdmmc_resume);
static const struct platform_device_id alcor_pci_sdmmc_ids[] = …;
MODULE_DEVICE_TABLE(platform, alcor_pci_sdmmc_ids);
static struct platform_driver alcor_pci_sdmmc_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;