• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2023, Intel Corporation. All rights reserved.
3  * Copyright (c) 2024, Altera Corporation. All rights reserved.
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  */
37 void sdmmc_pin_config(void);
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 
45 #endif
46