mirror of
https://github.com/openwrt/openwrt.git
synced 2026-05-05 22:25:44 +04:00
d62ecd6c07
Refresh patches 6.12 for airoha and econet Fixes:122135b964("airoha: an7581: add support for kernel 6.12") Fixes:73d0f92460("kernel: Add new platform EcoNet MIPS") Signed-off-by: Leo Barsky <leobrsky@proton.me> Link: https://github.com/openwrt/openwrt/pull/20073 Signed-off-by: Robert Marko <robimarko@gmail.com>
74 lines
2.7 KiB
Diff
74 lines
2.7 KiB
Diff
From 9fb6fef0fb49124291837af1da5028f79d53f98e Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>
|
|
Date: Fri, 14 Jun 2024 13:06:03 +0300
|
|
Subject: [PATCH] resource: Add resource set range and size helpers
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
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>
|
|
---
|
|
include/linux/ioport.h | 32 ++++++++++++++++++++++++++++++++
|
|
1 file changed, 32 insertions(+)
|
|
|
|
--- a/include/linux/ioport.h
|
|
+++ b/include/linux/ioport.h
|
|
@@ -249,6 +249,38 @@ struct resource *lookup_resource(struct
|
|
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;
|