ANDROID: pstore/ram: Add backward compatibility for ramoops reserved region

Some of the platforms might be still expecting dedicated memory region
for ramoops node. So add logic to detect the start and size of the
ramoops memory region by looking up reserved memory region with
of_reserved_mem_lookup() when platform_get_resource() failed.

Bug: 191636717
Change-Id: Idc479b45fb3f637f7235efd6eabac62059d5e92b
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
(cherry picked from commit 9b136eab76eee8988a8474008aa7a8cfc83be421)
This commit is contained in:
Prasad Sodagudi 2021-07-09 10:04:36 -07:00 committed by Saravana Kannan
parent d9bddef6fc
commit a065fa8bfe

View file

@ -635,20 +635,28 @@ static int ramoops_parse_dt(struct platform_device *pdev,
struct device_node *of_node = pdev->dev.of_node;
struct device_node *parent_node;
struct reserved_mem *rmem;
struct resource *res;
u32 value;
int ret;
dev_dbg(&pdev->dev, "using Device Tree\n");
rmem = of_reserved_mem_lookup(of_node);
if (!rmem) {
dev_err(&pdev->dev,
"failed to locate DT /reserved-memory resource\n");
return -EINVAL;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
rmem = of_reserved_mem_lookup(of_node);
if (rmem) {
pdata->mem_size = rmem->size;
pdata->mem_address = rmem->base;
} else {
dev_err(&pdev->dev,
"failed to locate DT /reserved-memory resource\n");
return -EINVAL;
}
} else {
pdata->mem_size = resource_size(res);
pdata->mem_address = res->start;
}
pdata->mem_size = rmem->size;
pdata->mem_address = rmem->base;
/*
* Setting "unbuffered" is deprecated and will be ignored if
* "mem_type" is also specified.