[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2d40b062-5809-15ce-b9d1-651644ff6e22@i2se.com>
Date: Tue, 6 Apr 2021 19:59:02 +0200
From: Stefan Wahren <stefan.wahren@...e.com>
To: Nicolas Saenz Julienne <nsaenz@...nel.org>,
linux-arm-kernel@...ts.infradead.org, linux-mmc@...r.kernel.org,
devicetree@...r.kernel.org, bcm-kernel-feedback-list@...adcom.com,
linux-rpi-kernel@...ts.infradead.org,
Ray Jui <ray.jui@...adcom.com>,
Scott Branden <scott.branden@...adcom.com>,
Ulf Hansson <ulf.hansson@...aro.org>,
Stefan Wahren <wahrenst@....net>,
Matthias Brugger <mbrugger@...e.com>,
Adrian Hunter <adrian.hunter@...el.com>,
Ray Jui <rjui@...adcom.com>,
Scott Branden <sbranden@...adcom.com>
Cc: f.fainelli@...il.com, phil@...pberrypi.com,
tim.gover@...pberrypi.com, alcooperx@...il.com,
nsaenzjulienne@...e.de, linux-kernel@...r.kernel.org,
robh@...nel.org
Subject: Re: [PATCH 2/3] mmc: sdhci-iproc: Cap min clock frequency on BCM2711
Hi Nicolas,
Am 06.04.21 um 12:48 schrieb Nicolas Saenz Julienne:
> There is a known bug on BCM2711's SDHCI core integration where the
> controller will hang when the difference between the core clock and the
> bus clock is too great. Specifically this can be reproduced under the
> following conditions:
>
> - No SD card plugged in, polling thread is running, probing cards at
> 100KHz.
> - BCM2711's core clock configured at 500MHz or more.
>
> So set 200MHz as the minimum clock frequency available for that board.
i think it should be 200 kHz?
>
> For more information on the issue see this:
> https://lore.kernel.org/linux-mmc/20210322185816.27582-1-nsaenz@kernel.org/T/#m11f2783a09b581da6b8a15f302625b43a6ecdeca
>
> Fixes: f84e411c85be ("mmc: sdhci-iproc: Add support for emmc2 of the BCM2711")
> Signed-off-by: Nicolas Saenz Julienne <nsaenz@...nel.org>
> ---
> drivers/mmc/host/sdhci-iproc.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
> index ddeaf8e1f72f..1ef888e91f73 100644
> --- a/drivers/mmc/host/sdhci-iproc.c
> +++ b/drivers/mmc/host/sdhci-iproc.c
> @@ -173,6 +173,23 @@ static unsigned int sdhci_iproc_get_max_clock(struct sdhci_host *host)
> return pltfm_host->clock;
> }
>
> +/*
> + * There is a known bug on BCM2711's SDHCI core integration where the
> + * controller will hang when the difference between the core clock and the bus
> + * clock is too great. Specifically this can be reproduced under the following
> + * conditions:
> + *
> + * - No SD card plugged in, polling thread is running, probing cards at
> + * 100KHz.
> + * - BCM2711's core clock configured at 500MHz or more
> + *
> + * So we set 200MHz as the minimum clock frequency available for that SoC.
> + */
> +static unsigned int sdhci_iproc_bcm2711_get_min_clock(struct sdhci_host *host)
> +{
> + return 200000;
> +}
> +
> static const struct sdhci_ops sdhci_iproc_ops = {
> .set_clock = sdhci_set_clock,
> .get_max_clock = sdhci_iproc_get_max_clock,
> @@ -271,6 +288,7 @@ static const struct sdhci_ops sdhci_iproc_bcm2711_ops = {
> .set_clock = sdhci_set_clock,
> .set_power = sdhci_set_power_and_bus_voltage,
> .get_max_clock = sdhci_iproc_get_max_clock,
> + .get_min_clock = sdhci_iproc_bcm2711_get_min_clock,
> .set_bus_width = sdhci_set_bus_width,
> .reset = sdhci_reset,
> .set_uhs_signaling = sdhci_set_uhs_signaling,
Powered by blists - more mailing lists