|
@@ -358,7 +358,7 @@ static int find_next_iomem_res(struct resource *res, char *name,
|
|
|
read_lock(&resource_lock);
|
|
|
|
|
|
for (p = iomem_resource.child; p; p = next_resource(p, sibling_only)) {
|
|
|
- if (p->flags != res->flags)
|
|
|
+ if ((p->flags & res->flags) != res->flags)
|
|
|
continue;
|
|
|
if (name && strcmp(p->name, name))
|
|
|
continue;
|
|
@@ -519,7 +519,8 @@ int region_intersects(resource_size_t start, size_t size, const char *name)
|
|
|
|
|
|
read_lock(&resource_lock);
|
|
|
for (p = iomem_resource.child; p ; p = p->sibling) {
|
|
|
- bool is_type = strcmp(p->name, name) == 0 && p->flags == flags;
|
|
|
+ bool is_type = strcmp(p->name, name) == 0 &&
|
|
|
+ ((p->flags & flags) == flags);
|
|
|
|
|
|
if (start >= p->start && start <= p->end)
|
|
|
is_type ? type++ : other++;
|
|
@@ -1071,7 +1072,7 @@ struct resource * __request_region(struct resource *parent,
|
|
|
res->name = name;
|
|
|
res->start = start;
|
|
|
res->end = start + n - 1;
|
|
|
- res->flags = resource_type(parent);
|
|
|
+ res->flags = resource_type(parent) | resource_ext_type(parent);
|
|
|
res->flags |= IORESOURCE_BUSY | flags;
|
|
|
|
|
|
write_lock(&resource_lock);
|