diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-02-18 11:38:58 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-03-07 08:57:56 +0100 |
commit | 3bd69ad077a955b469baa90d938fd83510297335 (patch) | |
tree | 94d314d51fd295e6cb7de9f682582c29fdd50eed /drivers/i2c | |
parent | fe7855bb4f2d82ac4559c46c586c2f29e9f123e2 (diff) | |
download | barebox-3bd69ad077a955b469baa90d938fd83510297335.tar.gz barebox-3bd69ad077a955b469baa90d938fd83510297335.tar.xz |
driver: replace dev_request_mem_region with dev_request_mem_resource
dev_request_mem_region doesn't work properly one some SoCs on which
PTR_ERR() values clash with valid return values from dev_request_mem_region.
Replace them with dev_request_mem_resource where possible.
This patch has been generated with the following semantic patch:
// <smpl>
@@
expression d;
expression n;
expression io;
identifier func;
@@
func(...) {
+struct resource *iores;
<+...
-io = dev_request_mem_region(d, n);
-if (IS_ERR(io)) {
+iores = dev_request_mem_resource(d, n);
+if (IS_ERR(iores)) {
...
- return PTR_ERR(io);
-}
+ return PTR_ERR(iores);
+}
+io = IOMEM(iores->start);
...+>
}
@@
expression d;
expression n;
expression io;
identifier func;
@@
func(...) {
+struct resource *iores;
<+...
-io = dev_request_mem_region(d, n);
-if (IS_ERR(io)) {
+iores = dev_request_mem_resource(d, n);
+if (IS_ERR(iores))
- return PTR_ERR(io);
-}
+ return PTR_ERR(iores);
+io = IOMEM(iores->start);
...+>
}
@@
expression d;
expression n;
expression io;
identifier func;
@@
func(...) {
+struct resource *iores;
<+...
-io = dev_request_mem_region(d, n);
-if (IS_ERR(io)) {
- ret = PTR_ERR(io);
+iores = dev_request_mem_resource(d, n);
+if (IS_ERR(iores)) {
+ ret = PTR_ERR(iores);
...
}
+io = IOMEM(iores->start);
...+>
}
@@
expression d;
expression n;
expression io;
identifier func;
@@
func(...) {
+struct resource *iores;
<+...
-io = dev_request_mem_region(d, n);
+iores = dev_request_mem_resource(d, n);
+if (IS_ERR(iores))
+ return PTR_ERR(iores);
+io = IOMEM(iores->start);
...+>
}
@@
identifier func;
@@
func(...) {
<+...
struct resource *iores;
-struct resource *iores;
...+>
}
// </smpl>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-at91.c | 6 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-designware.c | 8 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-imx.c | 8 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-mv64xxx.c | 8 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 8 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-tegra.c | 8 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-versatile.c | 8 |
7 files changed, 35 insertions, 19 deletions
diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c index 6db724334e..76bb51bf30 100644 --- a/drivers/i2c/busses/i2c-at91.c +++ b/drivers/i2c/busses/i2c-at91.c @@ -410,6 +410,7 @@ static struct of_device_id at91_twi_dt_ids[] = { static int at91_twi_probe(struct device_d *dev) { + struct resource *iores; struct at91_twi_dev *i2c_at91; struct at91_twi_pdata *i2c_data; int rc = 0; @@ -425,7 +426,10 @@ static int at91_twi_probe(struct device_d *dev) i2c_at91->pdata = i2c_data; - i2c_at91->base = dev_request_mem_region(dev, 0); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + i2c_at91->base = IOMEM(iores->start); if (IS_ERR(i2c_at91->base)) { dev_err(dev, "could not get memory region\n"); rc = PTR_ERR(i2c_at91->base); diff --git a/drivers/i2c/busses/i2c-designware.c b/drivers/i2c/busses/i2c-designware.c index a51439f2d5..0b022afd30 100644 --- a/drivers/i2c/busses/i2c-designware.c +++ b/drivers/i2c/busses/i2c-designware.c @@ -472,6 +472,7 @@ static int i2c_dw_xfer(struct i2c_adapter *adapter, static int i2c_dw_probe(struct device_d *pdev) { + struct resource *iores; struct dw_i2c_dev *dw; struct i2c_platform_data *pdata; int ret, bitrate; @@ -494,11 +495,12 @@ static int i2c_dw_probe(struct device_d *pdev) dw->adapter.dev.parent = pdev; dw->adapter.dev.device_node = pdev->device_node; - dw->base = dev_request_mem_region(pdev, 0); - if (IS_ERR(dw->base)) { - ret = PTR_ERR(dw->base); + iores = dev_request_mem_resource(pdev, 0); + if (IS_ERR(iores)) { + ret = PTR_ERR(iores); goto fail; } + dw->base = IOMEM(iores->start); ic_comp_type_value = readl(dw->base + DW_IC_COMP_TYPE); if (ic_comp_type_value != DW_IC_COMP_TYPE_VALUE) { diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index affc277164..e407896394 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -584,6 +584,7 @@ static void i2c_fsl_init_recovery(struct fsl_i2c_struct *i2c_fsl, struct device_ static int __init i2c_fsl_probe(struct device_d *pdev) { + struct resource *iores; struct fsl_i2c_struct *i2c_fsl; struct i2c_platform_data *pdata; int ret; @@ -604,11 +605,12 @@ static int __init i2c_fsl_probe(struct device_d *pdev) i2c_fsl->adapter.nr = pdev->id; i2c_fsl->adapter.dev.parent = pdev; i2c_fsl->adapter.dev.device_node = pdev->device_node; - i2c_fsl->base = dev_request_mem_region(pdev, 0); - if (IS_ERR(i2c_fsl->base)) { - ret = PTR_ERR(i2c_fsl->base); + iores = dev_request_mem_resource(pdev, 0); + if (IS_ERR(iores)) { + ret = PTR_ERR(iores); goto fail; } + i2c_fsl->base = IOMEM(iores->start); i2c_fsl_init_recovery(i2c_fsl, pdev); diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c index 0c38e64145..9b9e6c953f 100644 --- a/drivers/i2c/busses/i2c-mv64xxx.c +++ b/drivers/i2c/busses/i2c-mv64xxx.c @@ -595,6 +595,7 @@ out: static int mv64xxx_i2c_probe(struct device_d *pd) { + struct resource *iores; struct mv64xxx_i2c_data *drv_data; int rc; @@ -603,9 +604,10 @@ mv64xxx_i2c_probe(struct device_d *pd) drv_data = xzalloc(sizeof(*drv_data)); - drv_data->reg_base = dev_request_mem_region(pd, 0); - if (IS_ERR(drv_data->reg_base)) - return PTR_ERR(drv_data->reg_base); + iores = dev_request_mem_resource(pd, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + drv_data->reg_base = IOMEM(iores->start); drv_data->clk = clk_get(pd, NULL); if (IS_ERR(drv_data->clk)) diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 48c55daeda..bdb34ca1b4 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -1070,6 +1070,7 @@ static struct i2c_bus_recovery_info omap_i2c_bus_recovery_info = { static int __init i2c_omap_probe(struct device_d *pdev) { + struct resource *iores; struct omap_i2c_struct *i2c_omap; struct omap_i2c_driver_data *i2c_data; int r; @@ -1109,9 +1110,10 @@ i2c_omap_probe(struct device_d *pdev) speed = 100; /* Default speed */ i2c_omap->speed = speed; - i2c_omap->base = dev_request_mem_region(pdev, 0); - if (IS_ERR(i2c_omap->base)) - return PTR_ERR(i2c_omap->base); + iores = dev_request_mem_resource(pdev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + i2c_omap->base = IOMEM(iores->start); /* * Read the Rev hi bit-[15:14] ie scheme this is 1 indicates ver2. diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index a6c6596f63..d56c0def65 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -605,16 +605,18 @@ static const struct tegra_i2c_hw_feature tegra114_i2c_hw = { static int tegra_i2c_probe(struct device_d *dev) { + struct resource *iores; struct tegra_i2c_dev *i2c_dev; struct clk *div_clk, *fast_clk; void __iomem *base; int ret = 0; - base = dev_request_mem_region(dev, 0); - if (IS_ERR(base)) { + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) { dev_err(dev, "could not get iomem region\n"); - return PTR_ERR(base); + return PTR_ERR(iores); } + base = IOMEM(iores->start); div_clk = clk_get(dev, "div-clk"); if (IS_ERR(div_clk)) { diff --git a/drivers/i2c/busses/i2c-versatile.c b/drivers/i2c/busses/i2c-versatile.c index bfabc78312..6a00c2a2eb 100644 --- a/drivers/i2c/busses/i2c-versatile.c +++ b/drivers/i2c/busses/i2c-versatile.c @@ -66,6 +66,7 @@ static struct i2c_algo_bit_data i2c_versatile_algo = { static int i2c_versatile_probe(struct device_d *dev) { + struct resource *iores; struct i2c_versatile *i2c; int ret; @@ -75,11 +76,12 @@ static int i2c_versatile_probe(struct device_d *dev) goto err_release; } - i2c->base = dev_request_mem_region(dev, 0); - if (IS_ERR(i2c->base)) { - ret = PTR_ERR(i2c->base); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) { + ret = PTR_ERR(iores); goto err_free; } + i2c->base = IOMEM(iores->start); writel(SCL | SDA, i2c->base + I2C_CONTROLS); |