diff options
Diffstat (limited to 'drivers/base/driver.c')
-rw-r--r-- | drivers/base/driver.c | 53 |
1 files changed, 15 insertions, 38 deletions
diff --git a/drivers/base/driver.c b/drivers/base/driver.c index c43a4bde2a..3b39c28494 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -368,18 +368,6 @@ struct resource *dev_get_resource_by_name(struct device_d *dev, return ERR_PTR(-ENOENT); } -void *dev_get_mem_region_by_name(struct device_d *dev, const char *name) -{ - struct resource *res; - - res = dev_get_resource_by_name(dev, IORESOURCE_MEM, name); - if (IS_ERR(res)) - return ERR_CAST(res); - - return (void __force *)res->start; -} -EXPORT_SYMBOL(dev_get_mem_region_by_name); - void __iomem *dev_request_mem_region_by_name(struct device_d *dev, const char *name) { struct resource *res; @@ -396,32 +384,28 @@ void __iomem *dev_request_mem_region_by_name(struct device_d *dev, const char *n } EXPORT_SYMBOL(dev_request_mem_region_by_name); -void __iomem *dev_request_mem_region_err_null(struct device_d *dev, int num) +struct resource *dev_request_mem_resource(struct device_d *dev, int num) { struct resource *res; res = dev_get_resource(dev, IORESOURCE_MEM, num); if (IS_ERR(res)) - return NULL; - - res = request_iomem_region(dev_name(dev), res->start, res->end); - if (IS_ERR(res)) - return NULL; + return ERR_CAST(res); - return IOMEM(res->start); + return request_iomem_region(dev_name(dev), res->start, res->end); } -EXPORT_SYMBOL(dev_request_mem_region_err_null); -struct resource *dev_request_mem_resource(struct device_d *dev, int num) +void __iomem *dev_request_mem_region_err_null(struct device_d *dev, int num) { struct resource *res; - res = dev_get_resource(dev, IORESOURCE_MEM, num); + res = dev_request_mem_resource(dev, num); if (IS_ERR(res)) - return ERR_CAST(res); + return NULL; - return request_iomem_region(dev_name(dev), res->start, res->end); + return IOMEM(res->start); } +EXPORT_SYMBOL(dev_request_mem_region_err_null); void __iomem *dev_request_mem_region(struct device_d *dev, int num) { @@ -435,29 +419,22 @@ void __iomem *dev_request_mem_region(struct device_d *dev, int num) } EXPORT_SYMBOL(dev_request_mem_region); -int generic_memmap_ro(struct cdev *cdev, void **map, int flags) +int generic_memmap_rw(struct cdev *cdev, void **map, int flags) { if (!cdev->dev) return -EINVAL; - if (flags & PROT_WRITE) - return -EACCES; *map = dev_get_mem_region(cdev->dev, 0); - if (IS_ERR(*map)) - return PTR_ERR(*map); - return 0; + + return PTR_ERR_OR_ZERO(*map); } -int generic_memmap_rw(struct cdev *cdev, void **map, int flags) +int generic_memmap_ro(struct cdev *cdev, void **map, int flags) { - if (!cdev->dev) - return -EINVAL; - - *map = dev_get_mem_region(cdev->dev, 0); - if (IS_ERR(*map)) - return PTR_ERR(*map); + if (flags & PROT_WRITE) + return -EACCES; - return 0; + return generic_memmap_rw(cdev, map, flags); } int dummy_probe(struct device_d *dev) |