linux/drivers/mmc/host/litex_mmc.c

// SPDX-License-Identifier: GPL-2.0
/*
 * LiteX LiteSDCard driver
 *
 * Copyright (C) 2019-2020 Antmicro <[email protected]>
 * Copyright (C) 2019-2020 Kamil Rakoczy <[email protected]>
 * Copyright (C) 2019-2020 Maciej Dudek <[email protected]>
 * Copyright (C) 2020 Paul Mackerras <[email protected]>
 * Copyright (C) 2020-2022 Gabriel Somlo <[email protected]>
 */

#include <linux/bits.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/dma-mapping.h>
#include <linux/interrupt.h>
#include <linux/iopoll.h>
#include <linux/litex.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>

#include <linux/mmc/host.h>
#include <linux/mmc/mmc.h>
#include <linux/mmc/sd.h>

#define LITEX_PHY_CARDDETECT
#define LITEX_PHY_CLOCKERDIV
#define LITEX_PHY_INITIALIZE
#define LITEX_PHY_WRITESTATUS
#define LITEX_CORE_CMDARG
#define LITEX_CORE_CMDCMD
#define LITEX_CORE_CMDSND
#define LITEX_CORE_CMDRSP
#define LITEX_CORE_CMDEVT
#define LITEX_CORE_DATEVT
#define LITEX_CORE_BLKLEN
#define LITEX_CORE_BLKCNT
#define LITEX_BLK2MEM_BASE
#define LITEX_BLK2MEM_LEN
#define LITEX_BLK2MEM_ENA
#define LITEX_BLK2MEM_DONE
#define LITEX_BLK2MEM_LOOP
#define LITEX_MEM2BLK_BASE
#define LITEX_MEM2BLK_LEN
#define LITEX_MEM2BLK_ENA
#define LITEX_MEM2BLK_DONE
#define LITEX_MEM2BLK_LOOP
#define LITEX_MEM2BLK
#define LITEX_IRQ_STATUS
#define LITEX_IRQ_PENDING
#define LITEX_IRQ_ENABLE

#define SD_CTL_DATA_XFER_NONE
#define SD_CTL_DATA_XFER_READ
#define SD_CTL_DATA_XFER_WRITE

#define SD_CTL_RESP_NONE
#define SD_CTL_RESP_SHORT
#define SD_CTL_RESP_LONG
#define SD_CTL_RESP_SHORT_BUSY

#define SD_BIT_DONE
#define SD_BIT_WR_ERR
#define SD_BIT_TIMEOUT
#define SD_BIT_CRC_ERR

#define SD_SLEEP_US
#define SD_TIMEOUT_US

#define SDIRQ_CARD_DETECT
#define SDIRQ_SD_TO_MEM_DONE
#define SDIRQ_MEM_TO_SD_DONE
#define SDIRQ_CMD_DONE

struct litex_mmc_host {};

static int litex_mmc_sdcard_wait_done(void __iomem *reg, struct device *dev)
{}

static int litex_mmc_send_cmd(struct litex_mmc_host *host,
			      u8 cmd, u32 arg, u8 response_len, u8 transfer)
{}

static int litex_mmc_send_app_cmd(struct litex_mmc_host *host)
{}

static int litex_mmc_send_set_bus_w_cmd(struct litex_mmc_host *host, u32 width)
{}

static int litex_mmc_set_bus_width(struct litex_mmc_host *host)
{}

static int litex_mmc_get_cd(struct mmc_host *mmc)
{}

static irqreturn_t litex_mmc_interrupt(int irq, void *arg)
{}

static u32 litex_mmc_response_len(struct mmc_command *cmd)
{}

static void litex_mmc_do_dma(struct litex_mmc_host *host, struct mmc_data *data,
			     unsigned int *len, bool *direct, u8 *transfer)
{}

static void litex_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
{}

static void litex_mmc_setclk(struct litex_mmc_host *host, unsigned int freq)
{}

static void litex_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
{}

static const struct mmc_host_ops litex_mmc_ops =;

static int litex_mmc_irq_init(struct platform_device *pdev,
			      struct litex_mmc_host *host)
{}

static void litex_mmc_free_host_wrapper(void *mmc)
{}

static int litex_mmc_probe(struct platform_device *pdev)
{}

static void litex_mmc_remove(struct platform_device *pdev)
{}

static const struct of_device_id litex_match[] =;
MODULE_DEVICE_TABLE(of, litex_match);

static struct platform_driver litex_mmc_driver =;
module_platform_driver();

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_LICENSE();