Re: [PATCH] mmc: omap_hsmmc: use platform_get_irq_optional for wake IRQ

Ulf Hansson <[email protected]> Mon, 27 Jul 2026 18:25:14 +0200
Newsgroups org.kernel.vger.linux-omap,org.kernel.vger.linux-kernel,org.kernel.vger.linux-mmc
Message-ID <CAPx+jO_EbGZcWCWt5FX00o5_8c-DBeBkweHpXYx9iyjvcaNt5w@mail.gmail.com>
On Sun, Jul 26, 2026 at 11:57=E2=80=AFPM Rosen Penev <[email protected]> wro=
te:
>
> Replace irq_of_parse_and_map() with platform_get_irq_optional() to
> get the wake IRQ. This is a more portable approach that works with
> both DT and non-DT platforms, and follows the modern platform API
> conventions for optional IRQ resources.
>
> The wake IRQ is now fetched earlier in the probe function alongside
> the main IRQ, and the -EPROBE_DEFER case is handled properly before
> the deferred probe can be triggered.
>
> Signed-off-by: Rosen Penev <[email protected]>

Applied for next, thanks!

Kind regards
Uffe


> ---
>  drivers/mmc/host/omap_hsmmc.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.=
c
> index 58c881f2725b..4b5589157c59 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -1764,7 +1764,7 @@ static int omap_hsmmc_probe(struct platform_device =
*pdev)
>         struct mmc_host *mmc;
>         struct omap_hsmmc_host *host =3D NULL;
>         struct resource *res;
> -       int ret, irq;
> +       int ret, irq, wake_irq;
>         const struct of_device_id *match;
>         const struct omap_mmc_of_data *data;
>         void __iomem *base;
> @@ -1792,6 +1792,11 @@ static int omap_hsmmc_probe(struct platform_device=
 *pdev)
>         if (irq < 0)
>                 return irq;
>
> +       wake_irq =3D platform_get_irq_optional(pdev, 1);
> +       if (wake_irq =3D=3D -EPROBE_DEFER)
> +               return wake_irq;
> +       wake_irq =3D max(wake_irq, 0);
> +
>         base =3D devm_platform_get_and_ioremap_resource(pdev, 0, &res);
>         if (IS_ERR(base))
>                 return PTR_ERR(base);
> @@ -1811,6 +1816,7 @@ static int omap_hsmmc_probe(struct platform_device =
*pdev)
>         host->use_dma   =3D 1;
>         host->dma_ch    =3D -1;
>         host->irq       =3D irq;
> +       host->wake_irq  =3D wake_irq;
>         host->mapbase   =3D res->start + pdata->reg_offset;
>         host->base      =3D base + pdata->reg_offset;
>         host->power_mode =3D MMC_POWER_OFF;
> @@ -1820,9 +1826,6 @@ static int omap_hsmmc_probe(struct platform_device =
*pdev)
>
>         platform_set_drvdata(pdev, host);
>
> -       if (pdev->dev.of_node)
> -               host->wake_irq =3D irq_of_parse_and_map(pdev->dev.of_node=
, 1);
> -
>         mmc->ops        =3D &omap_hsmmc_ops;
>
>         mmc->f_min =3D OMAP_MMC_MIN_CLOCK;
> --
> 2.55.0
>