mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 02:14:58 +00:00
resource: Add resource set range and size helpers
Setting the end address for a resource with a given size lacks a helper and is therefore coded manually unlike the getter side which has a helper for resource size calculation. Also, almost all callsites that calculate the end address for a resource also set the start address right before it like this: res->start = start_addr; res->end = res->start + size - 1; Add resource_set_range(res, start_addr, size) that sets the start address and calculates the end address to simplify this often repeated fragment. Also add resource_set_size() for the cases where setting the start address of the resource is not necessary but mention in its kerneldoc that resource_set_range() is preferred when setting both addresses. Link: https://lore.kernel.org/r/20240614100606.15830-2-ilpo.jarvinen@linux.intel.com Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
9852d85ec9
commit
9fb6fef0fb
@ -249,6 +249,38 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start);
|
||||
int adjust_resource(struct resource *res, resource_size_t start,
|
||||
resource_size_t size);
|
||||
resource_size_t resource_alignment(struct resource *res);
|
||||
|
||||
/**
|
||||
* resource_set_size - Calculate resource end address from size and start
|
||||
* @res: Resource descriptor
|
||||
* @size: Size of the resource
|
||||
*
|
||||
* Calculate the end address for @res based on @size.
|
||||
*
|
||||
* Note: The start address of @res must be set when calling this function.
|
||||
* Prefer resource_set_range() if setting both the start address and @size.
|
||||
*/
|
||||
static inline void resource_set_size(struct resource *res, resource_size_t size)
|
||||
{
|
||||
res->end = res->start + size - 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* resource_set_range - Set resource start and end addresses
|
||||
* @res: Resource descriptor
|
||||
* @start: Start address for the resource
|
||||
* @size: Size of the resource
|
||||
*
|
||||
* Set @res start address and calculate the end address based on @size.
|
||||
*/
|
||||
static inline void resource_set_range(struct resource *res,
|
||||
resource_size_t start,
|
||||
resource_size_t size)
|
||||
{
|
||||
res->start = start;
|
||||
resource_set_size(res, size);
|
||||
}
|
||||
|
||||
static inline resource_size_t resource_size(const struct resource *res)
|
||||
{
|
||||
return res->end - res->start + 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user