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