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;
|
void __iomem *psc_base;
|
||||||
int xfer_timeout;
|
int xfer_timeout;
|
||||||
struct i2c_adapter adap;
|
struct i2c_adapter adap;
|
||||||
struct resource *ioarea;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void WR(struct i2c_au1550_data *a, int r, unsigned long v)
|
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;
|
struct resource *r;
|
||||||
int ret;
|
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);
|
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
if (!r) {
|
priv->psc_base = devm_ioremap_resource(&pdev->dev, r);
|
||||||
ret = -ENODEV;
|
if (IS_ERR(priv->psc_base))
|
||||||
goto out;
|
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->xfer_timeout = 200;
|
||||||
|
|
||||||
priv->adap.nr = pdev->id;
|
priv->adap.nr = pdev->id;
|
||||||
|
@ -351,20 +336,13 @@ i2c_au1550_probe(struct platform_device *pdev)
|
||||||
i2c_au1550_setup(priv);
|
i2c_au1550_setup(priv);
|
||||||
|
|
||||||
ret = i2c_add_numbered_adapter(&priv->adap);
|
ret = i2c_add_numbered_adapter(&priv->adap);
|
||||||
if (ret == 0) {
|
if (ret) {
|
||||||
platform_set_drvdata(pdev, priv);
|
i2c_au1550_disable(priv);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
i2c_au1550_disable(priv);
|
platform_set_drvdata(pdev, priv);
|
||||||
iounmap(priv->psc_base);
|
return 0;
|
||||||
out_map:
|
|
||||||
release_resource(priv->ioarea);
|
|
||||||
kfree(priv->ioarea);
|
|
||||||
out_mem:
|
|
||||||
kfree(priv);
|
|
||||||
out:
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int i2c_au1550_remove(struct platform_device *pdev)
|
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_del_adapter(&priv->adap);
|
||||||
i2c_au1550_disable(priv);
|
i2c_au1550_disable(priv);
|
||||||
iounmap(priv->psc_base);
|
|
||||||
release_resource(priv->ioarea);
|
|
||||||
kfree(priv->ioarea);
|
|
||||||
kfree(priv);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue