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