| /* |
| * Copyright (c) 2024 Renesas Electronics Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #define SDHI_PRV_ACCESS_TIMEOUT_US 100000U |
| #define SDHI_PRV_SD_OPTION_DEFAULT 0x40E0U |
| #define SDHI_PRV_SD_OPTION_WIDTH8_BIT 13 |
| #define SDHI_PRV_BYTES_PER_KILOBYTE 1024 |
| #define SDHI_PRV_SECTOR_COUNT_IN_EXT_CSD 0xFFFU |
| #define SDHI_TIME_OUT_MAX 0xFFFFFFFF |
| #define SDHI_PRV_RESPONSE_BIT 0 |
| |
| struct sdmmc_ra_event { |
| volatile bool transfer_completed; |
| struct k_sem transfer_sem; |
| }; |
| |
| struct sdmmc_ra_command { |
| uint32_t opcode; |
| uint32_t arg; |
| void *data; |
| unsigned int sector_count; |
| unsigned int sector_size; |
| int timeout_ms; |
| }; |
| |
| static ALWAYS_INLINE int err_fsp2zep(int fsp_err) |
| { |
| int ret; |
| |
| switch (fsp_err) { |
| /* Treating the error codes most relevant to be individuated */ |
| case FSP_SUCCESS: |
| ret = 0; |
| break; |
| case FSP_ERR_TIMEOUT: |
| ret = -ETIMEDOUT; |
| break; |
| case FSP_ERR_NOT_FOUND: |
| ret = -ENODEV; /* SD card not inserted (requires CD signal) */ |
| break; |
| case FSP_ERR_INVALID_STATE: |
| ret = -EACCES; /* SD card write-protected (requires WP sinal) */ |
| break; |
| case FSP_ERR_RESPONSE: |
| default: |
| ret = -EIO; |
| break; |
| } |
| |
| return ret; |
| } |