* Re: [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers
2026-10-09 0:32 [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers Karl Mehltretter
@ 2026-10-09 7:11 ` Gregor Herburger
2026-10-09 9:40 ` Markus Elfring
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Gregor Herburger @ 2026-10-09 7:11 UTC (permalink / raw)
To: Karl Mehltretter
Cc: Kamal Dasu, Al Cooper, Adrian Hunter, Ulf Hansson,
Florian Fainelli, Broadcom internal kernel review list,
linux-mmc, linux-arm-kernel, linux-kernel
Hi,
On Fri, Oct 09, 2026 at 02:32:01AM +0200, Karl Mehltretter wrote:
> The BOOT register range is optional: the probe function ignores a
> failure to map it and the suspend/resume code checks for NULL. It is
> mapped with devm_platform_get_and_ioremap_resource(), though, which
> calls dev_err_probe() when the resource does not exist. Every
> non-removable host without a third reg entry therefore logs an error
> at probe time and then works normally.
>
> The binding only describes the "host" and "cfg" ranges, so this is the
> case for the in-tree users. On the Raspberry Pi 5 family (BCM2712),
> where the SDIO host of the Wi-Fi module is non-removable, each boot
> prints:
>
> sdhci-brcmstb 1001100000.mmc: error -EINVAL: invalid resource (null)
>
> Look the resource up with platform_get_resource() first and map it only
> when it is present. Hosts that do have the range are mapped by the same
> two calls as before.
>
> Fixes: b7e614802e3f ("mmc: sdhci-brcmstb: save and restore registers during PM")
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
Reviewed-by: Gregor Herburger <gregor.herburger@linutronix.de>
> ---
> Tested on a Raspberry Pi 500+ with v7.3-rc4: the message is gone, the
> SDIO card is detected as before and Wi-Fi works. Suspend/resume, the
> only user of these registers, was not tested.
I have seen this error a few times but newer looked into it. Thanks for the fix.
>
> drivers/mmc/host/sdhci-brcmstb.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
> index 1de2f05..7c17a3c 100644
> --- a/drivers/mmc/host/sdhci-brcmstb.c
> +++ b/drivers/mmc/host/sdhci-brcmstb.c
> @@ -491,6 +491,7 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
> struct sdhci_brcmstb_priv *priv;
> u32 actual_clock_mhz;
> struct sdhci_host *host;
> + struct resource *boot_res;
> struct clk *clk;
> struct clk *base_clk = NULL;
> int res;
> @@ -534,9 +535,13 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
>
> /* map non-standard BOOT registers if present */
> if (host->mmc->caps & MMC_CAP_NONREMOVABLE) {
> - priv->boot_regs = devm_platform_get_and_ioremap_resource(pdev, 2, NULL);
> - if (IS_ERR(priv->boot_regs))
> - priv->boot_regs = NULL;
> + boot_res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
> + if (boot_res) {
> + priv->boot_regs = devm_ioremap_resource(&pdev->dev,
> + boot_res);
> + if (IS_ERR(priv->boot_regs))
> + priv->boot_regs = NULL;
> + }
> }
>
> /*
>
> base-commit: 6c377d19d4a5116d9bec5203aa3c6c11523e7898
--
Gregor Herburger
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 35; Fax.: +49 7556 25 999 99
Hinweise zum Datenschutz finden Sie hier (Informations on data privacy
can be found here): https://linutronix.de/legal/data-protection.php
Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen |
Registergericht (Registration Court): Amtsgericht Freiburg i.Br., HRB700
806 | Geschäftsführer (Managing Directors): Dr. Wilfried Wessner,
Katharina Kopp, Alexander Gieringer
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers
2026-10-09 0:32 [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers Karl Mehltretter
2026-10-09 7:11 ` Gregor Herburger
@ 2026-10-09 9:40 ` Markus Elfring
2026-10-29 8:34 ` Adrian Hunter
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Markus Elfring @ 2026-10-09 9:40 UTC (permalink / raw)
To: Karl Mehltretter, linux-mmc, linux-arm-kernel,
bcm-kernel-feedback-list, Adrian Hunter, Al Cooper, Kamal Dasu,
Ulf Hansson
Cc: LKML, Florian Fainelli, Gregor Herburger
…
> +++ b/drivers/mmc/host/sdhci-brcmstb.c
> @@ -491,6 +491,7 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
> struct sdhci_brcmstb_priv *priv;
> u32 actual_clock_mhz;
> struct sdhci_host *host;
> + struct resource *boot_res;
…
I suggest to reduce the scope for this local variable because you would like to use it only
within a selected if branch.
https://elixir.bootlin.com/linux/v7.3-rc6/source/drivers/mmc/host/sdhci-brcmstb.c#L535-L540
Regards,
Markus
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers
2026-10-09 0:32 [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers Karl Mehltretter
2026-10-09 7:11 ` Gregor Herburger
2026-10-09 9:40 ` Markus Elfring
@ 2026-10-29 8:34 ` Adrian Hunter
2026-10-29 16:34 ` Florian Fainelli
2026-10-29 19:07 ` Kamal Dasu
4 siblings, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2026-10-29 8:34 UTC (permalink / raw)
To: Karl Mehltretter, Kamal Dasu, Al Cooper, Ulf Hansson
Cc: Florian Fainelli, Broadcom internal kernel review list,
linux-mmc, linux-arm-kernel, linux-kernel
On 09/10/2026 03:32, Karl Mehltretter wrote:
> The BOOT register range is optional: the probe function ignores a
> failure to map it and the suspend/resume code checks for NULL. It is
> mapped with devm_platform_get_and_ioremap_resource(), though, which
> calls dev_err_probe() when the resource does not exist. Every
> non-removable host without a third reg entry therefore logs an error
> at probe time and then works normally.
>
> The binding only describes the "host" and "cfg" ranges, so this is the
> case for the in-tree users. On the Raspberry Pi 5 family (BCM2712),
> where the SDIO host of the Wi-Fi module is non-removable, each boot
> prints:
>
> sdhci-brcmstb 1001100000.mmc: error -EINVAL: invalid resource (null)
>
> Look the resource up with platform_get_resource() first and map it only
> when it is present. Hosts that do have the range are mapped by the same
> two calls as before.
>
> Fixes: b7e614802e3f ("mmc: sdhci-brcmstb: save and restore registers during PM")
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
> Tested on a Raspberry Pi 500+ with v7.3-rc4: the message is gone, the
> SDIO card is detected as before and Wi-Fi works. Suspend/resume, the
> only user of these registers, was not tested.
>
> drivers/mmc/host/sdhci-brcmstb.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
> index 1de2f05..7c17a3c 100644
> --- a/drivers/mmc/host/sdhci-brcmstb.c
> +++ b/drivers/mmc/host/sdhci-brcmstb.c
> @@ -491,6 +491,7 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
> struct sdhci_brcmstb_priv *priv;
> u32 actual_clock_mhz;
> struct sdhci_host *host;
> + struct resource *boot_res;
> struct clk *clk;
> struct clk *base_clk = NULL;
> int res;
> @@ -534,9 +535,13 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
>
> /* map non-standard BOOT registers if present */
> if (host->mmc->caps & MMC_CAP_NONREMOVABLE) {
> - priv->boot_regs = devm_platform_get_and_ioremap_resource(pdev, 2, NULL);
> - if (IS_ERR(priv->boot_regs))
> - priv->boot_regs = NULL;
> + boot_res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
> + if (boot_res) {
> + priv->boot_regs = devm_ioremap_resource(&pdev->dev,
> + boot_res);
> + if (IS_ERR(priv->boot_regs))
> + priv->boot_regs = NULL;
> + }
> }
>
> /*
>
> base-commit: 6c377d19d4a5116d9bec5203aa3c6c11523e7898
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers
2026-10-09 0:32 [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers Karl Mehltretter
` (2 preceding siblings ...)
2026-10-29 8:34 ` Adrian Hunter
@ 2026-10-29 16:34 ` Florian Fainelli
2026-10-29 19:07 ` Kamal Dasu
4 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2026-10-29 16:34 UTC (permalink / raw)
To: Karl Mehltretter, Kamal Dasu, Al Cooper, Adrian Hunter, Ulf Hansson
Cc: Broadcom internal kernel review list, linux-mmc,
linux-arm-kernel, linux-kernel
On 10/8/26 17:32, Karl Mehltretter wrote:
> The BOOT register range is optional: the probe function ignores a
> failure to map it and the suspend/resume code checks for NULL. It is
> mapped with devm_platform_get_and_ioremap_resource(), though, which
> calls dev_err_probe() when the resource does not exist. Every
> non-removable host without a third reg entry therefore logs an error
> at probe time and then works normally.
>
> The binding only describes the "host" and "cfg" ranges, so this is the
> case for the in-tree users. On the Raspberry Pi 5 family (BCM2712),
> where the SDIO host of the Wi-Fi module is non-removable, each boot
> prints:
>
> sdhci-brcmstb 1001100000.mmc: error -EINVAL: invalid resource (null)
>
> Look the resource up with platform_get_resource() first and map it only
> when it is present. Hosts that do have the range are mapped by the same
> two calls as before.
>
> Fixes: b7e614802e3f ("mmc: sdhci-brcmstb: save and restore registers during PM")
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
--
Florian
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers
2026-10-09 0:32 [PATCH] mmc: sdhci-brcmstb: don't log an error for missing BOOT registers Karl Mehltretter
` (3 preceding siblings ...)
2026-10-29 16:34 ` Florian Fainelli
@ 2026-10-29 19:07 ` Kamal Dasu
4 siblings, 0 replies; 6+ messages in thread
From: Kamal Dasu @ 2026-10-29 19:07 UTC (permalink / raw)
To: Karl Mehltretter
Cc: Al Cooper, Adrian Hunter, Ulf Hansson, Florian Fainelli,
Broadcom internal kernel review list, linux-mmc,
linux-arm-kernel, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1189 bytes --]
On Thu, Oct 8, 2026 at 8:32 PM Karl Mehltretter <kmehltretter@gmail.com> wrote:
>
> The BOOT register range is optional: the probe function ignores a
> failure to map it and the suspend/resume code checks for NULL. It is
> mapped with devm_platform_get_and_ioremap_resource(), though, which
> calls dev_err_probe() when the resource does not exist. Every
> non-removable host without a third reg entry therefore logs an error
> at probe time and then works normally.
>
> The binding only describes the "host" and "cfg" ranges, so this is the
> case for the in-tree users. On the Raspberry Pi 5 family (BCM2712),
> where the SDIO host of the Wi-Fi module is non-removable, each boot
> prints:
>
> sdhci-brcmstb 1001100000.mmc: error -EINVAL: invalid resource (null)
>
> Look the resource up with platform_get_resource() first and map it only
> when it is present. Hosts that do have the range are mapped by the same
> two calls as before.
>
> Fixes: b7e614802e3f ("mmc: sdhci-brcmstb: save and restore registers during PM")
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
LGTM
Reviewed-by: Kamal Dasu <kamal.dasu@broadcom.com>
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5461 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread