Commit | Line | Data |
---|---|---|
ee660531 LL |
1 | /** @file\r |
2 | *\r | |
3 | * Copyright (c) 2014-2017, Linaro Limited. All rights reserved.\r | |
4 | *\r | |
5 | * This program and the accompanying materials\r | |
6 | * are licensed and made available under the terms and conditions of the BSD License\r | |
7 | * which accompanies this distribution. The full text of the license may be found at\r | |
8 | * http://opensource.org/licenses/bsd-license.php\r | |
9 | *\r | |
10 | * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
11 | * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
12 | *\r | |
13 | **/\r | |
14 | \r | |
15 | \r | |
16 | #ifndef __DWEMMC_H__\r | |
17 | #define __DWEMMC_H__\r | |
18 | \r | |
19 | #include <Protocol/EmbeddedGpio.h>\r | |
20 | \r | |
21 | // DW MMC Registers\r | |
22 | #define DWEMMC_CTRL ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x000)\r | |
23 | #define DWEMMC_PWREN ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x004)\r | |
24 | #define DWEMMC_CLKDIV ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x008)\r | |
25 | #define DWEMMC_CLKSRC ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x00c)\r | |
26 | #define DWEMMC_CLKENA ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x010)\r | |
27 | #define DWEMMC_TMOUT ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x014)\r | |
28 | #define DWEMMC_CTYPE ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x018)\r | |
29 | #define DWEMMC_BLKSIZ ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x01c)\r | |
30 | #define DWEMMC_BYTCNT ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x020)\r | |
31 | #define DWEMMC_INTMASK ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x024)\r | |
32 | #define DWEMMC_CMDARG ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x028)\r | |
33 | #define DWEMMC_CMD ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x02c)\r | |
34 | #define DWEMMC_RESP0 ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x030)\r | |
35 | #define DWEMMC_RESP1 ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x034)\r | |
36 | #define DWEMMC_RESP2 ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x038)\r | |
37 | #define DWEMMC_RESP3 ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x03c)\r | |
38 | #define DWEMMC_RINTSTS ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x044)\r | |
39 | #define DWEMMC_STATUS ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x048)\r | |
40 | #define DWEMMC_FIFOTH ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x04c)\r | |
a58bfb37 JN |
41 | #define DWEMMC_TCBCNT ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x05c)\r |
42 | #define DWEMMC_TBBCNT ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x060)\r | |
ee660531 | 43 | #define DWEMMC_DEBNCE ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x064)\r |
a58bfb37 | 44 | #define DWEMMC_HCON ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x070)\r |
ee660531 LL |
45 | #define DWEMMC_UHSREG ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x074)\r |
46 | #define DWEMMC_BMOD ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x080)\r | |
47 | #define DWEMMC_DBADDR ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x088)\r | |
48 | #define DWEMMC_IDSTS ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x08c)\r | |
49 | #define DWEMMC_IDINTEN ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x090)\r | |
50 | #define DWEMMC_DSCADDR ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x094)\r | |
51 | #define DWEMMC_BUFADDR ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0x098)\r | |
52 | #define DWEMMC_CARDTHRCTL ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0X100)\r | |
a58bfb37 | 53 | #define DWEMMC_DATA ((UINT32)PcdGet32 (PcdDwEmmcDxeBaseAddress) + 0X200)\r |
ee660531 LL |
54 | \r |
55 | #define CMD_UPDATE_CLK 0x80202000\r | |
56 | #define CMD_START_BIT (1 << 31)\r | |
57 | \r | |
58 | #define MMC_8BIT_MODE (1 << 16)\r | |
59 | \r | |
60 | #define BIT_CMD_RESPONSE_EXPECT (1 << 6)\r | |
61 | #define BIT_CMD_LONG_RESPONSE (1 << 7)\r | |
62 | #define BIT_CMD_CHECK_RESPONSE_CRC (1 << 8)\r | |
63 | #define BIT_CMD_DATA_EXPECTED (1 << 9)\r | |
64 | #define BIT_CMD_READ (0 << 10)\r | |
65 | #define BIT_CMD_WRITE (1 << 10)\r | |
66 | #define BIT_CMD_BLOCK_TRANSFER (0 << 11)\r | |
67 | #define BIT_CMD_STREAM_TRANSFER (1 << 11)\r | |
68 | #define BIT_CMD_SEND_AUTO_STOP (1 << 12)\r | |
69 | #define BIT_CMD_WAIT_PRVDATA_COMPLETE (1 << 13)\r | |
70 | #define BIT_CMD_STOP_ABORT_CMD (1 << 14)\r | |
71 | #define BIT_CMD_SEND_INIT (1 << 15)\r | |
72 | #define BIT_CMD_UPDATE_CLOCK_ONLY (1 << 21)\r | |
73 | #define BIT_CMD_READ_CEATA_DEVICE (1 << 22)\r | |
74 | #define BIT_CMD_CCS_EXPECTED (1 << 23)\r | |
75 | #define BIT_CMD_ENABLE_BOOT (1 << 24)\r | |
76 | #define BIT_CMD_EXPECT_BOOT_ACK (1 << 25)\r | |
77 | #define BIT_CMD_DISABLE_BOOT (1 << 26)\r | |
78 | #define BIT_CMD_MANDATORY_BOOT (0 << 27)\r | |
79 | #define BIT_CMD_ALTERNATE_BOOT (1 << 27)\r | |
80 | #define BIT_CMD_VOLT_SWITCH (1 << 28)\r | |
81 | #define BIT_CMD_USE_HOLD_REG (1 << 29)\r | |
82 | #define BIT_CMD_START (1 << 31)\r | |
83 | \r | |
84 | #define DWEMMC_INT_EBE (1 << 15) /* End-bit Err */\r | |
85 | #define DWEMMC_INT_SBE (1 << 13) /* Start-bit Err */\r | |
86 | #define DWEMMC_INT_HLE (1 << 12) /* Hardware-lock Err */\r | |
87 | #define DWEMMC_INT_FRUN (1 << 11) /* FIFO UN/OV RUN */\r | |
88 | #define DWEMMC_INT_DRT (1 << 9) /* Data timeout */\r | |
89 | #define DWEMMC_INT_RTO (1 << 8) /* Response timeout */\r | |
90 | #define DWEMMC_INT_DCRC (1 << 7) /* Data CRC err */\r | |
91 | #define DWEMMC_INT_RCRC (1 << 6) /* Response CRC err */\r | |
92 | #define DWEMMC_INT_RXDR (1 << 5)\r | |
93 | #define DWEMMC_INT_TXDR (1 << 4)\r | |
94 | #define DWEMMC_INT_DTO (1 << 3) /* Data trans over */\r | |
95 | #define DWEMMC_INT_CMD_DONE (1 << 2)\r | |
96 | #define DWEMMC_INT_RE (1 << 1)\r | |
97 | \r | |
98 | #define DWEMMC_IDMAC_DES0_DIC (1 << 1)\r | |
99 | #define DWEMMC_IDMAC_DES0_LD (1 << 2)\r | |
100 | #define DWEMMC_IDMAC_DES0_FS (1 << 3)\r | |
101 | #define DWEMMC_IDMAC_DES0_CH (1 << 4)\r | |
102 | #define DWEMMC_IDMAC_DES0_ER (1 << 5)\r | |
103 | #define DWEMMC_IDMAC_DES0_CES (1 << 30)\r | |
104 | #define DWEMMC_IDMAC_DES0_OWN (1 << 31)\r | |
105 | #define DWEMMC_IDMAC_DES1_BS1(x) ((x) & 0x1fff)\r | |
106 | #define DWEMMC_IDMAC_DES2_BS2(x) (((x) & 0x1fff) << 13)\r | |
107 | #define DWEMMC_IDMAC_SWRESET (1 << 0)\r | |
108 | #define DWEMMC_IDMAC_FB (1 << 1)\r | |
109 | #define DWEMMC_IDMAC_ENABLE (1 << 7)\r | |
110 | \r | |
111 | #define EMMC_FIX_RCA 6\r | |
112 | \r | |
113 | /* bits in MMC0_CTRL */\r | |
114 | #define DWEMMC_CTRL_RESET (1 << 0)\r | |
115 | #define DWEMMC_CTRL_FIFO_RESET (1 << 1)\r | |
116 | #define DWEMMC_CTRL_DMA_RESET (1 << 2)\r | |
117 | #define DWEMMC_CTRL_INT_EN (1 << 4)\r | |
118 | #define DWEMMC_CTRL_DMA_EN (1 << 5)\r | |
119 | #define DWEMMC_CTRL_IDMAC_EN (1 << 25)\r | |
120 | #define DWEMMC_CTRL_RESET_ALL (DWEMMC_CTRL_RESET | DWEMMC_CTRL_FIFO_RESET | DWEMMC_CTRL_DMA_RESET)\r | |
121 | \r | |
122 | #define DWEMMC_STS_DATA_BUSY (1 << 9)\r | |
123 | \r | |
124 | #define DWEMMC_FIFO_TWMARK(x) (x & 0xfff)\r | |
125 | #define DWEMMC_FIFO_RWMARK(x) ((x & 0x1ff) << 16)\r | |
126 | #define DWEMMC_DMA_BURST_SIZE(x) ((x & 0x7) << 28)\r | |
127 | \r | |
128 | #define DWEMMC_CARD_RD_THR(x) ((x & 0xfff) << 16)\r | |
129 | #define DWEMMC_CARD_RD_THR_EN (1 << 0)\r | |
130 | \r | |
a58bfb37 JN |
131 | #define DWEMMC_GET_HDATA_WIDTH(x) (((x) >> 7) & 0x7)\r |
132 | \r | |
ee660531 | 133 | #endif // __DWEMMC_H__\r |