From 3bd69ad077a955b469baa90d938fd83510297335 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 18 Feb 2016 11:38:58 +0100 Subject: 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: // @@ 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; ...+> } // Signed-off-by: Sascha Hauer --- drivers/i2c/busses/i2c-at91.c | 6 +++++- drivers/i2c/busses/i2c-designware.c | 8 +++++--- drivers/i2c/busses/i2c-imx.c | 8 +++++--- drivers/i2c/busses/i2c-mv64xxx.c | 8 +++++--- drivers/i2c/busses/i2c-omap.c | 8 +++++--- drivers/i2c/busses/i2c-tegra.c | 8 +++++--- drivers/i2c/busses/i2c-versatile.c | 8 +++++--- 7 files changed, 35 insertions(+), 19 deletions(-) (limited to 'drivers/i2c') 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); -- cgit v1.2.3