From 4d94f56c6c5ba00d35d6b3e3a1862439b2ced3f0 Mon Sep 17 00:00:00 2001 From: Michel Stam Date: Mon, 7 Apr 2014 12:01:20 +0200 Subject: 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 Signed-off-by: Sascha Hauer --- drivers/base/driver.c | 16 +++++++++------- drivers/gpio/gpio-generic.c | 4 ++-- drivers/mfd/syscon.c | 2 +- drivers/misc/sram.c | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) (limited to 'drivers') 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; -- cgit v1.2.3