mmc: mtk-sd: Take action for no-sdio device-tree parameter
This driver was unconditionally enabling support for SDIO mode, but we do have a generic "no-sdio" DT parameter that sets caps2 MMC_CAP2_NO_SDIO. Modify the HW initialization sequence to enable SDIO support only if it hasn't been explicitly disabled in device-tree. Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20211216125748.179602-3-angelogioacchino.delregno@collabora.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
4fe5431849
commit
83b2721715
|
@ -1638,6 +1638,7 @@ static void msdc_init_hw(struct msdc_host *host)
|
||||||
{
|
{
|
||||||
u32 val;
|
u32 val;
|
||||||
u32 tune_reg = host->dev_comp->pad_tune_reg;
|
u32 tune_reg = host->dev_comp->pad_tune_reg;
|
||||||
|
struct mmc_host *mmc = mmc_from_priv(host);
|
||||||
|
|
||||||
if (host->reset) {
|
if (host->reset) {
|
||||||
reset_control_assert(host->reset);
|
reset_control_assert(host->reset);
|
||||||
|
@ -1743,14 +1744,18 @@ static void msdc_init_hw(struct msdc_host *host)
|
||||||
MSDC_PAD_TUNE_RXDLYSEL);
|
MSDC_PAD_TUNE_RXDLYSEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Configure to enable SDIO mode.
|
if (mmc->caps2 & MMC_CAP2_NO_SDIO) {
|
||||||
* it's must otherwise sdio cmd5 failed
|
sdr_clr_bits(host->base + SDC_CFG, SDC_CFG_SDIO);
|
||||||
*/
|
sdr_clr_bits(host->base + MSDC_INTEN, MSDC_INTEN_SDIOIRQ);
|
||||||
sdr_set_bits(host->base + SDC_CFG, SDC_CFG_SDIO);
|
sdr_clr_bits(host->base + SDC_ADV_CFG0, SDC_DAT1_IRQ_TRIGGER);
|
||||||
|
} else {
|
||||||
|
/* Configure to enable SDIO mode, otherwise SDIO CMD5 fails */
|
||||||
|
sdr_set_bits(host->base + SDC_CFG, SDC_CFG_SDIO);
|
||||||
|
|
||||||
/* Config SDIO device detect interrupt function */
|
/* Config SDIO device detect interrupt function */
|
||||||
sdr_clr_bits(host->base + SDC_CFG, SDC_CFG_SDIOIDE);
|
sdr_clr_bits(host->base + SDC_CFG, SDC_CFG_SDIOIDE);
|
||||||
sdr_set_bits(host->base + SDC_ADV_CFG0, SDC_DAT1_IRQ_TRIGGER);
|
sdr_set_bits(host->base + SDC_ADV_CFG0, SDC_DAT1_IRQ_TRIGGER);
|
||||||
|
}
|
||||||
|
|
||||||
/* Configure to default data timeout */
|
/* Configure to default data timeout */
|
||||||
sdr_set_field(host->base + SDC_CFG, SDC_CFG_DTOC, 3);
|
sdr_set_field(host->base + SDC_CFG, SDC_CFG_DTOC, 3);
|
||||||
|
|
Loading…
Reference in New Issue