[PATCH 02/10] common: allow requesting SDRAM regions with custom flags
Ahmad Fatoum
a.fatoum at pengutronix.de
Mon Aug 15 08:32:01 PDT 2022
Now that __request_region accepts a flag parameter, define
__request_sdram_region, which also accepts a flag parameter and passes
it through. The default flags for request_sdram_region() will be
IORESOURCE_MEM as that ensures resource_contains behaves correctly when
comparing against another memory resource.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
common/memory.c | 8 +++++---
common/resource.c | 2 +-
include/memory.h | 13 +++++++++++--
3 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/common/memory.c b/common/memory.c
index 03fec1f1eb0e..347f83fd4cf8 100644
--- a/common/memory.c
+++ b/common/memory.c
@@ -200,16 +200,18 @@ mmu_initcall(add_mem_devices);
/*
* Request a region from the registered sdram
*/
-struct resource *request_sdram_region(const char *name, resource_size_t start,
- resource_size_t size)
+struct resource *__request_sdram_region(const char *name, unsigned flags,
+ resource_size_t start, resource_size_t size)
{
struct memory_bank *bank;
+ flags |= IORESOURCE_MEM;
+
for_each_memory_bank(bank) {
struct resource *res;
res = __request_region(bank->res, start, start + size - 1,
- name, 0);
+ name, flags);
if (!IS_ERR(res))
return res;
}
diff --git a/common/resource.c b/common/resource.c
index 81f337668ef1..8678609229ab 100644
--- a/common/resource.c
+++ b/common/resource.c
@@ -73,7 +73,7 @@ struct resource *__request_region(struct resource *parent,
}
ok:
- debug("%s ok: 0x%08llx:0x%08llx flags=%u\n", __func__,
+ debug("%s ok: 0x%08llx:0x%08llx flags=0x%x\n", __func__,
(unsigned long long)start,
(unsigned long long)end, flags);
diff --git a/include/memory.h b/include/memory.h
index c793bb51ed77..31da5d74d568 100644
--- a/include/memory.h
+++ b/include/memory.h
@@ -23,8 +23,17 @@ int barebox_add_memory_bank(const char *name, resource_size_t start,
#define for_each_memory_bank(mem) list_for_each_entry(mem, &memory_banks, list)
-struct resource *request_sdram_region(const char *name, resource_size_t start,
- resource_size_t size);
+struct resource *__request_sdram_region(const char *name, unsigned flags,
+ resource_size_t start, resource_size_t size);
+
+static inline struct resource *request_sdram_region(const char *name,
+ resource_size_t start,
+ resource_size_t size)
+{
+ /* IORESOURCE_MEM is implicit for all SDRAM regions */
+ return __request_sdram_region(name, 0, start, size);
+}
+
int release_sdram_region(struct resource *res);
void memory_bank_find_space(struct memory_bank *bank, resource_size_t *retstart,
--
2.30.2
More information about the barebox
mailing list