diff options
author | Michel Stam <m.stam@fugro.nl> | 2014-04-07 12:01:20 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-04-08 08:17:55 +0200 |
commit | 4d94f56c6c5ba00d35d6b3e3a1862439b2ced3f0 (patch) | |
tree | b3efb2fad02e4abe18ca0d0baefee5ebae6a3875 /drivers | |
parent | 0a5529d0edcd8c00a679c485f7266548851c6948 (diff) | |
download | barebox-4d94f56c6c5ba00d35d6b3e3a1862439b2ced3f0.tar.gz barebox-4d94f56c6c5ba00d35d6b3e3a1862439b2ced3f0.tar.xz |
common: Allow for I/O mapped I/O
Rework the current framework so that I/O mapped I/O resources are
also possible.
Signed-off-by: Michel Stam <michel@reverze.net>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/base/driver.c | 16 | ||||
-rw-r--r-- | drivers/gpio/gpio-generic.c | 4 | ||||
-rw-r--r-- | drivers/mfd/syscon.c | 2 | ||||
-rw-r--r-- | drivers/misc/sram.c | 2 |
4 files changed, 13 insertions, 11 deletions
diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 37560fd46f..2cf3ee6892 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -241,13 +241,14 @@ int register_driver(struct driver_d *drv) } EXPORT_SYMBOL(register_driver); -struct resource *dev_get_resource(struct device_d *dev, int num) +struct resource *dev_get_resource(struct device_d *dev, unsigned long type, + int num) { int i, n = 0; for (i = 0; i < dev->num_resources; i++) { struct resource *res = &dev->resource[i]; - if (resource_type(res) == IORESOURCE_MEM) { + if (resource_type(res) == type) { if (n == num) return res; n++; @@ -261,7 +262,7 @@ void *dev_get_mem_region(struct device_d *dev, int num) { struct resource *res; - res = dev_get_resource(dev, num); + res = dev_get_resource(dev, IORESOURCE_MEM, num); if (!res) return NULL; @@ -270,13 +271,14 @@ void *dev_get_mem_region(struct device_d *dev, int num) EXPORT_SYMBOL(dev_get_mem_region); struct resource *dev_get_resource_by_name(struct device_d *dev, + unsigned long type, const char *name) { int i; for (i = 0; i < dev->num_resources; i++) { struct resource *res = &dev->resource[i]; - if (resource_type(res) != IORESOURCE_MEM) + if (resource_type(res) != type) continue; if (!res->name) continue; @@ -291,7 +293,7 @@ void *dev_get_mem_region_by_name(struct device_d *dev, const char *name) { struct resource *res; - res = dev_get_resource_by_name(dev, name); + res = dev_get_resource_by_name(dev, IORESOURCE_MEM, name); if (!res) return NULL; @@ -303,7 +305,7 @@ void __iomem *dev_request_mem_region_by_name(struct device_d *dev, const char *n { struct resource *res; - res = dev_get_resource_by_name(dev, name); + res = dev_get_resource_by_name(dev, IORESOURCE_MEM, name); if (!res) return NULL; @@ -319,7 +321,7 @@ void __iomem *dev_request_mem_region(struct device_d *dev, int num) { struct resource *res; - res = dev_get_resource(dev, num); + res = dev_get_resource(dev, IORESOURCE_MEM, num); if (!res) return NULL; diff --git a/drivers/gpio/gpio-generic.c b/drivers/gpio/gpio-generic.c index a2fc400431..5c46282045 100644 --- a/drivers/gpio/gpio-generic.c +++ b/drivers/gpio/gpio-generic.c @@ -310,7 +310,7 @@ static void __iomem *bgpio_map(struct device_d *dev, const char *name, *err = 0; - r = dev_get_resource_by_name(dev, name); + r = dev_get_resource_by_name(dev, IORESOURCE_MEM, name); if (!r) return NULL; @@ -342,7 +342,7 @@ static int bgpio_dev_probe(struct device_d *dev) struct bgpio_chip *bgc; struct bgpio_pdata *pdata = dev->platform_data; - r = dev_get_resource_by_name(dev, "dat"); + r = dev_get_resource_by_name(dev, IORESOURCE_MEM, "dat"); if (!r) return -EINVAL; diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c index 8fc84c34d8..e6722e1916 100644 --- a/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c @@ -70,7 +70,7 @@ static int syscon_probe(struct device_d *dev) if (!syscon) return -ENOMEM; - res = dev_get_resource(dev, 0); + res = dev_get_resource(dev, IORESOURCE_MEM, 0); if (!res) { free(syscon); return -ENOENT; diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c index 7ea23b7b0c..0466a15289 100644 --- a/drivers/misc/sram.c +++ b/drivers/misc/sram.c @@ -47,7 +47,7 @@ static int sram_probe(struct device_d *dev) sram->cdev.name = asprintf("sram%d", cdev_find_free_index("sram")); - res = dev_get_resource(dev, 0); + res = dev_get_resource(dev, IORESOURCE_MEM, 0); sram->cdev.size = (unsigned long)resource_size(res); sram->cdev.ops = &memops; |