From 45d56d58ffac306dac61fbb1019b6f59ac99f53c Mon Sep 17 00:00:00 2001 From: Tingwei Zhang Date: Mon, 16 Dec 2019 16:05:17 +0800 Subject: [PATCH] soc: qcom: reserve memory in memory dump probe Initialize reserved memory with of_reserved_mem_device_init_by_idx(). Change-Id: I5c3867ec685a8b30eb8457bb461cda937e48f8c0 Signed-off-by: Tingwei Zhang --- drivers/soc/qcom/memory_dump_v2.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/soc/qcom/memory_dump_v2.c b/drivers/soc/qcom/memory_dump_v2.c index 2eff0ac56faa..db1aa1957ff3 100644 --- a/drivers/soc/qcom/memory_dump_v2.c +++ b/drivers/soc/qcom/memory_dump_v2.c @@ -16,6 +16,7 @@ #include #include #include +#include #define MSM_DUMP_TABLE_VERSION MSM_DUMP_MAKE_VERSION(2, 0) @@ -225,6 +226,26 @@ err0: } early_initcall(init_memory_dump); +static int mem_dump_reserve_mem(struct device *dev) +{ + struct device_node *mem_node; + int ret; + + mem_node = of_parse_phandle(dev->of_node, "memory-region", 0); + if (mem_node) { + ret = of_reserved_mem_device_init_by_idx(dev, + dev->of_node, 0); + of_node_put(dev->of_node); + if (ret) { + dev_err(dev, + "Failed to initialize reserved mem, ret %d\n", + ret); + return ret; + } + } + return 0; +} + static int mem_dump_probe(struct platform_device *pdev) { struct device_node *child_node; @@ -236,6 +257,9 @@ static int mem_dump_probe(struct platform_device *pdev) int ret; u32 size, id; + if (mem_dump_reserve_mem(&pdev->dev) != 0) + return -ENOMEM; + for_each_available_child_of_node(node, child_node) { ret = of_property_read_u32(child_node, "qcom,dump-size", &size); if (ret) {