]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
soc: qcom: cmd-db: map cmd-db region
authorCaleb Connolly <caleb.connolly@linaro.org>
Thu, 8 Aug 2024 23:59:33 +0000 (01:59 +0200)
committerCaleb Connolly <caleb.connolly@linaro.org>
Fri, 6 Sep 2024 08:47:46 +0000 (10:47 +0200)
On at least SM8650 this region might not be included in the memory map.
Use the new mmu_map_region() helper to map it during bind().

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
drivers/soc/qcom/cmd-db.c

index c7c5230983d5b1509ac2e8c58198e13a9058fef8..67be18e89f4d34795f027ee6ac7160f9cedc611d 100644 (file)
@@ -6,6 +6,7 @@
 
 #define pr_fmt(fmt) "cmd-db: " fmt
 
+#include <asm/system.h>
 #include <dm.h>
 #include <dm/ofnode.h>
 #include <dm/device_compat.h>
@@ -182,9 +183,10 @@ u32 cmd_db_read_addr(const char *id)
 }
 EXPORT_SYMBOL_GPL(cmd_db_read_addr);
 
-int cmd_db_bind(struct udevice *dev)
+static int cmd_db_bind(struct udevice *dev)
 {
        void __iomem *base;
+       fdt_size_t size;
        ofnode node;
 
        if (cmd_db_header)
@@ -194,12 +196,15 @@ int cmd_db_bind(struct udevice *dev)
 
        debug("%s(%s)\n", __func__, ofnode_get_name(node));
 
-       base = (void __iomem *)ofnode_get_addr(node);
+       base = (void __iomem *)ofnode_get_addr_size(node, "reg", &size);
        if ((fdt_addr_t)base == FDT_ADDR_T_NONE) {
                log_err("%s: Failed to read base address\n", __func__);
                return -ENOENT;
        }
 
+       /* On SM8550/SM8650 and newer SoCs cmd-db might not be mapped */
+       mmu_map_region((phys_addr_t)base, (phys_size_t)size, false);
+
        cmd_db_header = base;
        if (!cmd_db_magic_matches(cmd_db_header)) {
                log_err("%s: Invalid Command DB Magic\n", __func__);