| /* |
| * Copyright (c) 2013-2018 Arm Limited. All rights reserved. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| * |
| * Licensed under the Apache License, Version 2.0 (the License); you may |
| * not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #include "Driver_MCI.h" |
| |
| #define ARM_MCI_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(2, 0) /* driver version */ |
| |
| /* Driver Version */ |
| static const ARM_DRIVER_VERSION DriverVersion = { |
| ARM_MCI_API_VERSION, |
| ARM_MCI_DRV_VERSION |
| }; |
| |
| /* Driver Capabilities */ |
| static const ARM_MCI_CAPABILITIES DriverCapabilities = { |
| 0, /* cd_state */ |
| 0, /* cd_event */ |
| 0, /* vdd */ |
| 0, /* vdd_1v8 */ |
| 0, /* vccq */ |
| 0, /* vccq_1v8 */ |
| 0, /* vccq_1v2 */ |
| 1, /* data_width_4 */ |
| 1, /* data_width_8 */ |
| 0, /* data_width_4_ddr */ |
| 0, /* data_width_8_ddr */ |
| 0, /* high_speed */ |
| 0, /* uhs_signaling */ |
| 0, /* uhs_tuning */ |
| 0, /* uhs_sdr50 */ |
| 0, /* uhs_sdr104 */ |
| 0, /* uhs_ddr50 */ |
| 0, /* uhs_driver_type_a */ |
| 0, /* uhs_driver_type_c */ |
| 0, /* uhs_driver_type_d */ |
| 1, /* sdio_interrupt */ |
| 1, /* read_wait */ |
| 0, /* suspend_resume */ |
| 0, /* mmc_interrupt */ |
| 0, /* mmc_boot */ |
| 0, /* ccs */ |
| 0 /* ccs_timeout */ |
| }; |
| |
| // |
| // Functions |
| // |
| |
| ARM_DRIVER_VERSION ARM_MCI_GetVersion(void) |
| { |
| } |
| |
| ARM_MCI_CAPABILITIES ARM_MCI_GetCapabilities(void) |
| { |
| } |
| |
| int32_t ARM_MCI_Initialize(ARM_MCI_SignalEvent_t cb_event) |
| { |
| } |
| |
| int32_t ARM_MCI_Uninitialize(void) |
| { |
| } |
| |
| int32_t ARM_MCI_PowerControl(ARM_POWER_STATE state) |
| { |
| switch (state) |
| { |
| case ARM_POWER_OFF: |
| break; |
| |
| case ARM_POWER_LOW: |
| break; |
| |
| case ARM_POWER_FULL: |
| break; |
| |
| default: |
| return ARM_DRIVER_ERROR_UNSUPPORTED; |
| } |
| } |
| |
| int32_t ARM_MCI_CardPower(uint32_t voltage) |
| { |
| switch (voltage & ARM_MCI_POWER_VDD_Msk) |
| { |
| case ARM_MCI_POWER_VDD_OFF: |
| return ARM_DRIVER_OK; |
| |
| case ARM_MCI_POWER_VDD_3V3: |
| return ARM_DRIVER_OK; |
| |
| default: |
| break; |
| } |
| } |
| |
| int32_t ARM_MCI_ReadCD(void) |
| { |
| } |
| |
| int32_t ARM_MCI_ReadWP(void) |
| { |
| } |
| |
| int32_t ARM_MCI_SendCommand(uint32_t cmd, uint32_t arg, uint32_t flags, uint32_t *response) |
| { |
| } |
| |
| int32_t ARM_MCI_SetupTransfer(uint8_t *data, uint32_t block_count, uint32_t block_size, uint32_t mode) |
| { |
| } |
| |
| int32_t ARM_MCI_AbortTransfer(void) |
| { |
| } |
| |
| int32_t ARM_MCI_Control(uint32_t control, uint32_t arg) |
| { |
| switch (control) |
| { |
| case ARM_MCI_BUS_SPEED: |
| break; |
| |
| case ARM_MCI_BUS_SPEED_MODE: |
| break; |
| |
| case ARM_MCI_BUS_CMD_MODE: |
| /* Implement external pull-up control to support MMC cards in open-drain mode */ |
| /* Default mode is push-pull and is configured in Driver_MCI0.Initialize() */ |
| if (arg == ARM_MCI_BUS_CMD_PUSH_PULL) |
| { |
| /* Configure external circuit to work in push-pull mode */ |
| } |
| else if (arg == ARM_MCI_BUS_CMD_OPEN_DRAIN) |
| { |
| /* Configure external circuit to work in open-drain mode */ |
| } |
| else |
| { |
| return ARM_DRIVER_ERROR_UNSUPPORTED; |
| } |
| break; |
| |
| case ARM_MCI_BUS_DATA_WIDTH: |
| switch (arg) |
| { |
| case ARM_MCI_BUS_DATA_WIDTH_1: |
| break; |
| case ARM_MCI_BUS_DATA_WIDTH_4: |
| break; |
| case ARM_MCI_BUS_DATA_WIDTH_8: |
| break; |
| default: |
| return ARM_DRIVER_ERROR_UNSUPPORTED; |
| } |
| break; |
| |
| case ARM_MCI_CONTROL_RESET: |
| break; |
| |
| case ARM_MCI_CONTROL_CLOCK_IDLE: |
| break; |
| |
| case ARM_MCI_DATA_TIMEOUT: |
| break; |
| |
| case ARM_MCI_MONITOR_SDIO_INTERRUPT: |
| break; |
| |
| case ARM_MCI_CONTROL_READ_WAIT: |
| break; |
| |
| case ARM_MCI_DRIVER_STRENGTH: |
| default: return ARM_DRIVER_ERROR_UNSUPPORTED; |
| } |
| } |
| |
| ARM_MCI_STATUS ARM_MCI_GetStatus(void) |
| { |
| } |
| |
| void ARM_MCI_SignalEvent(uint32_t event) |
| { |
| // function body |
| } |
| |
| // End MCI Interface |
| |
| ARM_DRIVER_MCI Driver_MCI = { |
| ARM_MCI_GetVersion, |
| ARM_MCI_GetCapabilities, |
| ARM_MCI_Initialize, |
| ARM_MCI_Uninitialize, |
| ARM_MCI_PowerControl, |
| ARM_MCI_CardPower, |
| ARM_MCI_ReadCD, |
| ARM_MCI_ReadWP, |
| ARM_MCI_SendCommand, |
| ARM_MCI_SetupTransfer, |
| ARM_MCI_AbortTransfer, |
| ARM_MCI_Control, |
| ARM_MCI_GetStatus |
| }; |