u-boot/arch/arm/include/asm/arch-stih410/sdhci.h
Patrice Chotard eee20f8132 STiH410: Add STi SDHCI driver
Add SDHCI host controller found on STMicroelectronics SoCs

On some ST SoCs, i.e. STiH407/STiH410, the MMC devices can live
inside a dedicated flashSS sub-system that provides an extend subset
of registers that can be used to configure the Arasan MMC/SD Host
Controller.

This means, that the SDHCI Arasan Controller can be configured to be
eMMC4.5 or 4.3 spec compliant.

W/o these settings the SDHCI will configure and use the MMC/SD
controller with limited features e.g. PIO mode, no DMA, no HS etc.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2017-03-14 20:40:20 -04:00

68 lines
2.1 KiB
C

/*
* (C) Copyright 2017 Patrice Chotard <patrice.chotard@st.com>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef __STI_SDHCI_H__
#define __STI_SDHCI_H__
#define FLASHSS_MMC_CORE_CONFIG_1 0x400
#define FLASHSS_MMC_CORECFG_TIMEOUT_CLK_UNIT_MHZ BIT(24)
#define FLASHSS_MMC_CORECFG_TIMEOUT_CLK_FREQ_MIN BIT(12)
#define STI_FLASHSS_MMC_CORE_CONFIG_1 \
(FLASHSS_MMC_CORECFG_TIMEOUT_CLK_UNIT_MHZ | \
FLASHSS_MMC_CORECFG_TIMEOUT_CLK_FREQ_MIN)
#define FLASHSS_MMC_CORE_CONFIG_2 0x404
#define FLASHSS_MMC_CORECFG_HIGH_SPEED BIT(28)
#define FLASHSS_MMC_CORECFG_8BIT_EMMC BIT(20)
#define MAX_BLK_LENGTH_1024 BIT(16)
#define BASE_CLK_FREQ_200 0xc8
#define STI_FLASHSS_MMC_CORE_CONFIG2 \
(FLASHSS_MMC_CORECFG_HIGH_SPEED | \
FLASHSS_MMC_CORECFG_8BIT_EMMC | \
MAX_BLK_LENGTH_1024 | \
BASE_CLK_FREQ_200 << 0)
#define STI_FLASHSS_SDCARD_CORE_CONFIG2 \
(FLASHSS_MMC_CORECFG_HIGH_SPEED | \
MAX_BLK_LENGTH_1024 | \
BASE_CLK_FREQ_200)
#define FLASHSS_MMC_CORE_CONFIG_3 0x408
#define FLASHSS_MMC_CORECFG_SLOT_TYPE_EMMC BIT(28)
#define FLASHSS_MMC_CORECFG_ASYNCH_INTR_SUPPORT BIT(20)
#define FLASHSS_MMC_CORECFG_3P3_VOLT BIT(8)
#define FLASHSS_MMC_CORECFG_SUSP_RES_SUPPORT BIT(4)
#define FLASHSS_MMC_CORECFG_SDMA BIT(0)
#define STI_FLASHSS_MMC_CORE_CONFIG3 \
(FLASHSS_MMC_CORECFG_SLOT_TYPE_EMMC | \
FLASHSS_MMC_CORECFG_ASYNCH_INTR_SUPPORT | \
FLASHSS_MMC_CORECFG_3P3_VOLT | \
FLASHSS_MMC_CORECFG_SUSP_RES_SUPPORT | \
FLASHSS_MMC_CORECFG_SDMA)
#define STI_FLASHSS_SDCARD_CORE_CONFIG3 \
(FLASHSS_MMC_CORECFG_ASYNCH_INTR_SUPPORT | \
FLASHSS_MMC_CORECFG_3P3_VOLT | \
FLASHSS_MMC_CORECFG_SUSP_RES_SUPPORT | \
FLASHSS_MMC_CORECFG_SDMA)
#define FLASHSS_MMC_CORE_CONFIG_4 0x40c
#define FLASHSS_MMC_CORECFG_D_DRIVER_SUPPORT BIT(20)
#define FLASHSS_MMC_CORECFG_C_DRIVER_SUPPORT BIT(16)
#define FLASHSS_MMC_CORECFG_A_DRIVER_SUPPORT BIT(12)
#define STI_FLASHSS_MMC_CORE_CONFIG4 \
(FLASHSS_MMC_CORECFG_D_DRIVER_SUPPORT | \
FLASHSS_MMC_CORECFG_C_DRIVER_SUPPORT | \
FLASHSS_MMC_CORECFG_A_DRIVER_SUPPORT)
#define ST_MMC_CCONFIG_REG_5 0x210
#define SYSCONF_MMC1_ENABLE_BIT 3
#endif /* _STI_SDHCI_H_ */