Commit a1382d19 authored by Conor Dooley's avatar Conor Dooley Committed by Ulf Hansson

mmc: mmc_spi: allow for spi controllers incapable of getting as low as 400k

Some controllers may not be able to reach a bus clock as low as 400 KHz
due to a lack of sufficient divisors. In these cases, the SD card slot
becomes non-functional as Linux continuously attempts to set the bus
clock to 400 KHz. If the controller is incapable of getting that low,
set its minimum frequency instead. While this may eliminate some SD
cards, it allows those capable of operating at the controller's minimum
frequency to be used.
Signed-off-by: default avatarConor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20240625-gigantic-frown-1ef4afa3e6fa@wendySigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent d0f45925
...@@ -1208,7 +1208,10 @@ static int mmc_spi_probe(struct spi_device *spi) ...@@ -1208,7 +1208,10 @@ static int mmc_spi_probe(struct spi_device *spi)
* that's the only reason not to use a few MHz for f_min (until * that's the only reason not to use a few MHz for f_min (until
* the upper layer reads the target frequency from the CSD). * the upper layer reads the target frequency from the CSD).
*/ */
mmc->f_min = 400000; if (spi->controller->min_speed_hz > 400000)
dev_warn(&spi->dev,"Controller unable to reduce bus clock to 400 KHz\n");
mmc->f_min = max(spi->controller->min_speed_hz, 400000);
mmc->f_max = spi->max_speed_hz; mmc->f_max = spi->max_speed_hz;
host = mmc_priv(mmc); host = mmc_priv(mmc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment