1 /* SPDX-License-Identifier: GPL-2.0 */
5 #include <linux/platform_device.h>
6 #include <linux/types.h>
8 /* TMIO MMC platform flags */
11 * Some controllers can support a 2-byte block size when the bus width is
12 * configured in 4-bit mode.
14 #define TMIO_MMC_BLKSZ_2BYTES BIT(1)
16 /* Some controllers can support SDIO IRQ signalling */
17 #define TMIO_MMC_SDIO_IRQ BIT(2)
19 /* Some features are only available or tested on R-Car Gen2 or later */
20 #define TMIO_MMC_MIN_RCAR2 BIT(3)
23 * Some controllers require waiting for the SD bus to become idle before
24 * writing to some registers.
26 #define TMIO_MMC_HAS_IDLE_WAIT BIT(4)
29 * Use the busy timeout feature. Probably all TMIO versions support it. Yet,
30 * we don't have documentation for old variants, so we enable only known good
31 * variants with this flag. Can be removed once all variants are known good.
33 #define TMIO_MMC_USE_BUSY_TIMEOUT BIT(5)
35 /* Some controllers have CMD12 automatically issue/non-issue register */
36 #define TMIO_MMC_HAVE_CMD12_CTRL BIT(7)
38 /* Controller has some SDIO status bits which must be 1 */
39 #define TMIO_MMC_SDIO_STATUS_SETBITS BIT(8)
41 /* Some controllers have a 32-bit wide data port register */
42 #define TMIO_MMC_32BIT_DATA_PORT BIT(9)
44 /* Some controllers allows to set SDx actual clock */
45 #define TMIO_MMC_CLK_ACTUAL BIT(10)
47 /* Some controllers have a CBSY bit */
48 #define TMIO_MMC_HAVE_CBSY BIT(11)
50 struct tmio_mmc_data
{
54 unsigned long capabilities
;
55 unsigned long capabilities2
;
57 u32 ocr_mask
; /* available voltages */
58 dma_addr_t dma_rx_offset
;
59 unsigned int max_blk_count
;
60 unsigned short max_segs
;