mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 19:51:31 -04:00
mmc: sdhci-esdhc-imx: support setting tuning start point
The delay cells of some SoCs may have less delay per one cell, for such SoCs, user could set the start delay cell point to bypass the first a few meaningless tuning commands. Acked-by: Adrian Hunter <[email protected]> Signed-off-by: Dong Aisheng <[email protected]> Signed-off-by: Ulf Hansson <[email protected]>
This commit is contained in:
parent
ca8cc0fe0e
commit
d87fc96636
2 changed files with 12 additions and 3 deletions
|
|
@ -76,7 +76,8 @@
|
|||
#define ESDHC_TUNING_CTRL 0xcc
|
||||
#define ESDHC_STD_TUNING_EN (1 << 24)
|
||||
/* NOTE: the minimum valid tuning start tap for mx6sl is 1 */
|
||||
#define ESDHC_TUNING_START_TAP 0x1
|
||||
#define ESDHC_TUNING_START_TAP_DEFAULT 0x1
|
||||
#define ESDHC_TUNING_START_TAP_MASK 0xff
|
||||
#define ESDHC_TUNING_STEP_MASK 0x00070000
|
||||
#define ESDHC_TUNING_STEP_SHIFT 16
|
||||
|
||||
|
|
@ -490,7 +491,12 @@ static void esdhc_writew_le(struct sdhci_host *host, u16 val, int reg)
|
|||
v |= ESDHC_MIX_CTRL_EXE_TUNE;
|
||||
m |= ESDHC_MIX_CTRL_FBCLK_SEL;
|
||||
tuning_ctrl = readl(host->ioaddr + ESDHC_TUNING_CTRL);
|
||||
tuning_ctrl |= ESDHC_STD_TUNING_EN | ESDHC_TUNING_START_TAP;
|
||||
tuning_ctrl |= ESDHC_STD_TUNING_EN | ESDHC_TUNING_START_TAP_DEFAULT;
|
||||
if (imx_data->boarddata.tuning_start_tap) {
|
||||
tuning_ctrl &= ~ESDHC_TUNING_START_TAP_MASK;
|
||||
tuning_ctrl |= imx_data->boarddata.tuning_start_tap;
|
||||
}
|
||||
|
||||
if (imx_data->boarddata.tuning_step) {
|
||||
tuning_ctrl &= ~ESDHC_TUNING_STEP_MASK;
|
||||
tuning_ctrl |= imx_data->boarddata.tuning_step << ESDHC_TUNING_STEP_SHIFT;
|
||||
|
|
@ -976,6 +982,8 @@ sdhci_esdhc_imx_probe_dt(struct platform_device *pdev,
|
|||
boarddata->wp_type = ESDHC_WP_GPIO;
|
||||
|
||||
of_property_read_u32(np, "fsl,tuning-step", &boarddata->tuning_step);
|
||||
of_property_read_u32(np, "fsl,tuning-start-tap",
|
||||
&boarddata->tuning_start_tap);
|
||||
|
||||
if (of_find_property(np, "no-1-8-v", NULL))
|
||||
boarddata->support_vsel = false;
|
||||
|
|
@ -1198,7 +1206,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
|
|||
|
||||
if (imx_data->socdata->flags & ESDHC_FLAG_STD_TUNING)
|
||||
writel(readl(host->ioaddr + ESDHC_TUNING_CTRL) |
|
||||
ESDHC_STD_TUNING_EN | ESDHC_TUNING_START_TAP,
|
||||
ESDHC_STD_TUNING_EN | ESDHC_TUNING_START_TAP_DEFAULT,
|
||||
host->ioaddr + ESDHC_TUNING_CTRL);
|
||||
|
||||
if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536)
|
||||
|
|
|
|||
Loading…
Reference in a new issue