i2c: au1550: Convert to devm_kzalloc and devm_ioremap_resource
PATCH 1/1 i2c: au1550: Convert to devm_kzalloc and devm_ioremap_resource
Use devm_* APIs to simplify the code.
Signed-off-by Axel Lin <[email protected]>
---
I don't have the h/w for testing, only compile test.
drivers/i2c/busses/i2c-au1550.c | 52 +++++++++++------------------------------ 1 file changed, 13 insertions(+), 39 deletions(-)
drivers/i2c/busses/i2c-au1550.c +13 -39
@@ -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; - r =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -if (!r) { - ret = -ENODEV ; - goto out; - } + priv =devm_kzalloc (&pdev->dev,sizeof (struct i2c_au1550_data ), +GFP_KERNEL ); +if (!priv) +return -ENOMEM ; - 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; - } + r =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); + priv->psc_base =devm_ioremap_resource (&pdev->dev, r); +if (IS_ERR (priv->psc_base)) +return PTR_ERR (priv->psc_base); - 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 ; }
Signature · 1 line
2.1.0
Quoted 3 lines · Axel Lin
Use devm_* APIs to simplify the code.
Signed-off-by Axel Lin <[email protected]>
Applied to for-next with Manuel's Tested-by, thanks!