Commit 5562f35d authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Rafael J. Wysocki

resource: Introduce resource_union() for overlapping resources

Some already present users may utilize resource_union() helper.
Provide it for them and for wider use in the future.
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarHanjun Guo <guohanjun@huawei.com>
Tested-by: default avatarHanjun Guo <guohanjun@huawei.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 1f90f6a8
...@@ -10,9 +10,10 @@ ...@@ -10,9 +10,10 @@
#define _LINUX_IOPORT_H #define _LINUX_IOPORT_H
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <linux/bits.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/minmax.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/bits.h>
/* /*
* Resources are tree-like, allowing * Resources are tree-like, allowing
* nesting etc.. * nesting etc..
...@@ -235,6 +236,16 @@ static inline bool resource_overlaps(struct resource *r1, struct resource *r2) ...@@ -235,6 +236,16 @@ static inline bool resource_overlaps(struct resource *r1, struct resource *r2)
return r1->start <= r2->end && r1->end >= r2->start; return r1->start <= r2->end && r1->end >= r2->start;
} }
static inline bool
resource_union(struct resource *r1, struct resource *r2, struct resource *r)
{
if (!resource_overlaps(r1, r2))
return false;
r->start = min(r1->start, r2->start);
r->end = max(r1->end, r2->end);
return true;
}
/* Convenience shorthand with allocation */ /* Convenience shorthand with allocation */
#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), 0) #define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), 0)
#define request_muxed_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), IORESOURCE_MUXED) #define request_muxed_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), IORESOURCE_MUXED)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment