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/gpio/gpio-ath79.c | 8 +++++--- drivers/gpio/gpio-bcm2835.c | 6 +++++- drivers/gpio/gpio-clps711x.c | 22 +++++++++++++--------- drivers/gpio/gpio-davinci.c | 8 +++++--- drivers/gpio/gpio-digic.c | 6 +++++- drivers/gpio/gpio-dw.c | 8 +++++--- drivers/gpio/gpio-imx.c | 6 +++++- drivers/gpio/gpio-jz4740.c | 8 +++++--- drivers/gpio/gpio-malta-fpga-i2c.c | 8 +++++--- drivers/gpio/gpio-omap.c | 8 +++++--- drivers/gpio/gpio-orion.c | 8 +++++--- drivers/gpio/gpio-tegra.c | 8 +++++--- 12 files changed, 68 insertions(+), 36 deletions(-) (limited to 'drivers/gpio') diff --git a/drivers/gpio/gpio-ath79.c b/drivers/gpio/gpio-ath79.c index a1e42c417d..d08d743b54 100644 --- a/drivers/gpio/gpio-ath79.c +++ b/drivers/gpio/gpio-ath79.c @@ -107,6 +107,7 @@ static const struct of_device_id ath79_gpio_of_match[] = { static int ath79_gpio_probe(struct device_d *dev) { + struct resource *iores; struct device_node *np = dev->device_node; int err; @@ -125,11 +126,12 @@ static int ath79_gpio_probe(struct device_d *dev) return -EINVAL; } - ath79_gpio_base = dev_request_mem_region(dev, 0); - if (IS_ERR(ath79_gpio_base)) { + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) { dev_err(dev, "could not get memory region\n"); - return PTR_ERR(ath79_gpio_base); + return PTR_ERR(iores); } + ath79_gpio_base = IOMEM(iores->start); ath79_gpio_chip.dev = dev; ath79_gpio_chip.ngpio = ath79_gpio_count; diff --git a/drivers/gpio/gpio-bcm2835.c b/drivers/gpio/gpio-bcm2835.c index cec15c98b1..1802ab7ccb 100644 --- a/drivers/gpio/gpio-bcm2835.c +++ b/drivers/gpio/gpio-bcm2835.c @@ -112,11 +112,15 @@ static struct gpio_ops bcm2835_gpio_ops = { static int bcm2835_gpio_probe(struct device_d *dev) { + struct resource *iores; struct bcm2835_gpio_chip *bcmgpio; int ret; bcmgpio = xzalloc(sizeof(*bcmgpio)); - bcmgpio->base = dev_request_mem_region(dev, 0); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + bcmgpio->base = IOMEM(iores->start); bcmgpio->chip.ops = &bcm2835_gpio_ops; bcmgpio->chip.base = 0; bcmgpio->chip.ngpio = 54; diff --git a/drivers/gpio/gpio-clps711x.c b/drivers/gpio/gpio-clps711x.c index 43268b6bbf..d71c606690 100644 --- a/drivers/gpio/gpio-clps711x.c +++ b/drivers/gpio/gpio-clps711x.c @@ -15,6 +15,7 @@ static int clps711x_gpio_probe(struct device_d *dev) { + struct resource *iores; int err, id = dev->id; void __iomem *dat, *dir = NULL, *dir_inv = NULL; struct bgpio_chip *bgc; @@ -25,20 +26,23 @@ static int clps711x_gpio_probe(struct device_d *dev) if (id < 0 || id > 4) return -ENODEV; - dat = dev_request_mem_region(dev, 0); - if (IS_ERR(dat)) - return PTR_ERR(dat); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + dat = IOMEM(iores->start); switch (id) { case 3: - dir_inv = dev_request_mem_region(dev, 1); - if (IS_ERR(dir_inv)) - return PTR_ERR(dir_inv); + iores = dev_request_mem_resource(dev, 1); + if (IS_ERR(iores)) + return PTR_ERR(iores); + dir_inv = IOMEM(iores->start); break; default: - dir = dev_request_mem_region(dev, 1); - if (IS_ERR(dir)) - return PTR_ERR(dir); + iores = dev_request_mem_resource(dev, 1); + if (IS_ERR(iores)) + return PTR_ERR(iores); + dir = IOMEM(iores->start); break; } diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c index 61c6e7e68c..7c060a09b1 100644 --- a/drivers/gpio/gpio-davinci.c +++ b/drivers/gpio/gpio-davinci.c @@ -142,6 +142,7 @@ static struct gpio_ops davinci_gpio_ops = { static int davinci_gpio_probe(struct device_d *dev) { + struct resource *iores; void __iomem *gpio_base; int ret; u32 val; @@ -162,11 +163,12 @@ static int davinci_gpio_probe(struct device_d *dev) chips = xzalloc((ngpio / 32 + 1) * sizeof(*chips)); - gpio_base = dev_request_mem_region(dev, 0); - if (IS_ERR(gpio_base)) { + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) { dev_err(dev, "could not get memory region\n"); - return PTR_ERR(gpio_base); + return PTR_ERR(iores); } + gpio_base = IOMEM(iores->start); for (i = 0, base = 0; base < ngpio; i++, base += 32) { struct davinci_gpio_regs __iomem *regs; diff --git a/drivers/gpio/gpio-digic.c b/drivers/gpio/gpio-digic.c index 468aaa79ab..714e3b4a1d 100644 --- a/drivers/gpio/gpio-digic.c +++ b/drivers/gpio/gpio-digic.c @@ -122,6 +122,7 @@ static struct gpio_ops digic_gpio_ops = { static int digic_gpio_probe(struct device_d *dev) { + struct resource *iores; struct digic_gpio_chip *chip; struct resource *res; resource_size_t rsize; @@ -136,7 +137,10 @@ static int digic_gpio_probe(struct device_d *dev) rsize = resource_size(res); chip->gc.ngpio = rsize / sizeof(int32_t); - chip->base = dev_request_mem_region(dev, 0); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + chip->base = IOMEM(iores->start); chip->gc.ops = &digic_gpio_ops; chip->gc.base = 0; diff --git a/drivers/gpio/gpio-dw.c b/drivers/gpio/gpio-dw.c index 258e43b84e..f145c01232 100644 --- a/drivers/gpio/gpio-dw.c +++ b/drivers/gpio/gpio-dw.c @@ -164,14 +164,16 @@ static int dw_gpio_add_port(struct device_d *dev, struct device_node *node, static int dw_gpio_probe(struct device_d *dev) { + struct resource *iores; struct dw_gpio *gpio; struct device_node *node; gpio = xzalloc(sizeof(*gpio)); - gpio->regs = dev_request_mem_region(dev, 0); - if (IS_ERR(gpio->regs)) - return PTR_ERR(gpio->regs); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + gpio->regs = IOMEM(iores->start); for_each_child_of_node(dev->device_node, node) dw_gpio_add_port(dev, node, gpio); diff --git a/drivers/gpio/gpio-imx.c b/drivers/gpio/gpio-imx.c index 6311db22fe..bfb0119c84 100644 --- a/drivers/gpio/gpio-imx.c +++ b/drivers/gpio/gpio-imx.c @@ -132,6 +132,7 @@ static struct gpio_ops imx_gpio_ops = { static int imx_gpio_probe(struct device_d *dev) { + struct resource *iores; struct imx_gpio_chip *imxgpio; struct imx_gpio_regs *regs; int ret; @@ -141,7 +142,10 @@ static int imx_gpio_probe(struct device_d *dev) return ret; imxgpio = xzalloc(sizeof(*imxgpio)); - imxgpio->base = dev_request_mem_region(dev, 0); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + imxgpio->base = IOMEM(iores->start); imxgpio->chip.ops = &imx_gpio_ops; if (dev->id < 0) { imxgpio->chip.base = of_alias_get_id(dev->device_node, "gpio"); diff --git a/drivers/gpio/gpio-jz4740.c b/drivers/gpio/gpio-jz4740.c index f7e6781dc1..87e0716b06 100644 --- a/drivers/gpio/gpio-jz4740.c +++ b/drivers/gpio/gpio-jz4740.c @@ -90,15 +90,17 @@ static struct gpio_ops jz4740_gpio_ops = { static int jz4740_gpio_probe(struct device_d *dev) { + struct resource *iores; void __iomem *base; struct jz4740_gpio_chip *jz4740_gpio; int ret; - 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 memory region\n"); - return PTR_ERR(base); + return PTR_ERR(iores); } + base = IOMEM(iores->start); jz4740_gpio = xzalloc(sizeof(*jz4740_gpio)); jz4740_gpio->base = base; diff --git a/drivers/gpio/gpio-malta-fpga-i2c.c b/drivers/gpio/gpio-malta-fpga-i2c.c index ff77b8c7ef..0188e51af2 100644 --- a/drivers/gpio/gpio-malta-fpga-i2c.c +++ b/drivers/gpio/gpio-malta-fpga-i2c.c @@ -133,15 +133,17 @@ static struct gpio_ops malta_i2c_gpio_ops = { static int malta_i2c_gpio_probe(struct device_d *dev) { + struct resource *iores; void __iomem *gpio_base; struct malta_i2c_gpio *sc; int ret; - gpio_base = dev_request_mem_region(dev, 0); - if (IS_ERR(gpio_base)) { + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) { dev_err(dev, "could not get memory region\n"); - return PTR_ERR(gpio_base); + return PTR_ERR(iores); } + gpio_base = IOMEM(iores->start); sc = xzalloc(sizeof(*sc)); sc->base = gpio_base; diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index 43449df45b..b00766a6aa 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c @@ -141,15 +141,17 @@ static struct gpio_ops omap_gpio_ops = { static int omap_gpio_probe(struct device_d *dev) { + struct resource *iores; struct omap_gpio_chip *omapgpio; struct omap_gpio_drvdata *drvdata = NULL; dev_get_drvdata(dev, (const void **)&drvdata); omapgpio = xzalloc(sizeof(*omapgpio)); - omapgpio->base = dev_request_mem_region(dev, 0); - if (IS_ERR(omapgpio->base)) - return PTR_ERR(omapgpio->base); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + omapgpio->base = IOMEM(iores->start); if (drvdata) omapgpio->base += drvdata->regofs; diff --git a/drivers/gpio/gpio-orion.c b/drivers/gpio/gpio-orion.c index 5348395d58..63ef966edf 100644 --- a/drivers/gpio/gpio-orion.c +++ b/drivers/gpio/gpio-orion.c @@ -89,6 +89,7 @@ static struct gpio_ops orion_gpio_ops = { static int orion_gpio_probe(struct device_d *dev) { + struct resource *iores; struct orion_gpio_chip *gpio; dev->id = of_alias_get_id(dev->device_node, "gpio"); @@ -96,11 +97,12 @@ static int orion_gpio_probe(struct device_d *dev) return dev->id; gpio = xzalloc(sizeof(*gpio)); - gpio->regs = dev_request_mem_region(dev, 0); - if (IS_ERR(gpio->regs)) { + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) { free(gpio); - return PTR_ERR(gpio->regs); + return PTR_ERR(iores); } + gpio->regs = IOMEM(iores->start); gpio->chip.dev = dev; gpio->chip.ops = &orion_gpio_ops; gpio->chip.base = dev->id * 32; diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c index e2cc3f4a8c..56808b57e4 100644 --- a/drivers/gpio/gpio-tegra.c +++ b/drivers/gpio/gpio-tegra.c @@ -140,6 +140,7 @@ static struct gpio_chip tegra_gpio_chip = { static int tegra_gpio_probe(struct device_d *dev) { + struct resource *iores; int i, j, ret; ret = dev_get_drvdata(dev, (const void **)&config); @@ -148,11 +149,12 @@ static int tegra_gpio_probe(struct device_d *dev) return ret; } - gpio_base = dev_request_mem_region(dev, 0); - if (IS_ERR(gpio_base)) { + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) { dev_err(dev, "could not get memory region\n"); - return PTR_ERR(gpio_base); + return PTR_ERR(iores); } + gpio_base = IOMEM(iores->start); for (i = 0; i < config->bank_count; i++) { for (j = 0; j < 4; j++) { -- cgit v1.2.3