1 /*
2  * Copyright (c) 2022-2023, Intel Corporation. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef SDMMC_H
8 #define SDMMC_H
9 
10 #include <lib/mmio.h>
11 #include "socfpga_handoff.h"
12 
13 #define PERIPHERAL_SDMMC_MASK			0x60
14 #define PERIPHERAL_SDMMC_OFFSET			6
15 
16 #define DEFAULT_SDMMC_MAX_RETRIES		5
17 #define SEND_SDMMC_OP_COND_MAX_RETRIES		100
18 #define SDMMC_MULT_BY_512K_SHIFT		19
19 
20 static const unsigned char tran_speed_base[16] = {
21 	0, 10, 12, 13, 15, 20, 26, 30, 35, 40, 45, 52, 55, 60, 70, 80
22 };
23 
24 static const unsigned char sd_tran_speed_base[16] = {
25 	0, 10, 12, 13, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, 80
26 };
27 
28 
29 /* FUNCTION DEFINATION */
30 /*
31  * @brief SDMMC controller initialization function
32  *
33  * @hoff_ptr: Pointer to the hand-off data
34  * Return: 0 on success, a negative errno on failure
35  */
36 int sdmmc_init(handoff *hoff_ptr, struct cdns_sdmmc_params *params,
37 	     struct mmc_device_info *info);
38 int sd_or_mmc_init(const struct mmc_ops *ops_ptr, unsigned int clk,
39 	     unsigned int width, unsigned int flags,
40 	     struct mmc_device_info *device_info);
41 void sdmmc_pin_config(void);
42 #endif
43