mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 08:31:55 +00:00
mmc: sh_mobile_sdhi: improve prerequisites for tuning
Prerequisites for tuning are the same as for hw_reset. We need an SCC and a supported mode. Populate the tuning related functions only when those conditions are met. This also removes a tiny race window. Previously, the functions were populated when the SCC offset was not initialized which could have led to an OOPS. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
6ade9a2c2d
commit
e831ead3b3
@ -621,11 +621,6 @@ static int sh_mobile_sdhi_probe(struct platform_device *pdev)
|
||||
host->card_busy = sh_mobile_sdhi_card_busy;
|
||||
host->start_signal_voltage_switch =
|
||||
sh_mobile_sdhi_start_signal_voltage_switch;
|
||||
host->init_tuning = sh_mobile_sdhi_init_tuning;
|
||||
host->prepare_tuning = sh_mobile_sdhi_prepare_tuning;
|
||||
host->select_tuning = sh_mobile_sdhi_select_tuning;
|
||||
host->check_scc_error = sh_mobile_sdhi_check_scc_error;
|
||||
host->hw_reset = sh_mobile_sdhi_hw_reset;
|
||||
}
|
||||
|
||||
/* Orginally registers were 16 bit apart, could be 32 or 64 nowadays */
|
||||
@ -666,6 +661,7 @@ static int sh_mobile_sdhi_probe(struct platform_device *pdev)
|
||||
if (ret < 0)
|
||||
goto efree;
|
||||
|
||||
/* Enable tuning iff we have an SCC and a supported mode */
|
||||
if (of_data && of_data->scc_offset && host->mmc->caps & MMC_CAP_UHS_SDR104) {
|
||||
const struct sh_mobile_sdhi_scc *taps = of_data->taps;
|
||||
bool hit = false;
|
||||
@ -685,6 +681,11 @@ static int sh_mobile_sdhi_probe(struct platform_device *pdev)
|
||||
dev_warn(&host->pdev->dev, "Unknown clock rate for SDR104\n");
|
||||
|
||||
priv->scc_ctl = host->ctl + of_data->scc_offset;
|
||||
host->init_tuning = sh_mobile_sdhi_init_tuning;
|
||||
host->prepare_tuning = sh_mobile_sdhi_prepare_tuning;
|
||||
host->select_tuning = sh_mobile_sdhi_select_tuning;
|
||||
host->check_scc_error = sh_mobile_sdhi_check_scc_error;
|
||||
host->hw_reset = sh_mobile_sdhi_hw_reset;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user