]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.h
ARM Packages: Corrected non-DOS line endings
[mirror_edk2.git] / ArmPlatformPkg / Drivers / PL180MciDxe / PL180Mci.h
CommitLineData
633724f4 1/** @file\r
2 Header for the MMC Host Protocol implementation for the ARM PrimeCell PL180.\r
3\r
93b429fc 4 Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
633724f4 5 \r
6 This program and the accompanying materials \r
7 are licensed and made available under the terms and conditions of the BSD License \r
8 which accompanies this distribution. The full text of the license may be found at \r
9 http://opensource.org/licenses/bsd-license.php \r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
13\r
14**/\r
15\r
16#ifndef __PL180_MCI_H\r
17#define __PL180_MCI_H\r
18\r
19#include <Uefi.h>\r
20\r
21#include <Protocol/MmcHost.h>\r
22\r
23#include <Library/UefiLib.h>\r
24#include <Library/DebugLib.h>\r
25#include <Library/UefiBootServicesTableLib.h>\r
26#include <Library/IoLib.h>\r
27#include <Library/TimerLib.h>\r
28#include <Library/PcdLib.h>\r
29\r
93b429fc 30#define PL180_MCI_DXE_VERSION 0x10\r
31\r
32#define MCI_SYSCTL FixedPcdGet32 (PcdPL180MciBaseAddress)\r
33\r
34#define MCI_POWER_CONTROL_REG (MCI_SYSCTL + 0x000)\r
35#define MCI_CLOCK_CONTROL_REG (MCI_SYSCTL + 0x004)\r
36#define MCI_ARGUMENT_REG (MCI_SYSCTL + 0x008)\r
37#define MCI_COMMAND_REG (MCI_SYSCTL + 0x00C)\r
38#define MCI_RESPCMD_REG (MCI_SYSCTL + 0x010)\r
39#define MCI_RESPONSE3_REG (MCI_SYSCTL + 0x014)\r
40#define MCI_RESPONSE2_REG (MCI_SYSCTL + 0x018)\r
41#define MCI_RESPONSE1_REG (MCI_SYSCTL + 0x01C)\r
42#define MCI_RESPONSE0_REG (MCI_SYSCTL + 0x020)\r
43#define MCI_DATA_TIMER_REG (MCI_SYSCTL + 0x024)\r
44#define MCI_DATA_LENGTH_REG (MCI_SYSCTL + 0x028)\r
45#define MCI_DATA_CTL_REG (MCI_SYSCTL + 0x02C)\r
46#define MCI_DATA_COUNTER (MCI_SYSCTL + 0x030)\r
47#define MCI_STATUS_REG (MCI_SYSCTL + 0x034)\r
48#define MCI_CLEAR_STATUS_REG (MCI_SYSCTL + 0x038)\r
49#define MCI_INT0_MASK_REG (MCI_SYSCTL + 0x03C)\r
50#define MCI_INT1_MASK_REG (MCI_SYSCTL + 0x040)\r
51#define MCI_SELECT_REG (MCI_SYSCTL + 0x044)\r
52#define MCI_FIFOCOUNT_REG (MCI_SYSCTL + 0x048)\r
53#define MCI_FIFO_REG (MCI_SYSCTL + 0x080)\r
54\r
55#define MCI_POWER_OFF 0\r
56#define MCI_POWER_UP BIT1\r
57#define MCI_POWER_ON (BIT1 | BIT0)\r
58#define MCI_POWER_OPENDRAIN BIT6\r
59#define MCI_POWER_ROD BIT7\r
60\r
61#define MCI_CLOCK_ENABLE BIT8\r
62#define MCI_CLOCK_POWERSAVE BIT9\r
63#define MCI_CLOCK_BYPASS BIT10\r
64#define MCI_CLOCK_WIDEBUS BIT11\r
65\r
66#define MCI_STATUS_CMD_CMDCRCFAIL BIT0\r
67#define MCI_STATUS_CMD_DATACRCFAIL BIT1\r
68#define MCI_STATUS_CMD_CMDTIMEOUT BIT2\r
69#define MCI_STATUS_CMD_DATATIMEOUT BIT3\r
70#define MCI_STATUS_CMD_TX_UNDERRUN BIT4\r
71#define MCI_STATUS_CMD_RXOVERRUN BIT5\r
72#define MCI_STATUS_CMD_RESPEND BIT6\r
73#define MCI_STATUS_CMD_SENT BIT7\r
74#define MCI_STATUS_CMD_DATAEND BIT8\r
75#define MCI_STATUS_CMD_START_BIT_ERROR BIT9\r
76#define MCI_STATUS_CMD_DATABLOCKEND BIT10\r
77#define MCI_STATUS_CMD_ACTIVE BIT11\r
78#define MCI_STATUS_CMD_TXACTIVE BIT12\r
79#define MCI_STATUS_CMD_RXACTIVE BIT13\r
80#define MCI_STATUS_CMD_TXFIFOHALFEMPTY BIT14\r
81#define MCI_STATUS_CMD_RXFIFOHALFFULL BIT15\r
82#define MCI_STATUS_CMD_TXFIFOFULL BIT16\r
83#define MCI_STATUS_CMD_RXFIFOFULL BIT17\r
84#define MCI_STATUS_CMD_TXFIFOEMPTY BIT18\r
85#define MCI_STATUS_CMD_RXFIFOEMPTY BIT19\r
86#define MCI_STATUS_CMD_TXDATAAVAILBL BIT20\r
87#define MCI_STATUS_CMD_RXDATAAVAILBL BIT21\r
88\r
89#define MCI_STATUS_TXDONE (MCI_STATUS_CMD_DATAEND | MCI_STATUS_CMD_DATABLOCKEND)\r
90#define MCI_STATUS_RXDONE (MCI_STATUS_CMD_DATAEND | MCI_STATUS_CMD_DATABLOCKEND)\r
91#define MCI_STATUS_READ_ERROR ( MCI_STATUS_CMD_DATACRCFAIL \\r
92 | MCI_STATUS_CMD_DATATIMEOUT \\r
93 | MCI_STATUS_CMD_RXOVERRUN \\r
94 | MCI_STATUS_CMD_START_BIT_ERROR )\r
95#define MCI_STATUS_WRITE_ERROR ( MCI_STATUS_CMD_DATACRCFAIL \\r
96 | MCI_STATUS_CMD_DATATIMEOUT \\r
97 | MCI_STATUS_CMD_TX_UNDERRUN )\r
98#define MCI_STATUS_CMD_ERROR ( MCI_STATUS_CMD_CMDCRCFAIL \\r
99 | MCI_STATUS_CMD_CMDTIMEOUT \\r
100 | MCI_STATUS_CMD_START_BIT_ERROR )\r
101\r
102#define MCI_CLR_CMD_STATUS ( MCI_STATUS_CMD_RESPEND \\r
103 | MCI_STATUS_CMD_SENT \\r
104 | MCI_STATUS_CMD_ERROR )\r
105\r
106#define MCI_CLR_READ_STATUS ( MCI_STATUS_RXDONE \\r
107 | MCI_STATUS_READ_ERROR )\r
108\r
109#define MCI_CLR_WRITE_STATUS ( MCI_STATUS_TXDONE \\r
110 | MCI_STATUS_WRITE_ERROR )\r
111\r
112#define MCI_CLR_ALL_STATUS (BIT11 - 1)\r
113\r
114#define MCI_DATACTL_DISABLE_MASK 0xFE\r
115#define MCI_DATACTL_ENABLE BIT0\r
633724f4 116#define MCI_DATACTL_CONT_TO_CARD 0\r
93b429fc 117#define MCI_DATACTL_CARD_TO_CONT BIT1\r
633724f4 118#define MCI_DATACTL_BLOCK_TRANS 0\r
93b429fc 119#define MCI_DATACTL_STREAM_TRANS BIT2\r
120#define MCI_DATACTL_DMA_DISABLED 0\r
121#define MCI_DATACTL_DMA_ENABLE BIT3\r
633724f4 122\r
123#define INDX_MASK 0x3F\r
124\r
93b429fc 125#define MCI_CPSM_WAIT_RESPONSE BIT6\r
126#define MCI_CPSM_LONG_RESPONSE BIT7\r
127#define MCI_CPSM_LONG_INTERRUPT BIT8\r
128#define MCI_CPSM_LONG_PENDING BIT9\r
129#define MCI_CPSM_ENABLE BIT10\r
633724f4 130\r
93b429fc 131#define MCI_TRACE(txt) DEBUG ((EFI_D_BLKIO, "ARM_MCI: " txt "\n"))\r
633724f4 132\r
133EFI_STATUS\r
134EFIAPI\r
135MciGetDriverName (\r
136 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
137 IN CHAR8 *Language,\r
138 OUT CHAR16 **DriverName\r
139 );\r
140\r
141EFI_STATUS\r
142EFIAPI\r
143MciGetControllerName (\r
144 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
145 IN EFI_HANDLE ControllerHandle,\r
146 IN EFI_HANDLE ChildHandle OPTIONAL,\r
147 IN CHAR8 *Language,\r
148 OUT CHAR16 **ControllerName\r
149 );\r
150\r
151#endif\r