Source
127
127
* on failure. Usage example:
128
128
*
129
129
* res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
130
130
* base = devm_ioremap_resource(&pdev->dev, res);
131
131
* if (IS_ERR(base))
132
132
* return PTR_ERR(base);
133
133
*/
134
134
void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res)
135
135
{
136
136
resource_size_t size;
137
-
const char *name;
138
137
void __iomem *dest_ptr;
139
138
140
139
BUG_ON(!dev);
141
140
142
141
if (!res || resource_type(res) != IORESOURCE_MEM) {
143
142
dev_err(dev, "invalid resource\n");
144
143
return IOMEM_ERR_PTR(-EINVAL);
145
144
}
146
145
147
146
size = resource_size(res);
148
-
name = res->name ?: dev_name(dev);
149
147
150
-
if (!devm_request_mem_region(dev, res->start, size, name)) {
148
+
if (!devm_request_mem_region(dev, res->start, size, dev_name(dev))) {
151
149
dev_err(dev, "can't request region for resource %pR\n", res);
152
150
return IOMEM_ERR_PTR(-EBUSY);
153
151
}
154
152
155
153
dest_ptr = devm_ioremap(dev, res->start, size);
156
154
if (!dest_ptr) {
157
155
dev_err(dev, "ioremap failed for resource %pR\n", res);
158
156
devm_release_mem_region(dev, res->start, size);
159
157
dest_ptr = IOMEM_ERR_PTR(-ENOMEM);
160
158
}