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 >