Hi Paul, ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Tuesday, September 17, 2019 5:45 PM, Paul Walmsley <paul.walmsley@xxxxxxxxxx> wrote: > On Tue, 17 Sep 2019, Baolin Wang wrote: > > > On Tue, 17 Sep 2019 at 17:12, Aurabindo Jayamohanan mail@xxxxxxxxxxxx wrote: > > > > > platform_get_resource() may return NULL. If it is so, return -ENXIO > > > > > > Signed-off-by: Aurabindo Jayamohanan mail@xxxxxxxxxxxx > > > > > > ------------------------------------------------------- > > > > > > drivers/spi/spi-sifive.c | 6 ++++++ > > > 1 file changed, 6 insertions(+) > > > diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c > > > index 93ec2c6cdbfd..67485067a694 100644 > > > --- a/drivers/spi/spi-sifive.c > > > +++ b/drivers/spi/spi-sifive.c > > > @@ -308,6 +308,12 @@ static int sifive_spi_probe(struct platform_device *pdev) > > > platform_set_drvdata(pdev, master); > > > > > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > > > > > > > > - if (!res) { > > > > > > > > > - dev_err(&pdev->dev, "no IOMEM resource found\\n"); > > > > > > > > > - ret = -ENXIO; > > > > > > > > > - goto put_master; > > > > > > > > > - } > > > > > > > > > > Seems unnecessary, the devm_ioremap_resource() already validated if > > the resource is available. > > Just doublechecked lib/devres.c and I agree with you. > > Aurobindo, is this a patch for a real problem that you've encountered? > > - Paul Geert is right. I was just breezing through the source and found it odd since I noticed other instances checking for return value. Apparently none of those use the managed api. If you didnt already do Geert's suggestion, here is a patch: ____ spi: sifive: use device managed api to get plaform resource calls to devm_ioremap_resource() preceeded by platform_get_resource() may be replaced by devm_platform_ioremap_resource(). Signed-off-by: Aurabindo Jayamohanan <mail@xxxxxxxxxxxx> --- drivers/spi/spi-sifive.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c index 93ec2c6cdbfd..c0925aa98aad 100644 --- a/drivers/spi/spi-sifive.c +++ b/drivers/spi/spi-sifive.c @@ -292,7 +292,6 @@ sifive_spi_transfer_one(struct spi_master *master, struct spi_device *device, static int sifive_spi_probe(struct platform_device *pdev) { struct sifive_spi *spi; - struct resource *res; int ret, irq, num_cs; u32 cs_bits, max_bits_per_word; struct spi_master *master; @@ -307,8 +306,7 @@ static int sifive_spi_probe(struct platform_device *pdev) init_completion(&spi->done); platform_set_drvdata(pdev, master); - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - spi->regs = devm_ioremap_resource(&pdev->dev, res); + spi->regs = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(spi->regs)) { ret = PTR_ERR(spi->regs); goto put_master; -- 2.23.0