linux/drivers/mmc/host/meson-mx-sdhc.h

/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright (C) 2020 Martin Blumenstingl <[email protected]>
 */

#ifndef _MESON_MX_SDHC_H_
#define _MESON_MX_SDHC_H_

#include <linux/bitfield.h>

#define MESON_SDHC_ARGU

#define MESON_SDHC_SEND
	#define MESON_SDHC_SEND_CMD_INDEX
	#define MESON_SDHC_SEND_CMD_HAS_RESP
	#define MESON_SDHC_SEND_CMD_HAS_DATA
	#define MESON_SDHC_SEND_RESP_LEN
	#define MESON_SDHC_SEND_RESP_NO_CRC
	#define MESON_SDHC_SEND_DATA_DIR
	#define MESON_SDHC_SEND_DATA_STOP
	#define MESON_SDHC_SEND_R1B
	#define MESON_SDHC_SEND_TOTAL_PACK

#define MESON_SDHC_CTRL
	#define MESON_SDHC_CTRL_DAT_TYPE
	#define MESON_SDHC_CTRL_DDR_MODE
	#define MESON_SDHC_CTRL_TX_CRC_NOCHECK
	#define MESON_SDHC_CTRL_PACK_LEN
	#define MESON_SDHC_CTRL_RX_TIMEOUT
	#define MESON_SDHC_CTRL_RX_PERIOD
	#define MESON_SDHC_CTRL_RX_ENDIAN
	#define MESON_SDHC_CTRL_SDIO_IRQ_MODE
	#define MESON_SDHC_CTRL_DAT0_IRQ_SEL
	#define MESON_SDHC_CTRL_TX_ENDIAN

#define MESON_SDHC_STAT
	#define MESON_SDHC_STAT_CMD_BUSY
	#define MESON_SDHC_STAT_DAT3_0
	#define MESON_SDHC_STAT_CMD
	#define MESON_SDHC_STAT_RXFIFO_CNT
	#define MESON_SDHC_STAT_TXFIFO_CNT
	#define MESON_SDHC_STAT_DAT7_4

#define MESON_SDHC_CLKC
	#define MESON_SDHC_CLKC_CLK_DIV
	#define MESON_SDHC_CLKC_CLK_JIC
	#define MESON_SDHC_CLKC_MEM_PWR_OFF

#define MESON_SDHC_ADDR

#define MESON_SDHC_PDMA
	#define MESON_SDHC_PDMA_DMA_MODE
	#define MESON_SDHC_PDMA_PIO_RDRESP
	#define MESON_SDHC_PDMA_DMA_URGENT
	#define MESON_SDHC_PDMA_WR_BURST
	#define MESON_SDHC_PDMA_RD_BURST
	#define MESON_SDHC_PDMA_RXFIFO_TH
	#define MESON_SDHC_PDMA_TXFIFO_TH
	#define MESON_SDHC_PDMA_RXFIFO_MANUAL_FLUSH
	#define MESON_SDHC_PDMA_TXFIFO_FILL

#define MESON_SDHC_MISC
	#define MESON_SDHC_MISC_WCRC_ERR_PATT
	#define MESON_SDHC_MISC_WCRC_OK_PATT
	#define MESON_SDHC_MISC_BURST_NUM
	#define MESON_SDHC_MISC_THREAD_ID
	#define MESON_SDHC_MISC_MANUAL_STOP
	#define MESON_SDHC_MISC_TXSTART_THRES

#define MESON_SDHC_DATA

#define MESON_SDHC_ICTL
	#define MESON_SDHC_ICTL_RESP_OK
	#define MESON_SDHC_ICTL_RESP_TIMEOUT
	#define MESON_SDHC_ICTL_RESP_ERR_CRC
	#define MESON_SDHC_ICTL_RESP_OK_NOCLEAR
	#define MESON_SDHC_ICTL_DATA_1PACK_OK
	#define MESON_SDHC_ICTL_DATA_TIMEOUT
	#define MESON_SDHC_ICTL_DATA_ERR_CRC
	#define MESON_SDHC_ICTL_DATA_XFER_OK
	#define MESON_SDHC_ICTL_RX_HIGHER
	#define MESON_SDHC_ICTL_RX_LOWER
	#define MESON_SDHC_ICTL_DAT1_IRQ
	#define MESON_SDHC_ICTL_DMA_DONE
	#define MESON_SDHC_ICTL_RXFIFO_FULL
	#define MESON_SDHC_ICTL_TXFIFO_EMPTY
	#define MESON_SDHC_ICTL_ADDI_DAT1_IRQ
	#define MESON_SDHC_ICTL_ALL_IRQS
	#define MESON_SDHC_ICTL_DAT1_IRQ_DELAY

#define MESON_SDHC_ISTA
	#define MESON_SDHC_ISTA_RESP_OK
	#define MESON_SDHC_ISTA_RESP_TIMEOUT
	#define MESON_SDHC_ISTA_RESP_ERR_CRC
	#define MESON_SDHC_ISTA_RESP_OK_NOCLEAR
	#define MESON_SDHC_ISTA_DATA_1PACK_OK
	#define MESON_SDHC_ISTA_DATA_TIMEOUT
	#define MESON_SDHC_ISTA_DATA_ERR_CRC
	#define MESON_SDHC_ISTA_DATA_XFER_OK
	#define MESON_SDHC_ISTA_RX_HIGHER
	#define MESON_SDHC_ISTA_RX_LOWER
	#define MESON_SDHC_ISTA_DAT1_IRQ
	#define MESON_SDHC_ISTA_DMA_DONE
	#define MESON_SDHC_ISTA_RXFIFO_FULL
	#define MESON_SDHC_ISTA_TXFIFO_EMPTY
	#define MESON_SDHC_ISTA_ADDI_DAT1_IRQ
	#define MESON_SDHC_ISTA_ALL_IRQS

#define MESON_SDHC_SRST
	#define MESON_SDHC_SRST_MAIN_CTRL
	#define MESON_SDHC_SRST_RXFIFO
	#define MESON_SDHC_SRST_TXFIFO
	#define MESON_SDHC_SRST_DPHY_RX
	#define MESON_SDHC_SRST_DPHY_TX
	#define MESON_SDHC_SRST_DMA_IF

#define MESON_SDHC_ESTA
	#define MESON_SDHC_ESTA_11_13

#define MESON_SDHC_ENHC
	#define MESON_SDHC_ENHC_MESON8M2_WRRSP_MODE
	#define MESON_SDHC_ENHC_MESON8M2_CHK_WRRSP
	#define MESON_SDHC_ENHC_MESON8M2_CHK_DMA
	#define MESON_SDHC_ENHC_MESON8M2_DEBUG
	#define MESON_SDHC_ENHC_MESON6_RX_TIMEOUT
	#define MESON_SDHC_ENHC_MESON6_DMA_RD_RESP
	#define MESON_SDHC_ENHC_MESON6_DMA_WR_RESP
	#define MESON_SDHC_ENHC_SDIO_IRQ_PERIOD
	#define MESON_SDHC_ENHC_RXFIFO_TH
	#define MESON_SDHC_ENHC_TXFIFO_TH

#define MESON_SDHC_CLK2
	#define MESON_SDHC_CLK2_RX_CLK_PHASE
	#define MESON_SDHC_CLK2_SD_CLK_PHASE

struct clk_bulk_data;

int meson_mx_sdhc_register_clkc(struct device *dev, void __iomem *base,
				struct clk_bulk_data *clk_bulk_data);

#endif /* _MESON_MX_SDHC_H_ */