summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-07-31 10:38:08 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-09-16 08:32:10 +0200
commited6e965824303255cacc1c1a195d3684caa26bce (patch)
tree26e2b1b78498675ceae4dd2e990836c26ec1d5ec /drivers
parent5bdc82c54a3306f2ae151a00f2df54f9240395b8 (diff)
downloadbarebox-ed6e965824303255cacc1c1a195d3684caa26bce.tar.gz
barebox-ed6e965824303255cacc1c1a195d3684caa26bce.tar.xz
resource: Let dev_request_mem_region return an error pointer
For all users fix or add the error check. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/ahci.c3
-rw-r--r--drivers/ata/intf_platform_ide.c9
-rw-r--r--drivers/ata/pata-imx.c2
-rw-r--r--drivers/ata/sata-imx.c4
-rw-r--r--drivers/base/driver.c4
-rw-r--r--drivers/bus/imx-weim.c5
-rw-r--r--drivers/clk/clk-ar933x.c4
-rw-r--r--drivers/clk/mvebu/common.c5
-rw-r--r--drivers/clk/mxs/clk-imx23.c2
-rw-r--r--drivers/clk/mxs/clk-imx28.c2
-rw-r--r--drivers/clk/socfpga.c4
-rw-r--r--drivers/clk/tegra/clk-tegra124.c4
-rw-r--r--drivers/clk/tegra/clk-tegra20.c4
-rw-r--r--drivers/clk/tegra/clk-tegra30.c4
-rw-r--r--drivers/clocksource/arm_smp_twd.c2
-rw-r--r--drivers/clocksource/bcm2835.c2
-rw-r--r--drivers/clocksource/clps711x.c4
-rw-r--r--drivers/clocksource/digic.c5
-rw-r--r--drivers/clocksource/mvebu.c2
-rw-r--r--drivers/clocksource/nomadik.c2
-rw-r--r--drivers/clocksource/orion.c3
-rw-r--r--drivers/clocksource/uemd.c5
-rw-r--r--drivers/dma/apbh_dma.c5
-rw-r--r--drivers/gpio/gpio-clps711x.c10
-rw-r--r--drivers/gpio/gpio-davinci.c4
-rw-r--r--drivers/gpio/gpio-dw.c5
-rw-r--r--drivers/gpio/gpio-jz4740.c5
-rw-r--r--drivers/gpio/gpio-malta-fpga-i2c.c4
-rw-r--r--drivers/gpio/gpio-omap.c4
-rw-r--r--drivers/gpio/gpio-tegra.c4
-rw-r--r--drivers/i2c/busses/i2c-imx.c3
-rw-r--r--drivers/i2c/busses/i2c-omap.c2
-rw-r--r--drivers/i2c/busses/i2c-versatile.c5
-rw-r--r--drivers/input/imx_keypad.c3
-rw-r--r--drivers/mci/atmel_mci.c2
-rw-r--r--drivers/mci/dw_mmc.c4
-rw-r--r--drivers/mci/imx-esdhc.c2
-rw-r--r--drivers/mci/imx.c2
-rw-r--r--drivers/mci/mci-bcm2835.c5
-rw-r--r--drivers/mci/mxs.c2
-rw-r--r--drivers/mci/omap_hsmmc.c3
-rw-r--r--drivers/mci/pxamci.c3
-rw-r--r--drivers/mci/s3c.c4
-rw-r--r--drivers/mci/tegra-sdmmc.c5
-rw-r--r--drivers/misc/sram.c5
-rw-r--r--drivers/mtd/nand/atmel_nand.c3
-rw-r--r--drivers/mtd/nand/nand_mxs.c5
-rw-r--r--drivers/mtd/nand/nand_orion.c4
-rw-r--r--drivers/mtd/nor/cfi_flash.c4
-rw-r--r--drivers/net/altera_tse.c9
-rw-r--r--drivers/net/ar231x.c9
-rw-r--r--drivers/net/arc_emac.c3
-rw-r--r--drivers/net/cpsw.c3
-rw-r--r--drivers/net/designware.c4
-rw-r--r--drivers/net/ethoc.c3
-rw-r--r--drivers/net/fec_mpc5200.c3
-rw-r--r--drivers/net/ks8851_mll.c6
-rw-r--r--drivers/net/macb.c2
-rw-r--r--drivers/net/smc91111.c3
-rw-r--r--drivers/pinctrl/imx-iomux-v2.c3
-rw-r--r--drivers/pinctrl/mvebu/armada-xp.c4
-rw-r--r--drivers/pinctrl/mvebu/kirkwood.c5
-rw-r--r--drivers/pinctrl/pinctrl-at91.c4
-rw-r--r--drivers/pinctrl/pinctrl-tegra20.c5
-rw-r--r--drivers/pinctrl/pinctrl-tegra30.c5
-rw-r--r--drivers/pwm/pwm-imx.c5
-rw-r--r--drivers/serial/atmel.c3
-rw-r--r--drivers/serial/serial_ar933x.c3
-rw-r--r--drivers/serial/serial_auart.c2
-rw-r--r--drivers/serial/serial_cadence.c4
-rw-r--r--drivers/serial/serial_mpc5xxx.c3
-rw-r--r--drivers/serial/serial_ns16550.c2
-rw-r--r--drivers/serial/stm-serial.c2
-rw-r--r--drivers/spi/altera_spi.c3
-rw-r--r--drivers/spi/mvebu_spi.c4
-rw-r--r--drivers/spi/mxs_spi.c3
-rw-r--r--drivers/usb/gadget/at91_udc.c4
-rw-r--r--drivers/usb/gadget/fsl_udc.c4
-rw-r--r--drivers/usb/host/ehci-hcd.c4
-rw-r--r--drivers/usb/host/ohci-hcd.c3
-rw-r--r--drivers/usb/imx/chipidea-imx.c5
-rw-r--r--drivers/video/atmel_lcdfb_core.c2
-rw-r--r--drivers/video/imx-ipu-fb.c2
-rw-r--r--drivers/video/imx.c3
-rw-r--r--drivers/video/pxa.c3
-rw-r--r--drivers/watchdog/im28wd.c3
86 files changed, 248 insertions, 78 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 810d9abef7..645e9b5b7e 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -28,6 +28,7 @@
#include <malloc.h>
#include <scsi.h>
#include <linux/ctype.h>
+#include <linux/err.h>
#include <disks.h>
#include <asm/mmu.h>
#include <ata_drive.h>
@@ -654,6 +655,8 @@ static int ahci_probe(struct device_d *dev)
ahci = xzalloc(sizeof(*ahci));
regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(regs))
+ return PTR_ERR(regs);
ahci->dev = dev;
ahci->mmio_base = regs;
diff --git a/drivers/ata/intf_platform_ide.c b/drivers/ata/intf_platform_ide.c
index 851f8f5c5b..0d392d8d4a 100644
--- a/drivers/ata/intf_platform_ide.c
+++ b/drivers/ata/intf_platform_ide.c
@@ -84,7 +84,7 @@ static int platform_ide_probe(struct device_d *dev)
struct ide_port *ide;
void *reg_base, *alt_base = NULL;
struct resource *reg, *alt;
- int mmio;
+ int mmio = 0;
if (pdata == NULL) {
dev_err(dev, "No platform data. Cannot continue\n");
@@ -92,9 +92,12 @@ static int platform_ide_probe(struct device_d *dev)
}
reg_base = dev_request_mem_region(dev, 0);
- mmio = (reg_base != NULL);
- if (mmio) {
+
+ if (!IS_ERR(reg_base)) {
+ mmio = 1;
alt_base = dev_request_mem_region(dev, 1);
+ if (IS_ERR(alt_base))
+ alt_base = NULL;
} else {
reg = dev_get_resource(dev, IORESOURCE_IO, 0);
if (IS_ERR(reg))
diff --git a/drivers/ata/pata-imx.c b/drivers/ata/pata-imx.c
index 6bd7524a6a..d8deba1461 100644
--- a/drivers/ata/pata-imx.c
+++ b/drivers/ata/pata-imx.c
@@ -161,6 +161,8 @@ static int imx_pata_probe(struct device_d *dev)
ide = xzalloc(sizeof(*ide));
base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(base))
+ return PTR_ERR(base);
clk = clk_get(dev, NULL);
if (IS_ERR(clk)) {
diff --git a/drivers/ata/sata-imx.c b/drivers/ata/sata-imx.c
index 450cf4f53f..1c0e1dbd7d 100644
--- a/drivers/ata/sata-imx.c
+++ b/drivers/ata/sata-imx.c
@@ -99,8 +99,8 @@ static int imx_sata_probe(struct device_d *dev)
}
imx_ahci->ahci.mmio_base = dev_request_mem_region(dev, 0);
- if (!imx_ahci->ahci.mmio_base)
- return -ENODEV;
+ if (IS_ERR(imx_ahci->ahci.mmio_base))
+ return PTR_ERR(imx_ahci->ahci.mmio_base);
data->init(imx_ahci);
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index e61c6c57ca..e024024616 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -324,11 +324,11 @@ void __iomem *dev_request_mem_region(struct device_d *dev, int num)
res = dev_get_resource(dev, IORESOURCE_MEM, num);
if (IS_ERR(res))
- return NULL;
+ return ERR_CAST(res);
res = request_iomem_region(dev_name(dev), res->start, res->end);
if (IS_ERR(res))
- return NULL;
+ return ERR_CAST(res);
return (void __force __iomem *)res->start;
}
diff --git a/drivers/bus/imx-weim.c b/drivers/bus/imx-weim.c
index 78bccda15a..9b8848d0ad 100644
--- a/drivers/bus/imx-weim.c
+++ b/drivers/bus/imx-weim.c
@@ -12,6 +12,7 @@
#include <init.h>
#include <io.h>
#include <of.h>
+#include <linux/err.h>
struct imx_weim_devtype {
unsigned int cs_count;
@@ -144,8 +145,8 @@ static int weim_probe(struct device_d *dev)
/* get the resource */
weim->base = dev_request_mem_region(dev, 0);
- if (!weim->base) {
- ret = -EBUSY;
+ if (IS_ERR(weim->base)) {
+ ret = PTR_ERR(weim->base);
goto weim_err;
}
diff --git a/drivers/clk/clk-ar933x.c b/drivers/clk/clk-ar933x.c
index d983387a93..79b257133c 100644
--- a/drivers/clk/clk-ar933x.c
+++ b/drivers/clk/clk-ar933x.c
@@ -140,8 +140,8 @@ static int ar933x_clk_probe(struct device_d *dev)
void __iomem *base;
base = dev_request_mem_region(dev, 0);
- if (!base)
- return -EBUSY;
+ if (IS_ERR(base))
+ return PTR_ERR(base);
ar933x_ref_clk_init(base);
ar933x_pll_init(base);
diff --git a/drivers/clk/mvebu/common.c b/drivers/clk/mvebu/common.c
index f3be5f2974..0e7f65c488 100644
--- a/drivers/clk/mvebu/common.c
+++ b/drivers/clk/mvebu/common.c
@@ -15,6 +15,7 @@
#include <init.h>
#include <of.h>
#include <linux/clk.h>
+#include <linux/err.h>
#include <linux/clkdev.h>
#include "common.h"
@@ -166,8 +167,8 @@ int mvebu_clk_gating_probe(struct device_d *dev)
desc = (const struct clk_gating_soc_desc *)match->data;
base = dev_request_mem_region(dev, 0);
- if (!base)
- return -EINVAL;
+ if (IS_ERR(base))
+ return PTR_ERR(base);
clk = of_clk_get(np, 0);
if (IS_ERR(clk))
diff --git a/drivers/clk/mxs/clk-imx23.c b/drivers/clk/mxs/clk-imx23.c
index 4b153503a4..1f84e9f6e9 100644
--- a/drivers/clk/mxs/clk-imx23.c
+++ b/drivers/clk/mxs/clk-imx23.c
@@ -129,6 +129,8 @@ static int imx23_ccm_probe(struct device_d *dev)
void __iomem *regs;
regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(regs))
+ return PTR_ERR(regs);
mx23_clocks_init(regs);
diff --git a/drivers/clk/mxs/clk-imx28.c b/drivers/clk/mxs/clk-imx28.c
index 36b71f6870..aa2924c70e 100644
--- a/drivers/clk/mxs/clk-imx28.c
+++ b/drivers/clk/mxs/clk-imx28.c
@@ -169,6 +169,8 @@ static int imx28_ccm_probe(struct device_d *dev)
void __iomem *regs;
regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(regs))
+ return PTR_ERR(regs);
mx28_clocks_init(regs);
diff --git a/drivers/clk/socfpga.c b/drivers/clk/socfpga.c
index f4257fdb5c..be97d13fa6 100644
--- a/drivers/clk/socfpga.c
+++ b/drivers/clk/socfpga.c
@@ -358,8 +358,8 @@ static int socfpga_ccm_probe(struct device_d *dev)
struct device_node *clknode;
regs = dev_request_mem_region(dev, 0);
- if (!regs)
- return -EBUSY;
+ if (IS_ERR(regs))
+ return PTR_ERR(regs);
clk_mgr_base_addr = regs;
diff --git a/drivers/clk/tegra/clk-tegra124.c b/drivers/clk/tegra/clk-tegra124.c
index 1e89bee036..514b22a784 100644
--- a/drivers/clk/tegra/clk-tegra124.c
+++ b/drivers/clk/tegra/clk-tegra124.c
@@ -301,8 +301,8 @@ static struct tegra_clk_init_table init_table[] = {
static int tegra124_car_probe(struct device_d *dev)
{
car_base = dev_request_mem_region(dev, 0);
- if (!car_base)
- return -EBUSY;
+ if (IS_ERR(car_base))
+ return PTR_ERR(car_base);
tegra124_osc_clk_init();
tegra124_pll_init();
diff --git a/drivers/clk/tegra/clk-tegra20.c b/drivers/clk/tegra/clk-tegra20.c
index 5803414b93..5b4365d492 100644
--- a/drivers/clk/tegra/clk-tegra20.c
+++ b/drivers/clk/tegra/clk-tegra20.c
@@ -339,8 +339,8 @@ static struct tegra_clk_init_table init_table[] = {
static int tegra20_car_probe(struct device_d *dev)
{
car_base = dev_request_mem_region(dev, 0);
- if (!car_base)
- return -EBUSY;
+ if (IS_ERR(car_base))
+ return PTR_ERR(car_base);
tegra20_osc_clk_init();
tegra20_pll_init();
diff --git a/drivers/clk/tegra/clk-tegra30.c b/drivers/clk/tegra/clk-tegra30.c
index 3b508304c5..ed6d73625c 100644
--- a/drivers/clk/tegra/clk-tegra30.c
+++ b/drivers/clk/tegra/clk-tegra30.c
@@ -336,8 +336,8 @@ static struct tegra_clk_init_table init_table[] = {
static int tegra30_car_probe(struct device_d *dev)
{
car_base = dev_request_mem_region(dev, 0);
- if (!car_base)
- return -EBUSY;
+ if (IS_ERR(car_base))
+ return PTR_ERR(car_base);
tegra30_osc_clk_init();
tegra30_pll_init();
diff --git a/drivers/clocksource/arm_smp_twd.c b/drivers/clocksource/arm_smp_twd.c
index 3efe8ddff4..72045b05e9 100644
--- a/drivers/clocksource/arm_smp_twd.c
+++ b/drivers/clocksource/arm_smp_twd.c
@@ -62,6 +62,8 @@ static int smp_twd_probe(struct device_d *dev)
}
twd_base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(twd_base))
+ return PTR_ERR(twd_base);
tick_rate = clk_get_rate(twd_clk);
if (tick_rate > SMP_TWD_MAX_FREQ) {
diff --git a/drivers/clocksource/bcm2835.c b/drivers/clocksource/bcm2835.c
index d1df3d2b2e..c0b1aae46b 100644
--- a/drivers/clocksource/bcm2835.c
+++ b/drivers/clocksource/bcm2835.c
@@ -62,6 +62,8 @@ static int bcm2835_cs_probe(struct device_d *dev)
rate = clk_get_rate(stc_clk);
stc_base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(stc_base))
+ return PTR_ERR(stc_base);
clocks_calc_mult_shift(&bcm2835_stc.mult, &bcm2835_stc.shift, rate, NSEC_PER_SEC, 60);
init_clock(&bcm2835_stc);
diff --git a/drivers/clocksource/clps711x.c b/drivers/clocksource/clps711x.c
index 8c379d39ec..a49853f2b5 100644
--- a/drivers/clocksource/clps711x.c
+++ b/drivers/clocksource/clps711x.c
@@ -38,9 +38,9 @@ static int clps711x_cs_probe(struct device_d *dev)
rate = clk_get_rate(timer_clk);
clps711x_timer_base = dev_request_mem_region(dev, 0);
- if (!clps711x_timer_base) {
+ if (IS_ERR(clps711x_timer_base)) {
clk_put(timer_clk);
- return -ENOENT;
+ return PTR_ERR(clps711x_timer_base);
}
clocks_calc_mult_shift(&clps711x_cs.mult, &clps711x_cs.shift, rate,
diff --git a/drivers/clocksource/digic.c b/drivers/clocksource/digic.c
index b80ef6f6fa..277bb02b63 100644
--- a/drivers/clocksource/digic.c
+++ b/drivers/clocksource/digic.c
@@ -19,6 +19,7 @@
#include <io.h>
#include <init.h>
#include <clock.h>
+#include <linux/err.h>
#define DIGIC_TIMER_CLOCK 1000000
@@ -44,9 +45,9 @@ static int digic_timer_probe(struct device_d *dev)
return -EBUSY;
timer_base = dev_request_mem_region(dev, 0);
- if (!timer_base) {
+ if (IS_ERR(timer_base)) {
dev_err(dev, "could not get memory region\n");
- return -ENODEV;
+ return PTR_ERR(timer_base);
}
clocks_calc_mult_shift(&digic_cs.mult, &digic_cs.shift,
diff --git a/drivers/clocksource/mvebu.c b/drivers/clocksource/mvebu.c
index e5cb921d92..b8fa98592a 100644
--- a/drivers/clocksource/mvebu.c
+++ b/drivers/clocksource/mvebu.c
@@ -60,6 +60,8 @@ static int mvebu_timer_probe(struct device_d *dev)
u32 rate, div, val;
timer_base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(timer_base))
+ return PTR_ERR(timer_base);
val = __raw_readl(timer_base + TIMER_CTRL_OFF);
val &= ~(TIMER0_25MHZ | TIMER0_DIV_MASK);
diff --git a/drivers/clocksource/nomadik.c b/drivers/clocksource/nomadik.c
index 8a3e6d930e..d7edf06d59 100644
--- a/drivers/clocksource/nomadik.c
+++ b/drivers/clocksource/nomadik.c
@@ -124,6 +124,8 @@ static int nmdk_mtu_probe(struct device_d *dev)
/* Save global pointer to mtu, used by functions above */
mtu_base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(mtu_base))
+ return PTR_ERR(mtu_base);
/* Init the timer and register clocksource */
nmdk_timer_reset();
diff --git a/drivers/clocksource/orion.c b/drivers/clocksource/orion.c
index 46932f1b05..a1dafd84de 100644
--- a/drivers/clocksource/orion.c
+++ b/drivers/clocksource/orion.c
@@ -49,6 +49,9 @@ static int orion_timer_probe(struct device_d *dev)
uint32_t val;
timer_base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(timer_base))
+ return PTR_ERR(timer_base);
+
tclk = clk_get(dev, NULL);
/* setup TIMER0 as free-running clock source */
diff --git a/drivers/clocksource/uemd.c b/drivers/clocksource/uemd.c
index 2ea455edfa..6c37de5bed 100644
--- a/drivers/clocksource/uemd.c
+++ b/drivers/clocksource/uemd.c
@@ -24,6 +24,7 @@
#include <init.h>
#include <linux/bitops.h>
#include <linux/clk.h>
+#include <linux/err.h>
#include <clock.h>
#define TIMER_LOAD 0x00
@@ -73,9 +74,9 @@ static int uemd_timer_probe(struct device_d *dev)
return -EBUSY;
timer_base = dev_request_mem_region(dev, 0);
- if (!timer_base) {
+ if (IS_ERR(timer_base)) {
dev_err(dev, "could not get memory region\n");
- return -ENODEV;
+ return PTR_ERR(timer_base);
}
timer_clk = clk_get(dev, NULL);
diff --git a/drivers/dma/apbh_dma.c b/drivers/dma/apbh_dma.c
index 665d394086..cd218f4582 100644
--- a/drivers/dma/apbh_dma.c
+++ b/drivers/dma/apbh_dma.c
@@ -18,6 +18,7 @@
#include <dma/apbh-dma.h>
#include <stmp-device.h>
#include <linux/list.h>
+#include <linux/err.h>
#include <common.h>
#include <driver.h>
#include <malloc.h>
@@ -597,8 +598,8 @@ static int apbh_dma_probe(struct device_d *dev)
apbh_dma = apbh = xzalloc(sizeof(*apbh));
apbh->regs = dev_request_mem_region(dev, 0);
- if (!apbh->regs)
- return -EBUSY;
+ if (IS_ERR(apbh->regs))
+ return PTR_ERR(apbh->regs);
apbh->id = id;
diff --git a/drivers/gpio/gpio-clps711x.c b/drivers/gpio/gpio-clps711x.c
index 2f12439e0f..7d3f1ffb25 100644
--- a/drivers/gpio/gpio-clps711x.c
+++ b/drivers/gpio/gpio-clps711x.c
@@ -26,18 +26,22 @@ static int clps711x_gpio_probe(struct device_d *dev)
return -ENODEV;
dat = dev_request_mem_region(dev, 0);
+ if (IS_ERR(dat))
+ return PTR_ERR(dat);
+
switch (id) {
case 3:
dir_inv = dev_request_mem_region(dev, 1);
+ if (IS_ERR(dir_inv))
+ return PTR_ERR(dir_inv);
break;
default:
dir = dev_request_mem_region(dev, 1);
+ if (IS_ERR(dir))
+ return PTR_ERR(dir);
break;
}
- if (!dat || (!dir && !dir_inv))
- return -EINVAL;
-
bgc = xzalloc(sizeof(struct bgpio_chip));
if (!bgc)
return -ENOMEM;
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 7d15b855f0..2b1d82b71c 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -163,9 +163,9 @@ 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 (!gpio_base) {
+ if (IS_ERR(gpio_base)) {
dev_err(dev, "could not get memory region\n");
- return -ENODEV;
+ return PTR_ERR(gpio_base);
}
for (i = 0, base = 0; base < ngpio; i++, base += 32) {
diff --git a/drivers/gpio/gpio-dw.c b/drivers/gpio/gpio-dw.c
index e46cc8e129..e582eb6d91 100644
--- a/drivers/gpio/gpio-dw.c
+++ b/drivers/gpio/gpio-dw.c
@@ -22,6 +22,7 @@
#include <io.h>
#include <gpio.h>
#include <init.h>
+#include <linux/err.h>
#define DW_GPIO_DR 0x0
#define DW_GPIO_DDR 0x4
@@ -114,8 +115,8 @@ static int dw_gpio_probe(struct device_d *dev)
chip = xzalloc(sizeof(*chip));
chip->regs = dev_request_mem_region(dev, 0);
- if (!chip->regs)
- return -EBUSY;
+ if (IS_ERR(chip->regs))
+ return PTR_ERR(chip->regs);
chip->chip.ops = &imx_gpio_ops;
if (dev->id < 0) {
diff --git a/drivers/gpio/gpio-jz4740.c b/drivers/gpio/gpio-jz4740.c
index 3c8efad8f3..f7e6781dc1 100644
--- a/drivers/gpio/gpio-jz4740.c
+++ b/drivers/gpio/gpio-jz4740.c
@@ -21,6 +21,7 @@
#include <io.h>
#include <gpio.h>
#include <malloc.h>
+#include <linux/err.h>
#define JZ_REG_GPIO_PIN 0x00
#define JZ_REG_GPIO_DATA 0x10
@@ -94,9 +95,9 @@ static int jz4740_gpio_probe(struct device_d *dev)
int ret;
base = dev_request_mem_region(dev, 0);
- if (!base) {
+ if (IS_ERR(base)) {
dev_err(dev, "could not get memory region\n");
- return -ENODEV;
+ return PTR_ERR(base);
}
jz4740_gpio = xzalloc(sizeof(*jz4740_gpio));
diff --git a/drivers/gpio/gpio-malta-fpga-i2c.c b/drivers/gpio/gpio-malta-fpga-i2c.c
index d6995aad81..ff77b8c7ef 100644
--- a/drivers/gpio/gpio-malta-fpga-i2c.c
+++ b/drivers/gpio/gpio-malta-fpga-i2c.c
@@ -138,9 +138,9 @@ static int malta_i2c_gpio_probe(struct device_d *dev)
int ret;
gpio_base = dev_request_mem_region(dev, 0);
- if (!gpio_base) {
+ if (IS_ERR(gpio_base)) {
dev_err(dev, "could not get memory region\n");
- return -ENODEV;
+ return PTR_ERR(gpio_base);
}
sc = xzalloc(sizeof(*sc));
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index e66a614f21..ff31b15dcd 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -36,6 +36,7 @@
#include <errno.h>
#include <gpio.h>
#include <init.h>
+#include <linux/err.h>
#define OMAP_GPIO_OE 0x0034
#define OMAP_GPIO_DATAIN 0x0038
@@ -147,6 +148,9 @@ static int omap_gpio_probe(struct device_d *dev)
omapgpio = xzalloc(sizeof(*omapgpio));
omapgpio->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(omapgpio->base))
+ return PTR_ERR(omapgpio->base);
+
if (drvdata)
omapgpio->base += drvdata->regofs;
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index bab32ee328..d4eea4e572 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -149,9 +149,9 @@ static int tegra_gpio_probe(struct device_d *dev)
}
gpio_base = dev_request_mem_region(dev, 0);
- if (!gpio_base) {
+ if (IS_ERR(gpio_base)) {
dev_err(dev, "could not get memory region\n");
- return -ENODEV;
+ return PTR_ERR(gpio_base);
}
for (i = 0; i < config->bank_count; i++) {
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 6b390478fa..714e83c4b9 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -548,6 +548,9 @@ static int __init i2c_fsl_probe(struct device_d *pdev)
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))
+ return PTR_ERR(i2c_fsl->base);
+
i2c_fsl->dfsrr = -1;
/* Set up clock divider */
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index adc952b043..0d714cc940 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -1023,6 +1023,8 @@ i2c_omap_probe(struct device_d *pdev)
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);
/*
* Read the Rev hi bit-[15:14] ie scheme this is 1 indicates ver2.
diff --git a/drivers/i2c/busses/i2c-versatile.c b/drivers/i2c/busses/i2c-versatile.c
index 4fead61513..bfabc78312 100644
--- a/drivers/i2c/busses/i2c-versatile.c
+++ b/drivers/i2c/busses/i2c-versatile.c
@@ -15,6 +15,7 @@
#include <init.h>
#include <malloc.h>
#include <io.h>
+#include <linux/err.h>
#define I2C_CONTROL 0x00
#define I2C_CONTROLS 0x00
@@ -75,8 +76,8 @@ static int i2c_versatile_probe(struct device_d *dev)
}
i2c->base = dev_request_mem_region(dev, 0);
- if (!i2c->base) {
- ret = -ENOMEM;
+ if (IS_ERR(i2c->base)) {
+ ret = PTR_ERR(i2c->base);
goto err_free;
}
diff --git a/drivers/input/imx_keypad.c b/drivers/input/imx_keypad.c
index afe93c3127..c67deb8d49 100644
--- a/drivers/input/imx_keypad.c
+++ b/drivers/input/imx_keypad.c
@@ -47,6 +47,7 @@
#include <kfifo.h>
#include <malloc.h>
#include <matrix_keypad.h>
+#include <linux/err.h>
/*
* Keypad Controller registers (halfword)
@@ -401,6 +402,8 @@ static int __init imx_keypad_probe(struct device_d *dev)
keypad->dev = dev;
keypad->mmio_base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(keypad->mmio_base))
+ return PTR_ERR(keypad->mmio_base);
if(!keypad->fifo_size)
keypad->fifo_size = 50;
diff --git a/drivers/mci/atmel_mci.c b/drivers/mci/atmel_mci.c
index 36107a6ef8..63d2475da7 100644
--- a/drivers/mci/atmel_mci.c
+++ b/drivers/mci/atmel_mci.c
@@ -572,6 +572,8 @@ static int atmci_probe(struct device_d *hw_dev)
host->slot_b = pd->slot_b;
host->regs = dev_request_mem_region(hw_dev, 0);
+ if (IS_ERR(host->regs))
+ return PTR_ERR(host->regs);
host->hw_dev = hw_dev;
hw_dev->priv = host;
host->clk = clk_get(hw_dev, "mci_clk");
diff --git a/drivers/mci/dw_mmc.c b/drivers/mci/dw_mmc.c
index 4c2f3c616b..365b60d6d4 100644
--- a/drivers/mci/dw_mmc.c
+++ b/drivers/mci/dw_mmc.c
@@ -547,8 +547,8 @@ static int dw_mmc_probe(struct device_d *dev)
host->dev = dev;
host->ioaddr = dev_request_mem_region(dev, 0);
- if (!host->ioaddr)
- return -EBUSY;
+ if (IS_ERR(host->ioaddr))
+ return PTR_ERR(host->ioaddr);
if (pdata) {
mci->devname = pdata->devname;
diff --git a/drivers/mci/imx-esdhc.c b/drivers/mci/imx-esdhc.c
index f5e78e0d79..487cd41958 100644
--- a/drivers/mci/imx-esdhc.c
+++ b/drivers/mci/imx-esdhc.c
@@ -536,6 +536,8 @@ static int fsl_esdhc_probe(struct device_d *dev)
host->dev = dev;
host->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(host->regs))
+ return PTR_ERR(host->regs);
/* First reset the eSDHC controller */
ret = esdhc_reset(host->regs);
diff --git a/drivers/mci/imx.c b/drivers/mci/imx.c
index 6992177af6..9c8c1b1e27 100644
--- a/drivers/mci/imx.c
+++ b/drivers/mci/imx.c
@@ -508,6 +508,8 @@ static int mxcmci_probe(struct device_d *dev)
host->mci.hw_dev = dev;
host->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(host->base))
+ return PTR_ERR(host->base);
host->mci.voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
diff --git a/drivers/mci/mci-bcm2835.c b/drivers/mci/mci-bcm2835.c
index 7d8997c04c..59c667f5c9 100644
--- a/drivers/mci/mci-bcm2835.c
+++ b/drivers/mci/mci-bcm2835.c
@@ -35,6 +35,7 @@
#include <malloc.h>
#include <clock.h>
#include <linux/clk.h>
+#include <linux/err.h>
#include "mci-bcm2835.h"
#include "sdhci.h"
@@ -505,9 +506,9 @@ static int bcm2835_mci_probe(struct device_d *hw_dev)
host->hw_dev = hw_dev;
host->max_clock = clk_get_rate(clk);
host->regs = dev_request_mem_region(hw_dev, 0);
- if (host->regs == NULL) {
+ if (IS_ERR(host->regs)) {
dev_err(host->hw_dev, "Failed request mem region, aborting...\n");
- return -EBUSY;
+ return PTR_ERR(host->regs);
}
host->mci.host_caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED |
diff --git a/drivers/mci/mxs.c b/drivers/mci/mxs.c
index bf928e80ff..6e02d464b4 100644
--- a/drivers/mci/mxs.c
+++ b/drivers/mci/mxs.c
@@ -566,6 +566,8 @@ static int mxs_mci_probe(struct device_d *hw_dev)
host->set_ios = mxs_mci_set_ios;
host->init = mxs_mci_initialize;
mxs_mci->regs = dev_request_mem_region(hw_dev, 0);
+ if (IS_ERR(mxs_mci->regs))
+ return PTR_ERR(mxs_mci->regs);
/* feed forward the platform specific values */
host->voltages = pd->voltages;
diff --git a/drivers/mci/omap_hsmmc.c b/drivers/mci/omap_hsmmc.c
index 9cce916923..c9bc71d6c0 100644
--- a/drivers/mci/omap_hsmmc.c
+++ b/drivers/mci/omap_hsmmc.c
@@ -26,6 +26,7 @@
#include <clock.h>
#include <errno.h>
#include <io.h>
+#include <linux/err.h>
#include <mach/omap_hsmmc.h>
@@ -604,6 +605,8 @@ static int omap_mmc_probe(struct device_d *dev)
hsmmc->mci.hw_dev = dev;
hsmmc->iobase = dev_request_mem_region(dev, 0);
+ if (IS_ERR(hsmmc->iobase))
+ return PTR_ERR(hsmmc->iobase);
hsmmc->base = hsmmc->iobase + reg_ofs;
hsmmc->mci.voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
diff --git a/drivers/mci/pxamci.c b/drivers/mci/pxamci.c
index 5ab88b8beb..6b14aba509 100644
--- a/drivers/mci/pxamci.c
+++ b/drivers/mci/pxamci.c
@@ -17,6 +17,7 @@
#include <clock.h>
#include <init.h>
#include <mci.h>
+#include <linux/err.h>
#include <mach/clock.h>
#include <mach/mci_pxa2xx.h>
@@ -339,6 +340,8 @@ static int pxamci_probe(struct device_d *dev)
clk_enable();
host = xzalloc(sizeof(*host));
host->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(host->base))
+ return PTR_ERR(host->base);
host->mci.init = pxamci_init;
host->mci.send_cmd = pxamci_request;
diff --git a/drivers/mci/s3c.c b/drivers/mci/s3c.c
index 773c84ad09..3afd61e491 100644
--- a/drivers/mci/s3c.c
+++ b/drivers/mci/s3c.c
@@ -36,6 +36,7 @@
#include <errno.h>
#include <clock.h>
#include <io.h>
+#include <linux/err.h>
#include <mach/s3c-mci.h>
#include <mach/s3c-generic.h>
#include <mach/s3c-iomap.h>
@@ -741,6 +742,9 @@ static int s3c_mci_probe(struct device_d *hw_dev)
hw_dev->priv = s3c_host;
s3c_host->base = dev_request_mem_region(hw_dev, 0);
+ if (IS_ERR(s3c_host->base))
+ return PTR_ERR(s3c_host->base);
+
s3c_host->host.hw_dev = hw_dev;
/* feed forward the platform specific values */
diff --git a/drivers/mci/tegra-sdmmc.c b/drivers/mci/tegra-sdmmc.c
index 08b9dac7d3..0e23d6fef1 100644
--- a/drivers/mci/tegra-sdmmc.c
+++ b/drivers/mci/tegra-sdmmc.c
@@ -29,6 +29,7 @@
#include <of_gpio.h>
#include <linux/clk.h>
#include <linux/reset.h>
+#include <linux/err.h>
#include "sdhci.h"
@@ -432,9 +433,9 @@ static int tegra_sdmmc_probe(struct device_d *dev)
return PTR_ERR(host->reset);
host->regs = dev_request_mem_region(dev, 0);
- if (!host->regs) {
+ if (IS_ERR(host->regs)) {
dev_err(dev, "could not get iomem region\n");
- return -ENODEV;
+ return PTR_ERR(host->regs);
}
mci->hw_dev = dev;
diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
index c89fe87eae..9769325338 100644
--- a/drivers/misc/sram.c
+++ b/drivers/misc/sram.c
@@ -17,6 +17,7 @@
#include <driver.h>
#include <malloc.h>
#include <init.h>
+#include <linux/err.h>
struct sram {
struct resource *res;
@@ -39,8 +40,8 @@ static int sram_probe(struct device_d *dev)
int ret;
base = dev_request_mem_region(dev, 0);
- if (!base)
- return -EBUSY;
+ if (IS_ERR(base))
+ return PTR_ERR(base);
sram = xzalloc(sizeof(*sram));
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index 1e7c6c6662..524606a407 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -34,6 +34,7 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
+#include <linux/err.h>
#include <io.h>
#include <mach/board.h>
@@ -1199,6 +1200,8 @@ static int __init atmel_nand_probe(struct device_d *dev)
return -ENOMEM;
host->io_base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(host->io_base))
+ return PTR_ERR(host->io_base);
mtd = &host->mtd;
nand_chip = &host->nand_chip;
diff --git a/drivers/mtd/nand/nand_mxs.c b/drivers/mtd/nand/nand_mxs.c
index 5a4449d032..8989de0272 100644
--- a/drivers/mtd/nand/nand_mxs.c
+++ b/drivers/mtd/nand/nand_mxs.c
@@ -1254,7 +1254,12 @@ static int mxs_nand_probe(struct device_d *dev)
nand_info->type = type;
nand_info->io_base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(nand_info->io_base))
+ return PTR_ERR(nand_info->io_base);
+
nand_info->bch_base = dev_request_mem_region(dev, 1);
+ if (IS_ERR(nand_info->bch_base))
+ return PTR_ERR(nand_info->bch_base);
nand_info->clk = clk_get(dev, NULL);
if (IS_ERR(nand_info->clk))
diff --git a/drivers/mtd/nand/nand_orion.c b/drivers/mtd/nand/nand_orion.c
index a1c77b32ce..2c9707d04f 100644
--- a/drivers/mtd/nand/nand_orion.c
+++ b/drivers/mtd/nand/nand_orion.c
@@ -94,8 +94,8 @@ static int orion_nand_probe(struct device_d *dev)
chip = &priv->chip;
io_base = dev_request_mem_region(dev, 0);
- if (!io_base)
- return -EBUSY;
+ if (IS_ERR(io_base))
+ return PTR_ERR(io_base);
if (!of_property_read_u32(dev_node, "cle", &val))
priv->cle = (u8)val;
diff --git a/drivers/mtd/nor/cfi_flash.c b/drivers/mtd/nor/cfi_flash.c
index a8118cb434..a494063922 100644
--- a/drivers/mtd/nor/cfi_flash.c
+++ b/drivers/mtd/nor/cfi_flash.c
@@ -39,6 +39,7 @@
#include <io.h>
#include <errno.h>
#include <progress.h>
+#include <linux/err.h>
#include "cfi_flash.h"
/*
@@ -987,6 +988,9 @@ static int cfi_probe (struct device_d *dev)
info->flash_id = FLASH_UNKNOWN;
info->cmd_reset = FLASH_CMD_RESET;
info->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(info->base))
+ return PTR_ERR(info->base);
+
info->dev = dev;
info->size = flash_get_size(info);
diff --git a/drivers/net/altera_tse.c b/drivers/net/altera_tse.c
index 4bbf59558c..ecbb9f8974 100644
--- a/drivers/net/altera_tse.c
+++ b/drivers/net/altera_tse.c
@@ -26,6 +26,7 @@
#include <clock.h>
#include <linux/mii.h>
#include <linux/phy.h>
+#include <linux/err.h>
#include <io.h>
#include <asm/dma-mapping.h>
@@ -515,6 +516,8 @@ static int tse_probe(struct device_d *dev)
#ifdef CONFIG_TSE_USE_DEDICATED_DESC_MEM
tx_desc = dev_request_mem_region(dev, 3);
+ if (IS_ERR(tx_desc))
+ return PTR_ERR(tx_desc);
rx_desc = tx_desc + 2;
#else
tx_desc = dma_alloc_coherent(sizeof(*tx_desc) * (3 + PKTBUFSRX), (unsigned long *)&dma_handle);
@@ -531,8 +534,14 @@ static int tse_probe(struct device_d *dev)
memset(tx_desc, 0, (sizeof *tx_desc) * 2);
priv->tse_regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->tse_regs))
+ return PTR_ERR(priv->tse_regs);
priv->sgdma_rx_regs = dev_request_mem_region(dev, 1);
+ if (IS_ERR(priv->sgdma_rx_regs))
+ return PTR_ERR(priv->sgdma_rx_regs);
priv->sgdma_tx_regs = dev_request_mem_region(dev, 2);
+ if (IS_ERR(priv->sgdma_tx_regs))
+ return PTR_ERR(priv->sgdma_tx_regs);
priv->rx_desc = rx_desc;
priv->tx_desc = tx_desc;
diff --git a/drivers/net/ar231x.c b/drivers/net/ar231x.c
index 572008a831..48e4b30fd6 100644
--- a/drivers/net/ar231x.c
+++ b/drivers/net/ar231x.c
@@ -26,6 +26,7 @@
#include <net.h>
#include <init.h>
#include <io.h>
+#include <linux/err.h>
#include "ar231x.h"
@@ -384,18 +385,18 @@ static int ar231x_eth_probe(struct device_d *dev)
priv->reset_bit = pdata->reset_bit;
priv->eth_regs = dev_request_mem_region(dev, 0);
- if (priv->eth_regs == NULL) {
+ if (IS_ERR(priv->eth_regs)) {
dev_err(dev, "No eth_regs!!\n");
- return -ENODEV;
+ return PTR_ERR(priv->eth_regs);
}
/* we have 0x100000 for eth, part of it are dma regs.
* So they are already requested */
priv->dma_regs = (void *)(priv->eth_regs + 0x1000);
priv->phy_regs = dev_request_mem_region(dev, 1);
- if (priv->phy_regs == NULL) {
+ if (IS_ERR(priv->phy_regs)) {
dev_err(dev, "No phy_regs!!\n");
- return -ENODEV;
+ return PTR_ERR(priv->phy_regs);
}
priv->cfg = pdata;
diff --git a/drivers/net/arc_emac.c b/drivers/net/arc_emac.c
index 8b74ea5704..17705067bc 100644
--- a/drivers/net/arc_emac.c
+++ b/drivers/net/arc_emac.c
@@ -22,6 +22,7 @@
#include <net.h>
#include <io.h>
#include <init.h>
+#include <linux/err.h>
/* ARC EMAC register set combines entries for MAC and MDIO */
enum {
@@ -400,6 +401,8 @@ static int arc_emac_probe(struct device_d *dev)
priv = edev->priv;
priv->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->regs))
+ return PTR_ERR(priv->regs);
priv->bus = miibus;
id = arc_reg_get(priv, R_ID);
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index ccae5376c3..167b2ddf8b 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -34,6 +34,7 @@
#include <xfuncs.h>
#include <asm/mmu.h>
#include <asm/system.h>
+#include <linux/err.h>
#include <mach/cpsw.h>
@@ -1109,6 +1110,8 @@ int cpsw_probe(struct device_d *dev)
dev_dbg(dev, "* %s\n", __func__);
regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(regs))
+ return PTR_ERR(regs);
priv = xzalloc(sizeof(*priv));
priv->dev = dev;
diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index e87bdff5fb..49ed0b1922 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -29,6 +29,7 @@
#include <asm/mmu.h>
#include <net/designware.h>
#include <linux/phy.h>
+#include <linux/err.h>
#include "designware.h"
struct dw_eth_dev {
@@ -440,6 +441,9 @@ static int dwc_ether_probe(struct device_d *dev)
}
base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(base))
+ return PTR_ERR(base);
+
priv->mac_regs_p = base;
dwc_version(dev, readl(&priv->mac_regs_p->version));
priv->dma_regs_p = base + DW_DMA_BASE_OFFSET;
diff --git a/drivers/net/ethoc.c b/drivers/net/ethoc.c
index 679e1e552a..59e8f01e0b 100644
--- a/drivers/net/ethoc.c
+++ b/drivers/net/ethoc.c
@@ -17,6 +17,7 @@
#include <init.h>
#include <io.h>
#include <asm/cache.h>
+#include <linux/err.h>
/* register offsets */
#define MODER 0x00
@@ -542,6 +543,8 @@ static int ethoc_probe(struct device_d *dev)
priv = edev->priv;
priv->iobase = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->iobase))
+ return PTR_ERR(priv->iobase);
priv->miibus.read = ethoc_mdio_read;
priv->miibus.write = ethoc_mdio_write;
diff --git a/drivers/net/fec_mpc5200.c b/drivers/net/fec_mpc5200.c
index 41a3b58d53..f431d79d1d 100644
--- a/drivers/net/fec_mpc5200.c
+++ b/drivers/net/fec_mpc5200.c
@@ -16,6 +16,7 @@
#include <mach/sdma.h>
#include <mach/clocks.h>
#include <linux/phy.h>
+#include <linux/err.h>
#include "fec_mpc5200.h"
#define CONFIG_PHY_ADDR 1 /* FIXME */
@@ -655,6 +656,8 @@ int mpc5xxx_fec_probe(struct device_d *dev)
edev->parent = dev;
fec->eth = dev_request_mem_region(dev, 0);
+ if (IS_ERR(fec->eth))
+ return PTR_ERR(fec->eth);
fec->tbdBase = (FEC_TBD *)FEC_BD_BASE;
fec->rbdBase = (FEC_RBD *)(FEC_BD_BASE + FEC_TBD_NUM * sizeof(FEC_TBD));
diff --git a/drivers/net/ks8851_mll.c b/drivers/net/ks8851_mll.c
index 83d1b02803..a8974cfcb9 100644
--- a/drivers/net/ks8851_mll.c
+++ b/drivers/net/ks8851_mll.c
@@ -29,6 +29,7 @@
#include <clock.h>
#include <io.h>
#include <linux/phy.h>
+#include <linux/err.h>
#define MAX_RECV_FRAMES 32
#define MAX_BUF_SIZE 2048
@@ -823,7 +824,12 @@ static int ks8851_probe(struct device_d *dev)
}
ks->hw_addr = dev_request_mem_region(dev, 0);
+ if (IS_ERR(ks->hw_addr))
+ return PTR_ERR(ks->hw_addr);
+
ks->hw_addr_cmd = dev_request_mem_region(dev, 1);
+ if (IS_ERR(ks->hw_addr_cmd))
+ return PTR_ERR(ks->hw_addr_cmd);
ks->bus_width = dev->resource[0].flags & IORESOURCE_MEM_TYPE_MASK;
edev->init = ks8851_init_dev;
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 12a2a3c6c5..03558af8f1 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -642,6 +642,8 @@ static int macb_probe(struct device_d *dev)
macb->phy_flags = pdata->phy_flags;
macb->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(macb->regs))
+ return PTR_ERR(macb->regs);
/*
* Do some basic initialization so that we at least can talk
diff --git a/drivers/net/smc91111.c b/drivers/net/smc91111.c
index 7baa7490f7..55d93676b2 100644
--- a/drivers/net/smc91111.c
+++ b/drivers/net/smc91111.c
@@ -66,6 +66,7 @@
#include <clock.h>
#include <io.h>
#include <linux/phy.h>
+#include <linux/err.h>
#include <net/smc91111.h>
/*---------------------------------------------------------------
@@ -1330,6 +1331,8 @@ static int smc91c111_probe(struct device_d *dev)
priv->miibus.priv = priv;
priv->miibus.parent = dev;
priv->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->base))
+ return PTR_ERR(priv->base);
smc91c111_reset(edev);
diff --git a/drivers/pinctrl/imx-iomux-v2.c b/drivers/pinctrl/imx-iomux-v2.c
index cef0340909..2622d9a2d6 100644
--- a/drivers/pinctrl/imx-iomux-v2.c
+++ b/drivers/pinctrl/imx-iomux-v2.c
@@ -17,6 +17,7 @@
#include <common.h>
#include <io.h>
#include <init.h>
+#include <linux/err.h>
#include <mach/iomux-mx31.h>
/*
@@ -118,6 +119,8 @@ int imx_iomux_setup_multiple_pins(const unsigned int *pin_list, unsigned count)
static int imx_iomux_probe(struct device_d *dev)
{
base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(base))
+ return PTR_ERR(base);
return 0;
}
diff --git a/drivers/pinctrl/mvebu/armada-xp.c b/drivers/pinctrl/mvebu/armada-xp.c
index 9f79d373e4..8c71867a7d 100644
--- a/drivers/pinctrl/mvebu/armada-xp.c
+++ b/drivers/pinctrl/mvebu/armada-xp.c
@@ -375,8 +375,8 @@ static int armada_xp_pinctrl_probe(struct device_d *dev)
struct mvebu_pinctrl_soc_info *soc = &armada_xp_pinctrl_info;
mpp_base = dev_request_mem_region(dev, 0);
- if (!mpp_base)
- return -EBUSY;
+ if (IS_ERR(mpp_base))
+ return PTR_ERR(mpp_base);
soc->variant = (enum armada_xp_variant)match->data;
diff --git a/drivers/pinctrl/mvebu/kirkwood.c b/drivers/pinctrl/mvebu/kirkwood.c
index 94ab105442..05142489c0 100644
--- a/drivers/pinctrl/mvebu/kirkwood.c
+++ b/drivers/pinctrl/mvebu/kirkwood.c
@@ -13,6 +13,7 @@
#include <init.h>
#include <malloc.h>
#include <of.h>
+#include <linux/err.h>
#include "common.h"
@@ -437,8 +438,8 @@ static int kirkwood_pinctrl_probe(struct device_d *dev)
(struct mvebu_pinctrl_soc_info *)match->data;
mpp_base = dev_request_mem_region(dev, 0);
- if (!mpp_base)
- return -EBUSY;
+ if (IS_ERR(mpp_base))
+ return PTR_ERR(mpp_base);
return mvebu_pinctrl_probe(dev, soc);
}
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 29e54cf6cb..0d6d2e7e53 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -653,8 +653,8 @@ static int at91_gpio_probe(struct device_d *dev)
gpio_banks = max(gpio_banks, alias_idx + 1);
at91_gpio->regbase = dev_request_mem_region(dev, 0);
- if (!at91_gpio->regbase)
- return -EBUSY;
+ if (IS_ERR(at91_gpio->regbase))
+ return PTR_ERR(at91_gpio->regbase);
at91_gpio->chip.ops = &at91_gpio_ops;
at91_gpio->chip.ngpio = MAX_NB_GPIO_PER_BANK;
diff --git a/drivers/pinctrl/pinctrl-tegra20.c b/drivers/pinctrl/pinctrl-tegra20.c
index 053981f44c..3c11be6f55 100644
--- a/drivers/pinctrl/pinctrl-tegra20.c
+++ b/drivers/pinctrl/pinctrl-tegra20.c
@@ -28,6 +28,7 @@
#include <io.h>
#include <malloc.h>
#include <pinctrl.h>
+#include <linux/err.h>
struct pinctrl_tegra20 {
struct {
@@ -309,9 +310,9 @@ static int pinctrl_tegra20_probe(struct device_d *dev)
regs = (u32 **)&ctrl->regs;
for (i = 0; i <= 2; i++) {
regs[i] = dev_request_mem_region(dev, i);
- if (!regs[i]) {
+ if (IS_ERR(regs[i])) {
dev_err(dev, "Could not get iomem region %d\n", i);
- return -ENODEV;
+ return PTR_ERR(regs[i]);
}
}
diff --git a/drivers/pinctrl/pinctrl-tegra30.c b/drivers/pinctrl/pinctrl-tegra30.c
index 5cacfae8a3..82772187d5 100644
--- a/drivers/pinctrl/pinctrl-tegra30.c
+++ b/drivers/pinctrl/pinctrl-tegra30.c
@@ -22,6 +22,7 @@
#include <io.h>
#include <malloc.h>
#include <pinctrl.h>
+#include <linux/err.h>
struct pinctrl_tegra30_drvdata;
@@ -884,9 +885,9 @@ static int pinctrl_tegra30_probe(struct device_d *dev)
regs = (u32 **)&ctrl->regs;
for (i = 0; i <= 1; i++) {
regs[i] = dev_request_mem_region(dev, i);
- if (!regs[i]) {
+ if (IS_ERR(regs[i])) {
dev_err(dev, "Could not get iomem region %d\n", i);
- return -ENODEV;
+ return PTR_ERR(regs[i]);
}
}
diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c
index e29341f8ec..fbfc3af0cd 100644
--- a/drivers/pwm/pwm-imx.c
+++ b/drivers/pwm/pwm-imx.c
@@ -14,6 +14,7 @@
#include <io.h>
#include <pwm.h>
#include <linux/clk.h>
+#include <linux/err.h>
#include <asm-generic/div64.h>
/* i.MX1 and i.MX21 share the same PWM function block: */
@@ -237,8 +238,8 @@ static int imx_pwm_probe(struct device_d *dev)
}
imx->mmio_base = dev_request_mem_region(dev, 0);
- if (!imx->mmio_base)
- return -EBUSY;
+ if (IS_ERR(imx->mmio_base))
+ return PTR_ERR(imx->mmio_base);
imx->config = data->config;
imx->set_enable = data->set_enable;
diff --git a/drivers/serial/atmel.c b/drivers/serial/atmel.c
index c2a5d33b1b..1f406925a3 100644
--- a/drivers/serial/atmel.c
+++ b/drivers/serial/atmel.c
@@ -399,6 +399,9 @@ static int atmel_serial_init_port(struct console_device *cdev)
struct atmel_uart_port *uart = to_atmel_uart_port(cdev);
uart->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(uart->base))
+ return PTR_ERR(uart->base);
+
uart->clk = clk_get(dev, "usart");
clk_enable(uart->clk);
uart->uartclk = clk_get_rate(uart->clk);
diff --git a/drivers/serial/serial_ar933x.c b/drivers/serial/serial_ar933x.c
index 27cccba119..51184aaae5 100644
--- a/drivers/serial/serial_ar933x.c
+++ b/drivers/serial/serial_ar933x.c
@@ -163,6 +163,9 @@ static int ar933x_serial_probe(struct device_d *dev)
cdev = xzalloc(sizeof(struct console_device));
priv = xzalloc(sizeof(struct ar933x_uart_priv));
priv->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->base))
+ return PTR_ERR(priv->base);
+
dev->priv = priv;
cdev->dev = dev;
diff --git a/drivers/serial/serial_auart.c b/drivers/serial/serial_auart.c
index 19805166bb..ae6c5b8219 100644
--- a/drivers/serial/serial_auart.c
+++ b/drivers/serial/serial_auart.c
@@ -196,6 +196,8 @@ static int auart_serial_probe(struct device_d *dev)
dev->priv = priv;
priv->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->base))
+ return PTR_ERR(priv->base);
priv->clk = clk_get(dev, NULL);
if (IS_ERR(priv->clk))
return PTR_ERR(priv->clk);
diff --git a/drivers/serial/serial_cadence.c b/drivers/serial/serial_cadence.c
index a1b76d07dc..10df50642a 100644
--- a/drivers/serial/serial_cadence.c
+++ b/drivers/serial/serial_cadence.c
@@ -240,8 +240,8 @@ static int cadence_serial_probe(struct device_d *dev)
clk_set_rate(priv->clk, clk_get_rate(priv->clk) / 8);
priv->regs = dev_request_mem_region(dev, 0);
- if (!priv->regs) {
- ret = -EBUSY;
+ if (IS_ERR(priv->regs)) {
+ ret = PTR_ERR(priv->regs);
goto err_free;
}
diff --git a/drivers/serial/serial_mpc5xxx.c b/drivers/serial/serial_mpc5xxx.c
index 18aca8736d..f48255ba75 100644
--- a/drivers/serial/serial_mpc5xxx.c
+++ b/drivers/serial/serial_mpc5xxx.c
@@ -36,6 +36,7 @@
#include <console.h>
#include <xfuncs.h>
#include <mach/clocks.h>
+#include <linux/err.h>
static int __mpc5xxx_serial_setbaudrate(struct mpc5xxx_psc *psc, int baudrate)
{
@@ -148,6 +149,8 @@ static int mpc5xxx_serial_probe(struct device_d *dev)
cdev = xzalloc(sizeof(struct console_device));
dev->priv = dev_request_mem_region(dev, 0);
+ if (IS_ERR(dev->priv))
+ return PTR_ERR(dev->priv);
cdev->dev = dev;
cdev->tstc = mpc5xxx_serial_tstc;
cdev->putc = mpc5xxx_serial_putc;
diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
index dd0986c326..78a674a823 100644
--- a/drivers/serial/serial_ns16550.c
+++ b/drivers/serial/serial_ns16550.c
@@ -321,6 +321,8 @@ static int ns16550_init_iomem(struct device_d *dev, struct ns16550_priv *priv)
return PTR_ERR(res);
priv->mmiobase = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->mmiobase))
+ return PTR_ERR(priv->mmiobase);
width = res->flags & IORESOURCE_MEM_TYPE_MASK;
switch (width) {
diff --git a/drivers/serial/stm-serial.c b/drivers/serial/stm-serial.c
index 3fec1ceeff..39ff7ae942 100644
--- a/drivers/serial/stm-serial.c
+++ b/drivers/serial/stm-serial.c
@@ -162,6 +162,8 @@ static int stm_serial_probe(struct device_d *dev)
dev->priv = priv;
priv->base = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->base))
+ return PTR_ERR(priv->base);
priv->clk = clk_get(dev, NULL);
if (IS_ERR(priv->clk))
return PTR_ERR(priv->clk);
diff --git a/drivers/spi/altera_spi.c b/drivers/spi/altera_spi.c
index 983b877e87..bf1add81fe 100644
--- a/drivers/spi/altera_spi.c
+++ b/drivers/spi/altera_spi.c
@@ -222,6 +222,9 @@ static int altera_spi_probe(struct device_d *dev)
master->bus_num = pdata->bus_num;
altera_spi->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(altera_spi->regs))
+ return PTR_ERR(altera_spi->regs);
+
altera_spi->databits = pdata->databits;
altera_spi->speed = pdata->speed;
altera_spi->mode = pdata->spi_mode;
diff --git a/drivers/spi/mvebu_spi.c b/drivers/spi/mvebu_spi.c
index 4a6d96f978..c2a2e5094d 100644
--- a/drivers/spi/mvebu_spi.c
+++ b/drivers/spi/mvebu_spi.c
@@ -343,8 +343,8 @@ static int mvebu_spi_probe(struct device_d *dev)
priv = xzalloc(sizeof(*priv));
priv->base = dev_request_mem_region(dev, 0);
- if (!priv->base) {
- ret = -EINVAL;
+ if (IS_ERR(priv->base)) {
+ ret = PTR_ERR(priv->base);
goto err_free;
}
priv->set_baudrate = (void *)match->data;
diff --git a/drivers/spi/mxs_spi.c b/drivers/spi/mxs_spi.c
index a00784f55b..9a35e09b88 100644
--- a/drivers/spi/mxs_spi.c
+++ b/drivers/spi/mxs_spi.c
@@ -267,6 +267,9 @@ static int mxs_spi_probe(struct device_d *dev)
mxs->mode = SPI_CPOL | SPI_CPHA;
mxs->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(mxs->regs))
+ return PTR_ERR(mxs->regs);
+
mxs->clk = clk_get(dev, NULL);
if (IS_ERR(mxs->clk))
return PTR_ERR(mxs->clk);
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index 2b19be94f0..2f0d5ed6fa 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -1432,8 +1432,8 @@ static int __init at91udc_probe(struct device_d *dev)
}
udc->udp_baseaddr = dev_request_mem_region(dev, 0);
- if (!udc->udp_baseaddr) {
- retval = -ENOMEM;
+ if (IS_ERR(udc->udp_baseaddr)) {
+ retval = PTR_ERR(udc->udp_baseaddr);
goto fail0a;
}
diff --git a/drivers/usb/gadget/fsl_udc.c b/drivers/usb/gadget/fsl_udc.c
index 5a625d19ca..877d2dfec4 100644
--- a/drivers/usb/gadget/fsl_udc.c
+++ b/drivers/usb/gadget/fsl_udc.c
@@ -9,6 +9,7 @@
#include <io.h>
#include <poller.h>
#include <asm/byteorder.h>
+#include <linux/err.h>
/* ### define USB registers here
*/
@@ -2320,6 +2321,9 @@ static int fsl_udc_probe(struct device_d *dev)
{
void __iomem *regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(regs))
+ return PTR_ERR(regs);
+
return ci_udc_register(dev, regs);
}
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index c0ea8d013a..5624552c00 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -30,6 +30,7 @@
#include <of.h>
#include <usb/ehci.h>
#include <asm/mmu.h>
+#include <linux/err.h>
#include "ehci.h"
@@ -924,6 +925,9 @@ static int ehci_probe(struct device_d *dev)
data.flags = EHCI_HAS_TT;
data.hccr = dev_request_mem_region(dev, 0);
+ if (IS_ERR(data.hccr))
+ return PTR_ERR(data.hccr);
+
if (dev->num_resources > 1)
data.hcor = dev_request_mem_region(dev, 1);
else
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 3d18a73325..622f5c3a5b 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -47,6 +47,7 @@
#include <usb/usb_defs.h>
#include <init.h>
#include <errno.h>
+#include <linux/err.h>
#include <asm/byteorder.h>
#include <io.h>
@@ -1812,6 +1813,8 @@ static int ohci_probe(struct device_d *dev)
usb_register_host(host);
ohci->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(ohci->regs))
+ return PTR_ERR(ohci->regs);
return 0;
}
diff --git a/drivers/usb/imx/chipidea-imx.c b/drivers/usb/imx/chipidea-imx.c
index 62feae8eac..ffa46dac6e 100644
--- a/drivers/usb/imx/chipidea-imx.c
+++ b/drivers/usb/imx/chipidea-imx.c
@@ -24,6 +24,7 @@
#include <usb/chipidea-imx.h>
#include <usb/ulpi.h>
#include <usb/fsl_usb2.h>
+#include <linux/err.h>
#define MXC_EHCI_PORTSC_MASK ((0xf << 28) | (1 << 25))
@@ -242,8 +243,8 @@ static int imx_chipidea_probe(struct device_d *dev)
regulator_enable(ci->vbus);
base = dev_request_mem_region(dev, 0);
- if (!base)
- return -ENODEV;
+ if (IS_ERR(base))
+ return PTR_ERR(base);
ci->base = base;
diff --git a/drivers/video/atmel_lcdfb_core.c b/drivers/video/atmel_lcdfb_core.c
index 9748bba366..420ccbedf1 100644
--- a/drivers/video/atmel_lcdfb_core.c
+++ b/drivers/video/atmel_lcdfb_core.c
@@ -258,6 +258,8 @@ int atmel_lcdc_register(struct device_d *dev, struct atmel_lcdfb_devdata *data)
sinfo = xzalloc(sizeof(*sinfo));
sinfo->pdata = pdata;
sinfo->mmio = dev_request_mem_region(dev, 0);
+ if (IS_ERR(sinfo->mmio))
+ return PTR_ERR(sinfo->mmio);
sinfo->dev_data = data;
diff --git a/drivers/video/imx-ipu-fb.c b/drivers/video/imx-ipu-fb.c
index abac812cb6..a69df50811 100644
--- a/drivers/video/imx-ipu-fb.c
+++ b/drivers/video/imx-ipu-fb.c
@@ -1001,6 +1001,8 @@ static int imxfb_probe(struct device_d *dev)
return PTR_ERR(fbi->clk);
fbi->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(fbi->regs))
+ return PTR_ERR(fbi->regs);
fbi->dev = dev;
fbi->enable = pdata->enable;
fbi->disp_data_fmt = pdata->disp_data_fmt;
diff --git a/drivers/video/imx.c b/drivers/video/imx.c
index b12c09c8cf..b1066e1243 100644
--- a/drivers/video/imx.c
+++ b/drivers/video/imx.c
@@ -544,6 +544,9 @@ static int imxfb_probe(struct device_d *dev)
fbi->mode = pdata->mode;
fbi->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(fbi->regs))
+ return PTR_ERR(fbi->regs);
+
fbi->pcr = pdata->mode->pcr;
fbi->pwmr = pdata->pwmr;
fbi->lscr1 = pdata->lscr1;
diff --git a/drivers/video/pxa.c b/drivers/video/pxa.c
index b4ce3a1bf8..d6d11ae610 100644
--- a/drivers/video/pxa.c
+++ b/drivers/video/pxa.c
@@ -29,6 +29,7 @@
#include <fb.h>
#include <init.h>
#include <malloc.h>
+#include <linux/err.h>
#include <mach/clock.h>
#include <mach/pxa-regs.h>
@@ -499,6 +500,8 @@ static int pxafb_probe(struct device_d *dev)
fbi->mode = pdata->mode;
fbi->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(fbi->regs))
+ return PTR_ERR(fbi->regs);
fbi->dev = dev;
fbi->lcd_power = pdata->lcd_power;
diff --git a/drivers/watchdog/im28wd.c b/drivers/watchdog/im28wd.c
index dd66e12fc0..3e73ecd62e 100644
--- a/drivers/watchdog/im28wd.c
+++ b/drivers/watchdog/im28wd.c
@@ -22,6 +22,7 @@
#include <malloc.h>
#include <watchdog.h>
#include <reset_source.h>
+#include <linux/err.h>
#define MXS_RTC_CTRL 0x0
#define MXS_RTC_SET_ADDR 0x4
@@ -186,6 +187,8 @@ static int imx28_wd_probe(struct device_d *dev)
priv = xzalloc(sizeof(struct imx28_wd));
priv->regs = dev_request_mem_region(dev, 0);
+ if (IS_ERR(priv->regs))
+ return PTR_ERR(priv->regs);
priv->wd.set_timeout = imx28_watchdog_set_timeout;
if (!(readl(priv->regs + MXS_RTC_STAT) & MXS_RTC_STAT_WD_PRESENT)) {