i2c: au1550: Convert to devm_kzalloc and devm_ioremap_resource
Use devm_* APIs to simplify the code. Signed-off-by: Axel Lin <axel.lin@ingics.com> Tested-by: Manuel Lauss <manuel.lauss@gmail.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
parent
9e685c84c2
commit
174f2366b0
@ -48,7 +48,6 @@ struct i2c_au1550_data {
|
||||
void __iomem *psc_base;
|
||||
int xfer_timeout;
|
||||
struct i2c_adapter adap;
|
||||
struct resource *ioarea;
|
||||
};
|
||||
|
||||
static inline void WR(struct i2c_au1550_data *a, int r, unsigned long v)
|
||||
@ -315,30 +314,16 @@ i2c_au1550_probe(struct platform_device *pdev)
|
||||
struct resource *r;
|
||||
int ret;
|
||||
|
||||
priv = devm_kzalloc(&pdev->dev, sizeof(struct i2c_au1550_data),
|
||||
GFP_KERNEL);
|
||||
if (!priv)
|
||||
return -ENOMEM;
|
||||
|
||||
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!r) {
|
||||
ret = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
priv->psc_base = devm_ioremap_resource(&pdev->dev, r);
|
||||
if (IS_ERR(priv->psc_base))
|
||||
return PTR_ERR(priv->psc_base);
|
||||
|
||||
priv = kzalloc(sizeof(struct i2c_au1550_data), GFP_KERNEL);
|
||||
if (!priv) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
priv->ioarea = request_mem_region(r->start, resource_size(r),
|
||||
pdev->name);
|
||||
if (!priv->ioarea) {
|
||||
ret = -EBUSY;
|
||||
goto out_mem;
|
||||
}
|
||||
|
||||
priv->psc_base = ioremap(r->start, resource_size(r));
|
||||
if (!priv->psc_base) {
|
||||
ret = -EIO;
|
||||
goto out_map;
|
||||
}
|
||||
priv->xfer_timeout = 200;
|
||||
|
||||
priv->adap.nr = pdev->id;
|
||||
@ -351,20 +336,13 @@ i2c_au1550_probe(struct platform_device *pdev)
|
||||
i2c_au1550_setup(priv);
|
||||
|
||||
ret = i2c_add_numbered_adapter(&priv->adap);
|
||||
if (ret == 0) {
|
||||
platform_set_drvdata(pdev, priv);
|
||||
return 0;
|
||||
if (ret) {
|
||||
i2c_au1550_disable(priv);
|
||||
return ret;
|
||||
}
|
||||
|
||||
i2c_au1550_disable(priv);
|
||||
iounmap(priv->psc_base);
|
||||
out_map:
|
||||
release_resource(priv->ioarea);
|
||||
kfree(priv->ioarea);
|
||||
out_mem:
|
||||
kfree(priv);
|
||||
out:
|
||||
return ret;
|
||||
platform_set_drvdata(pdev, priv);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int i2c_au1550_remove(struct platform_device *pdev)
|
||||
@ -373,10 +351,6 @@ static int i2c_au1550_remove(struct platform_device *pdev)
|
||||
|
||||
i2c_del_adapter(&priv->adap);
|
||||
i2c_au1550_disable(priv);
|
||||
iounmap(priv->psc_base);
|
||||
release_resource(priv->ioarea);
|
||||
kfree(priv->ioarea);
|
||||
kfree(priv);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user