diff --git a/drivers/amlogic/mmc/amlsd.c b/drivers/amlogic/mmc/amlsd.c index f5976de4f8b0..9f47b47f5f32 100644 --- a/drivers/amlogic/mmc/amlsd.c +++ b/drivers/amlogic/mmc/amlsd.c @@ -673,6 +673,9 @@ static int aml_is_sduart(struct amlsd_platform *pdata) struct amlsd_host *host = pdata->host; struct sd_emmc_status *ista = (struct sd_emmc_status *)&vstat; + if (pdata->no_sduart) + return 0; + mutex_lock(&host->pinmux_lock); pc = aml_devm_pinctrl_get_select(host, "sd_to_ao_uart_pins"); @@ -850,8 +853,7 @@ int aml_sd_uart_detect(struct amlsd_platform *pdata) return 1; pdata->is_in = true; pdata->gpio_cd_sta = true; - if ((!pdata->no_sduart) - && aml_is_sduart(pdata)) { + if (aml_is_sduart(pdata)) { aml_uart_switch(pdata, 1); pr_info("Uart in\n"); mmc->caps &= ~MMC_CAP_4_BIT_DATA; @@ -866,7 +868,7 @@ int aml_sd_uart_detect(struct amlsd_platform *pdata) } } else { pr_info("normal card in\n"); - if (host->data->chip_type < MMC_CHIP_TL1) { + if (!pdata->no_sduart) { aml_uart_switch(pdata, 0); aml_jtag_switch_ao(pdata); }