coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
msdc.h File Reference
Include dependency graph for msdc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  msdc_ctrlr
 

Macros

#define MSDC_CFG   0x0
 
#define MSDC_IOCON   0x04
 
#define MSDC_PS   0x08
 
#define MSDC_INT   0x0c
 
#define MSDC_INTEN   0x10
 
#define MSDC_FIFOCS   0x14
 
#define MSDC_TXDATA   0x18
 
#define MSDC_RXDATA   0x1c
 
#define SDC_CFG   0x30
 
#define SDC_CMD   0x34
 
#define SDC_ARG   0x38
 
#define SDC_STS   0x3c
 
#define SDC_RESP0   0x40
 
#define SDC_RESP1   0x44
 
#define SDC_RESP2   0x48
 
#define SDC_RESP3   0x4c
 
#define SDC_BLK_NUM   0x50
 
#define SDC_ADV_CFG0   0x64
 
#define EMMC_IOCON   0x7c
 
#define SDC_ACMD_RESP   0x80
 
#define DMA_SA_H4BIT   0x8c
 
#define MSDC_DMA_SA   0x90
 
#define MSDC_DMA_CTRL   0x98
 
#define MSDC_DMA_CFG   0x9c
 
#define MSDC_PATCH_BIT   0xb0
 
#define MSDC_PATCH_BIT1   0xb4
 
#define MSDC_PATCH_BIT2   0xb8
 
#define MSDC_PAD_TUNE   0xec
 
#define MSDC_PAD_TUNE0   0xf0
 
#define PAD_DS_TUNE   0x188
 
#define PAD_CMD_TUNE   0x18c
 
#define EMMC51_CFG0   0x204
 
#define EMMC50_CFG0   0x208
 
#define EMMC50_CFG1   0x20c
 
#define EMMC50_CFG3   0x220
 
#define SDC_FIFO_CFG   0x228
 
#define EMMC_TOP_CONTROL   0x00
 
#define EMMC_TOP_CMD   0x04
 
#define EMMC50_PAD_DS_TUNE   0x0c
 
#define MSDC_CFG_MODE   (0x1 << 0) /* RW */
 
#define MSDC_CFG_CKPDN   (0x1 << 1) /* RW */
 
#define MSDC_CFG_RST   (0x1 << 2) /* RW */
 
#define MSDC_CFG_PIO   (0x1 << 3) /* RW */
 
#define MSDC_CFG_CKSTB   (0x1 << 7) /* R */
 
#define MSDC_IOCON_DDLSEL   (0x1 << 3) /* RW */
 
#define MSDC_INT_CMDRDY   (0x1 << 8) /* W1C */
 
#define MSDC_INT_CMDTMO   (0x1 << 9) /* W1C */
 
#define MSDC_INT_RSPCRCERR   (0x1 << 10) /* W1C */
 
#define MSDC_FIFOCS_RXCNT   (0xff << 0) /* R */
 
#define MSDC_FIFOCS_TXCNT   (0xff << 16) /* R */
 
#define MSDC_FIFOCS_CLR   (0x1 << 31) /* RW */
 
#define SDC_CFG_BUSWIDTH   (0x3 << 16) /* RW */
 
#define SDC_CFG_SDIO   (0x1 << 19) /* RW */
 
#define SDC_CFG_SDIOIDE   (0x1 << 20) /* RW */
 
#define SDC_CFG_DTOC   (0xff << 24) /* RW */
 
#define SDC_CMD_CMD_S   0
 
#define SDC_CMD_CMD_M   (0x3f << SDC_CMD_CMD_S)
 
#define SDC_CMD_RSPTYP_S   7
 
#define SDC_CMD_RSPTYP_M   (0x7 << SDC_CMD_RSPTYP_S)
 
#define SDC_CMD_DTYPE_S   11
 
#define SDC_CMD_DTYPE_M   (0x3 << SDC_CMD_DTYPE_S)
 
#define SDC_CMD_WR   (1 << 13)
 
#define SDC_CMD_STOP   (1 << 14)
 
#define SDC_CMD_BLK_LEN_S   16
 
#define SDC_CMD_BLK_LEN_M   (0xfff << SDC_CMD_BLK_LEN_S)
 
#define SDC_STS_SDCBUSY   (0x1 << 0) /* RW */
 
#define SDC_STS_CMDBUSY   (0x1 << 1) /* RW */
 
#define SDC_DAT1_IRQ_TRIGGER   (0x1 << 19) /* RW */
 
#define SDC_RX_ENHANCE_EN   (0x1 << 20) /* RW */
 
#define MSDC_CKGEN_MSDC_DLY_SEL   (0x1f << 10)
 
#define MSDC_PATCH_BIT1_STOP_DLY   (0xf << 8) /* RW */
 
#define MSDC_PATCH_BIT2_CFGRESP   (0x1 << 15) /* RW */
 
#define MSDC_PATCH_BIT2_CFGCRCSTS   (0x1 << 28) /* RW */
 
#define MSDC_PB2_RESPWAIT   (0x3 << 2) /* RW */
 
#define MSDC_PAD_TUNE_RD_SEL   (0x1 << 13) /* RW */
 
#define MSDC_PAD_TUNE_CMD_SEL   (0x1 << 21) /* RW */
 
#define EMMC50_CFG_CFCSTS_SEL   (0x1 << 4) /* RW */
 
#define SDC_FIFO_CFG_WRVALIDSEL   (0x1 << 24) /* RW */
 
#define SDC_FIFO_CFG_RDVALIDSEL   (0x1 << 25) /* RW */
 
#define PAD_DAT_RD_RXDLY_SEL   (0x1 << 13) /* RW */
 
#define DATA_K_VALUE_SEL   (0x1 << 14) /* RW */
 
#define SDC_RX_ENH_EN   (0x1 << 15) /* TW */
 
#define PAD_CMD_RD_RXDLY_SEL   (0x1 << 11) /* RW */
 
#define CMD_TIMEOUT_MS   (5 * 100) /* 500ms */
 
#define MSDC_TIMEOUT_US   (1000 * 1000) /* 1s */
 
#define MSDC_BUS_1BITS   0x0
 
#define MSDC_BUS_4BITS   0x1
 
#define MSDC_BUS_8BITS   0x2
 
#define MSDC_SUCCESS   0x0
 
#define MSDC_NOT_READY   0x1
 
#define EIO   5 /* I/O error */
 
#define ETIMEDOUT   110 /* I/O timed out */
 
#define CMD_INTS_MASK    (MSDC_INT_CMDRDY | MSDC_INT_RSPCRCERR | MSDC_INT_CMDTMO)
 
#define msdc_debug(format...)   printk(BIOS_DEBUG, format)
 
#define msdc_trace(format...)   printk(BIOS_DEBUG, format)
 
#define msdc_error(format...)   printk(BIOS_ERR, format)
 

Functions

int mtk_emmc_early_init (void *base, void *top_base)
 
void mtk_msdc_configure_emmc (bool is_early_init)
 
void mtk_msdc_configure_sdcard (void)
 

Macro Definition Documentation

◆ CMD_INTS_MASK

#define CMD_INTS_MASK    (MSDC_INT_CMDRDY | MSDC_INT_RSPCRCERR | MSDC_INT_CMDTMO)

Definition at line 150 of file msdc.h.

◆ CMD_TIMEOUT_MS

#define CMD_TIMEOUT_MS   (5 * 100) /* 500ms */

Definition at line 136 of file msdc.h.

◆ DATA_K_VALUE_SEL

#define DATA_K_VALUE_SEL   (0x1 << 14) /* RW */

Definition at line 130 of file msdc.h.

◆ DMA_SA_H4BIT

#define DMA_SA_H4BIT   0x8c

Definition at line 32 of file msdc.h.

◆ EIO

#define EIO   5 /* I/O error */

Definition at line 147 of file msdc.h.

◆ EMMC50_CFG0

#define EMMC50_CFG0   0x208

Definition at line 44 of file msdc.h.

◆ EMMC50_CFG1

#define EMMC50_CFG1   0x20c

Definition at line 45 of file msdc.h.

◆ EMMC50_CFG3

#define EMMC50_CFG3   0x220

Definition at line 46 of file msdc.h.

◆ EMMC50_CFG_CFCSTS_SEL

#define EMMC50_CFG_CFCSTS_SEL   (0x1 << 4) /* RW */

Definition at line 122 of file msdc.h.

◆ EMMC50_PAD_DS_TUNE

#define EMMC50_PAD_DS_TUNE   0x0c

Definition at line 54 of file msdc.h.

◆ EMMC51_CFG0

#define EMMC51_CFG0   0x204

Definition at line 43 of file msdc.h.

◆ EMMC_IOCON

#define EMMC_IOCON   0x7c

Definition at line 30 of file msdc.h.

◆ EMMC_TOP_CMD

#define EMMC_TOP_CMD   0x04

Definition at line 53 of file msdc.h.

◆ EMMC_TOP_CONTROL

#define EMMC_TOP_CONTROL   0x00

Definition at line 52 of file msdc.h.

◆ ETIMEDOUT

#define ETIMEDOUT   110 /* I/O timed out */

Definition at line 148 of file msdc.h.

◆ MSDC_BUS_1BITS

#define MSDC_BUS_1BITS   0x0

Definition at line 140 of file msdc.h.

◆ MSDC_BUS_4BITS

#define MSDC_BUS_4BITS   0x1

Definition at line 141 of file msdc.h.

◆ MSDC_BUS_8BITS

#define MSDC_BUS_8BITS   0x2

Definition at line 142 of file msdc.h.

◆ MSDC_CFG

#define MSDC_CFG   0x0

Definition at line 12 of file msdc.h.

◆ MSDC_CFG_CKPDN

#define MSDC_CFG_CKPDN   (0x1 << 1) /* RW */

Definition at line 62 of file msdc.h.

◆ MSDC_CFG_CKSTB

#define MSDC_CFG_CKSTB   (0x1 << 7) /* R */

Definition at line 65 of file msdc.h.

◆ MSDC_CFG_MODE

#define MSDC_CFG_MODE   (0x1 << 0) /* RW */

Definition at line 61 of file msdc.h.

◆ MSDC_CFG_PIO

#define MSDC_CFG_PIO   (0x1 << 3) /* RW */

Definition at line 64 of file msdc.h.

◆ MSDC_CFG_RST

#define MSDC_CFG_RST   (0x1 << 2) /* RW */

Definition at line 63 of file msdc.h.

◆ MSDC_CKGEN_MSDC_DLY_SEL

#define MSDC_CKGEN_MSDC_DLY_SEL   (0x1f << 10)

Definition at line 107 of file msdc.h.

◆ msdc_debug

#define msdc_debug (   format...)    printk(BIOS_DEBUG, format)

Definition at line 164 of file msdc.h.

◆ MSDC_DMA_CFG

#define MSDC_DMA_CFG   0x9c

Definition at line 35 of file msdc.h.

◆ MSDC_DMA_CTRL

#define MSDC_DMA_CTRL   0x98

Definition at line 34 of file msdc.h.

◆ MSDC_DMA_SA

#define MSDC_DMA_SA   0x90

Definition at line 33 of file msdc.h.

◆ msdc_error

#define msdc_error (   format...)    printk(BIOS_ERR, format)

Definition at line 166 of file msdc.h.

◆ MSDC_FIFOCS

#define MSDC_FIFOCS   0x14

Definition at line 17 of file msdc.h.

◆ MSDC_FIFOCS_CLR

#define MSDC_FIFOCS_CLR   (0x1 << 31) /* RW */

Definition at line 78 of file msdc.h.

◆ MSDC_FIFOCS_RXCNT

#define MSDC_FIFOCS_RXCNT   (0xff << 0) /* R */

Definition at line 76 of file msdc.h.

◆ MSDC_FIFOCS_TXCNT

#define MSDC_FIFOCS_TXCNT   (0xff << 16) /* R */

Definition at line 77 of file msdc.h.

◆ MSDC_INT

#define MSDC_INT   0x0c

Definition at line 15 of file msdc.h.

◆ MSDC_INT_CMDRDY

#define MSDC_INT_CMDRDY   (0x1 << 8) /* W1C */

Definition at line 71 of file msdc.h.

◆ MSDC_INT_CMDTMO

#define MSDC_INT_CMDTMO   (0x1 << 9) /* W1C */

Definition at line 72 of file msdc.h.

◆ MSDC_INT_RSPCRCERR

#define MSDC_INT_RSPCRCERR   (0x1 << 10) /* W1C */

Definition at line 73 of file msdc.h.

◆ MSDC_INTEN

#define MSDC_INTEN   0x10

Definition at line 16 of file msdc.h.

◆ MSDC_IOCON

#define MSDC_IOCON   0x04

Definition at line 13 of file msdc.h.

◆ MSDC_IOCON_DDLSEL

#define MSDC_IOCON_DDLSEL   (0x1 << 3) /* RW */

Definition at line 68 of file msdc.h.

◆ MSDC_NOT_READY

#define MSDC_NOT_READY   0x1

Definition at line 145 of file msdc.h.

◆ MSDC_PAD_TUNE

#define MSDC_PAD_TUNE   0xec

Definition at line 39 of file msdc.h.

◆ MSDC_PAD_TUNE0

#define MSDC_PAD_TUNE0   0xf0

Definition at line 40 of file msdc.h.

◆ MSDC_PAD_TUNE_CMD_SEL

#define MSDC_PAD_TUNE_CMD_SEL   (0x1 << 21) /* RW */

Definition at line 119 of file msdc.h.

◆ MSDC_PAD_TUNE_RD_SEL

#define MSDC_PAD_TUNE_RD_SEL   (0x1 << 13) /* RW */

Definition at line 118 of file msdc.h.

◆ MSDC_PATCH_BIT

#define MSDC_PATCH_BIT   0xb0

Definition at line 36 of file msdc.h.

◆ MSDC_PATCH_BIT1

#define MSDC_PATCH_BIT1   0xb4

Definition at line 37 of file msdc.h.

◆ MSDC_PATCH_BIT1_STOP_DLY

#define MSDC_PATCH_BIT1_STOP_DLY   (0xf << 8) /* RW */

Definition at line 110 of file msdc.h.

◆ MSDC_PATCH_BIT2

#define MSDC_PATCH_BIT2   0xb8

Definition at line 38 of file msdc.h.

◆ MSDC_PATCH_BIT2_CFGCRCSTS

#define MSDC_PATCH_BIT2_CFGCRCSTS   (0x1 << 28) /* RW */

Definition at line 114 of file msdc.h.

◆ MSDC_PATCH_BIT2_CFGRESP

#define MSDC_PATCH_BIT2_CFGRESP   (0x1 << 15) /* RW */

Definition at line 113 of file msdc.h.

◆ MSDC_PB2_RESPWAIT

#define MSDC_PB2_RESPWAIT   (0x3 << 2) /* RW */

Definition at line 115 of file msdc.h.

◆ MSDC_PS

#define MSDC_PS   0x08

Definition at line 14 of file msdc.h.

◆ MSDC_RXDATA

#define MSDC_RXDATA   0x1c

Definition at line 19 of file msdc.h.

◆ MSDC_SUCCESS

#define MSDC_SUCCESS   0x0

Definition at line 144 of file msdc.h.

◆ MSDC_TIMEOUT_US

#define MSDC_TIMEOUT_US   (1000 * 1000) /* 1s */

Definition at line 137 of file msdc.h.

◆ msdc_trace

#define msdc_trace (   format...)    printk(BIOS_DEBUG, format)

Definition at line 165 of file msdc.h.

◆ MSDC_TXDATA

#define MSDC_TXDATA   0x18

Definition at line 18 of file msdc.h.

◆ PAD_CMD_RD_RXDLY_SEL

#define PAD_CMD_RD_RXDLY_SEL   (0x1 << 11) /* RW */

Definition at line 134 of file msdc.h.

◆ PAD_CMD_TUNE

#define PAD_CMD_TUNE   0x18c

Definition at line 42 of file msdc.h.

◆ PAD_DAT_RD_RXDLY_SEL

#define PAD_DAT_RD_RXDLY_SEL   (0x1 << 13) /* RW */

Definition at line 129 of file msdc.h.

◆ PAD_DS_TUNE

#define PAD_DS_TUNE   0x188

Definition at line 41 of file msdc.h.

◆ SDC_ACMD_RESP

#define SDC_ACMD_RESP   0x80

Definition at line 31 of file msdc.h.

◆ SDC_ADV_CFG0

#define SDC_ADV_CFG0   0x64

Definition at line 29 of file msdc.h.

◆ SDC_ARG

#define SDC_ARG   0x38

Definition at line 22 of file msdc.h.

◆ SDC_BLK_NUM

#define SDC_BLK_NUM   0x50

Definition at line 28 of file msdc.h.

◆ SDC_CFG

#define SDC_CFG   0x30

Definition at line 20 of file msdc.h.

◆ SDC_CFG_BUSWIDTH

#define SDC_CFG_BUSWIDTH   (0x3 << 16) /* RW */

Definition at line 81 of file msdc.h.

◆ SDC_CFG_DTOC

#define SDC_CFG_DTOC   (0xff << 24) /* RW */

Definition at line 84 of file msdc.h.

◆ SDC_CFG_SDIO

#define SDC_CFG_SDIO   (0x1 << 19) /* RW */

Definition at line 82 of file msdc.h.

◆ SDC_CFG_SDIOIDE

#define SDC_CFG_SDIOIDE   (0x1 << 20) /* RW */

Definition at line 83 of file msdc.h.

◆ SDC_CMD

#define SDC_CMD   0x34

Definition at line 21 of file msdc.h.

◆ SDC_CMD_BLK_LEN_M

#define SDC_CMD_BLK_LEN_M   (0xfff << SDC_CMD_BLK_LEN_S)

Definition at line 96 of file msdc.h.

◆ SDC_CMD_BLK_LEN_S

#define SDC_CMD_BLK_LEN_S   16

Definition at line 95 of file msdc.h.

◆ SDC_CMD_CMD_M

#define SDC_CMD_CMD_M   (0x3f << SDC_CMD_CMD_S)

Definition at line 88 of file msdc.h.

◆ SDC_CMD_CMD_S

#define SDC_CMD_CMD_S   0

Definition at line 87 of file msdc.h.

◆ SDC_CMD_DTYPE_M

#define SDC_CMD_DTYPE_M   (0x3 << SDC_CMD_DTYPE_S)

Definition at line 92 of file msdc.h.

◆ SDC_CMD_DTYPE_S

#define SDC_CMD_DTYPE_S   11

Definition at line 91 of file msdc.h.

◆ SDC_CMD_RSPTYP_M

#define SDC_CMD_RSPTYP_M   (0x7 << SDC_CMD_RSPTYP_S)

Definition at line 90 of file msdc.h.

◆ SDC_CMD_RSPTYP_S

#define SDC_CMD_RSPTYP_S   7

Definition at line 89 of file msdc.h.

◆ SDC_CMD_STOP

#define SDC_CMD_STOP   (1 << 14)

Definition at line 94 of file msdc.h.

◆ SDC_CMD_WR

#define SDC_CMD_WR   (1 << 13)

Definition at line 93 of file msdc.h.

◆ SDC_DAT1_IRQ_TRIGGER

#define SDC_DAT1_IRQ_TRIGGER   (0x1 << 19) /* RW */

Definition at line 103 of file msdc.h.

◆ SDC_FIFO_CFG

#define SDC_FIFO_CFG   0x228

Definition at line 47 of file msdc.h.

◆ SDC_FIFO_CFG_RDVALIDSEL

#define SDC_FIFO_CFG_RDVALIDSEL   (0x1 << 25) /* RW */

Definition at line 126 of file msdc.h.

◆ SDC_FIFO_CFG_WRVALIDSEL

#define SDC_FIFO_CFG_WRVALIDSEL   (0x1 << 24) /* RW */

Definition at line 125 of file msdc.h.

◆ SDC_RESP0

#define SDC_RESP0   0x40

Definition at line 24 of file msdc.h.

◆ SDC_RESP1

#define SDC_RESP1   0x44

Definition at line 25 of file msdc.h.

◆ SDC_RESP2

#define SDC_RESP2   0x48

Definition at line 26 of file msdc.h.

◆ SDC_RESP3

#define SDC_RESP3   0x4c

Definition at line 27 of file msdc.h.

◆ SDC_RX_ENH_EN

#define SDC_RX_ENH_EN   (0x1 << 15) /* TW */

Definition at line 131 of file msdc.h.

◆ SDC_RX_ENHANCE_EN

#define SDC_RX_ENHANCE_EN   (0x1 << 20) /* RW */

Definition at line 104 of file msdc.h.

◆ SDC_STS

#define SDC_STS   0x3c

Definition at line 23 of file msdc.h.

◆ SDC_STS_CMDBUSY

#define SDC_STS_CMDBUSY   (0x1 << 1) /* RW */

Definition at line 100 of file msdc.h.

◆ SDC_STS_SDCBUSY

#define SDC_STS_SDCBUSY   (0x1 << 0) /* RW */

Definition at line 99 of file msdc.h.

Function Documentation

◆ mtk_emmc_early_init()

int mtk_emmc_early_init ( void base,
void top_base 
)

◆ mtk_msdc_configure_emmc()

void mtk_msdc_configure_emmc ( bool  is_early_init)

Definition at line 36 of file msdc.c.

References ARRAY_SIZE, clrsetbits32, GPIO, GPIO_PULL_DOWN, GPIO_PULL_ENABLE, GPIO_PULL_UP, gpio_set_pull(), IOCFG_LT_BASE, IOCFG_TL_BASE, MSDC0_BASE, MSDC0_DRV_MASK, MSDC0_DRV_VALUE, MSDC0_TOP_BASE, mtk_emmc_early_init(), and SET32_BITFIELDS.

Referenced by mainboard_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mtk_msdc_configure_sdcard()