]> begriffs open source - cmsis/blob - CMSIS/Driver/DriverTemplates/Driver_MCI.c
CMSIS_Core:
[cmsis] / CMSIS / Driver / DriverTemplates / Driver_MCI.c
1 /*\r
2  * Copyright (c) 2013-2016 ARM Limited. All rights reserved.\r
3  *\r
4  * SPDX-License-Identifier: Apache-2.0\r
5  *\r
6  * Licensed under the Apache License, Version 2.0 (the License); you may\r
7  * not use this file except in compliance with the License.\r
8  * You may obtain a copy of the License at\r
9  *\r
10  * http://www.apache.org/licenses/LICENSE-2.0\r
11  *\r
12  * Unless required by applicable law or agreed to in writing, software\r
13  * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
15  * See the License for the specific language governing permissions and\r
16  * limitations under the License.\r
17  */\r
18  \r
19 #include "Driver_MCI.h"\r
20 \r
21 #define ARM_MCI_DRV_VERSION    ARM_DRIVER_VERSION_MAJOR_MINOR(2, 0) /* driver version */\r
22 \r
23 /* Driver Version */\r
24 static const ARM_DRIVER_VERSION DriverVersion = {\r
25     ARM_MCI_API_VERSION,\r
26     ARM_MCI_DRV_VERSION\r
27 };\r
28 \r
29 /* Driver Capabilities */\r
30 static const ARM_MCI_CAPABILITIES DriverCapabilities = {\r
31     0, /* cd_state          */\r
32     0, /* cd_event          */\r
33     0, /* vdd               */\r
34     0, /* vdd_1v8           */\r
35     0, /* vccq              */\r
36     0, /* vccq_1v8          */\r
37     0, /* vccq_1v2          */\r
38     1, /* data_width_4      */\r
39     1, /* data_width_8      */\r
40     0, /* data_width_4_ddr  */\r
41     0, /* data_width_8_ddr  */\r
42     0, /* high_speed        */\r
43     0, /* uhs_signaling     */\r
44     0, /* uhs_tuning        */\r
45     0, /* uhs_sdr50         */\r
46     0, /* uhs_sdr104        */\r
47     0, /* uhs_ddr50         */\r
48     0, /* uhs_driver_type_a */\r
49     0, /* uhs_driver_type_c */\r
50     0, /* uhs_driver_type_d */\r
51     1, /* sdio_interrupt    */\r
52     1, /* read_wait         */\r
53     0, /* suspend_resume    */\r
54     0, /* mmc_interrupt     */\r
55     0, /* mmc_boot          */\r
56     0, /* ccs               */\r
57     0  /* ccs_timeout       */\r
58 };\r
59 \r
60 //\r
61 //   Functions\r
62 //\r
63 \r
64 ARM_DRIVER_VERSION ARM_MCI_GetVersion(void)\r
65 {\r
66 }\r
67 \r
68 ARM_MCI_CAPABILITIES ARM_MCI_GetCapabilities(void)\r
69 {\r
70 }\r
71 \r
72 int32_t ARM_MCI_Initialize(ARM_MCI_SignalEvent_t cb_event)\r
73 {\r
74 }\r
75 \r
76 int32_t ARM_MCI_Uninitialize(void)\r
77 {\r
78 }\r
79 \r
80 int32_t ARM_MCI_PowerControl(ARM_POWER_STATE state)\r
81 {\r
82     switch (state)\r
83     {\r
84     case ARM_POWER_OFF:\r
85         break;\r
86 \r
87     case ARM_POWER_LOW:\r
88         break;\r
89 \r
90     case ARM_POWER_FULL:\r
91         break;\r
92 \r
93     default:\r
94         return ARM_DRIVER_ERROR_UNSUPPORTED;\r
95     }\r
96 }\r
97 \r
98 int32_t ARM_MCI_CardPower(uint32_t voltage)\r
99 {\r
100     switch (voltage & ARM_MCI_POWER_VDD_Msk)\r
101     {\r
102     case ARM_MCI_POWER_VDD_OFF:\r
103         return ARM_DRIVER_OK;\r
104 \r
105     case ARM_MCI_POWER_VDD_3V3:\r
106         return ARM_DRIVER_OK;\r
107 \r
108     default:\r
109         break;\r
110     }\r
111 }\r
112 \r
113 int32_t ARM_MCI_ReadCD(void)\r
114 {\r
115 }\r
116 \r
117 int32_t ARM_MCI_ReadWP(void)\r
118 {\r
119 }\r
120 \r
121 int32_t ARM_MCI_SendCommand(uint32_t cmd, uint32_t arg, uint32_t flags, uint32_t *response)\r
122 {\r
123 }\r
124 \r
125 int32_t ARM_MCI_SetupTransfer(uint8_t  *data, uint32_t block_count, uint32_t block_size, uint32_t mode)\r
126 {\r
127 }\r
128 \r
129 int32_t ARM_MCI_AbortTransfer(void)\r
130 {\r
131 }\r
132 \r
133 int32_t ARM_MCI_Control(uint32_t control, uint32_t arg)\r
134 {\r
135     switch (control)\r
136     {\r
137     case ARM_MCI_BUS_SPEED:\r
138         break;\r
139 \r
140     case ARM_MCI_BUS_SPEED_MODE:\r
141         break;\r
142 \r
143     case ARM_MCI_BUS_CMD_MODE:\r
144         /* Implement external pull-up control to support MMC cards in open-drain mode */\r
145         /* Default mode is push-pull and is configured in Driver_MCI0.Initialize()    */\r
146         if (arg == ARM_MCI_BUS_CMD_PUSH_PULL)\r
147         {\r
148             /* Configure external circuit to work in push-pull mode */\r
149         }\r
150         else if (arg == ARM_MCI_BUS_CMD_OPEN_DRAIN)\r
151         {\r
152             /* Configure external circuit to work in open-drain mode */\r
153         }\r
154         else\r
155         {\r
156             return ARM_DRIVER_ERROR_UNSUPPORTED;\r
157         }\r
158         break;\r
159 \r
160     case ARM_MCI_BUS_DATA_WIDTH:\r
161         switch (arg)\r
162         {\r
163         case ARM_MCI_BUS_DATA_WIDTH_1:\r
164             break;\r
165         case ARM_MCI_BUS_DATA_WIDTH_4:\r
166             break;\r
167         case ARM_MCI_BUS_DATA_WIDTH_8:\r
168             break;\r
169         default:\r
170             return ARM_DRIVER_ERROR_UNSUPPORTED;\r
171         }\r
172         break;\r
173 \r
174     case ARM_MCI_CONTROL_RESET:\r
175         break;\r
176 \r
177     case ARM_MCI_CONTROL_CLOCK_IDLE:\r
178         break;\r
179 \r
180     case ARM_MCI_DATA_TIMEOUT:\r
181         break;\r
182 \r
183     case ARM_MCI_MONITOR_SDIO_INTERRUPT:\r
184         break;\r
185 \r
186     case ARM_MCI_CONTROL_READ_WAIT:\r
187         break;\r
188 \r
189     case ARM_MCI_DRIVER_STRENGTH:\r
190     default: return ARM_DRIVER_ERROR_UNSUPPORTED;\r
191     }\r
192 }\r
193 \r
194 ARM_MCI_STATUS ARM_MCI_GetStatus(void)\r
195 {\r
196 }\r
197 \r
198 void ARM_MCI_SignalEvent(uint32_t event)\r
199 {\r
200     // function body\r
201 }\r
202 \r
203 // End MCI Interface\r
204 \r
205 ARM_DRIVER_MCI Driver_MCI = {\r
206     ARM_MCI_GetVersion,\r
207     ARM_MCI_GetCapabilities,\r
208     ARM_MCI_Initialize,\r
209     ARM_MCI_Uninitialize,\r
210     ARM_MCI_PowerControl,\r
211     ARM_MCI_CardPower,\r
212     ARM_MCI_ReadCD,\r
213     ARM_MCI_ReadWP,\r
214     ARM_MCI_SendCommand,\r
215     ARM_MCI_SetupTransfer,\r
216     ARM_MCI_AbortTransfer,\r
217     ARM_MCI_Control,\r
218     ARM_MCI_GetStatus\r
219 };\r