[PATCH 1/3] i2c: ibm_iic: ioremap with platform pointer
Rosen Penev <[email protected]>
| Newsgroups | org.kernel.vger.linux-i2c,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
devm_platform_ioremap_resource only needs a platform_device pointer and calling it early allows handling potential -EPROBE_DEFER. Signed-off-by: Rosen Penev <[email protected]> --- drivers/i2c/busses/i2c-ibm_iic.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c index 7c70e8bda24e..043cb64a2544 100644 --- a/drivers/i2c/busses/i2c-ibm_iic.c +++ b/drivers/i2c/busses/i2c-ibm_iic.c @@ -684,21 +684,21 @@ static int iic_probe(struct platform_device *ofdev) struct device_node *np = ofdev->dev.of_node; struct ibm_iic_private *dev; struct i2c_adapter *adap; + void __iomem *vaddr; const u32 *freq; int ret; + vaddr = devm_platform_ioremap_resource(ofdev, 0); + if (IS_ERR(vaddr)) + return PTR_ERR(vaddr); + dev = kzalloc_obj(*dev); if (!dev) return -ENOMEM; platform_set_drvdata(ofdev, dev); - dev->vaddr = of_iomap(np, 0); - if (dev->vaddr == NULL) { - dev_err(&ofdev->dev, "failed to iomap device\n"); - ret = -ENXIO; - goto error_cleanup; - } + dev->vaddr = vaddr; init_waitqueue_head(&dev->wq); @@ -751,9 +751,6 @@ static int iic_probe(struct platform_device *ofdev) free_irq(dev->irq, dev); } - if (dev->vaddr) - iounmap(dev->vaddr); - kfree(dev); return ret; } @@ -772,7 +769,6 @@ static void iic_remove(struct platform_device *ofdev) free_irq(dev->irq, dev); } - iounmap(dev->vaddr); kfree(dev); } -- 2.55.0