Jit Loon Lim | a7f5494 | 2023-05-17 12:26:11 +0800 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2022-2023, Intel Corporation. All rights reserved. |
Sieu Mun Tang | 3146405 | 2024-10-25 09:37:42 +0800 | [diff] [blame^] | 3 | * Copyright (c) 2024, Altera Corporation. All rights reserved. |
Jit Loon Lim | a7f5494 | 2023-05-17 12:26:11 +0800 | [diff] [blame] | 4 | * |
| 5 | * SPDX-License-Identifier: BSD-3-Clause |
| 6 | */ |
| 7 | |
| 8 | #ifndef SDMMC_H |
| 9 | #define SDMMC_H |
| 10 | |
| 11 | #include <lib/mmio.h> |
| 12 | #include "socfpga_handoff.h" |
| 13 | |
| 14 | #define PERIPHERAL_SDMMC_MASK 0x60 |
| 15 | #define PERIPHERAL_SDMMC_OFFSET 6 |
| 16 | |
| 17 | #define DEFAULT_SDMMC_MAX_RETRIES 5 |
| 18 | #define SEND_SDMMC_OP_COND_MAX_RETRIES 100 |
| 19 | #define SDMMC_MULT_BY_512K_SHIFT 19 |
| 20 | |
| 21 | static const unsigned char tran_speed_base[16] = { |
| 22 | 0, 10, 12, 13, 15, 20, 26, 30, 35, 40, 45, 52, 55, 60, 70, 80 |
| 23 | }; |
| 24 | |
| 25 | static const unsigned char sd_tran_speed_base[16] = { |
| 26 | 0, 10, 12, 13, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, 80 |
| 27 | }; |
| 28 | |
| 29 | |
| 30 | /* FUNCTION DEFINATION */ |
| 31 | /* |
| 32 | * @brief SDMMC controller initialization function |
| 33 | * |
| 34 | * @hoff_ptr: Pointer to the hand-off data |
| 35 | * Return: 0 on success, a negative errno on failure |
| 36 | */ |
Jit Loon Lim | a7f5494 | 2023-05-17 12:26:11 +0800 | [diff] [blame] | 37 | void sdmmc_pin_config(void); |
Sieu Mun Tang | 3146405 | 2024-10-25 09:37:42 +0800 | [diff] [blame^] | 38 | size_t sdmmc_read_blocks(int lba, uintptr_t buf, size_t size); |
| 39 | size_t sdmmc_write_blocks(int lba, const uintptr_t buf, size_t size); |
| 40 | int sdmmc_device_state(void); |
| 41 | bool is_cmd23_enabled(void); |
| 42 | int sdmmc_send_cmd(unsigned int idx, unsigned int arg, |
| 43 | unsigned int r_type, unsigned int *r_data); |
| 44 | |
Jit Loon Lim | a7f5494 | 2023-05-17 12:26:11 +0800 | [diff] [blame] | 45 | #endif |