60 lines
1.7 KiB
Diff
60 lines
1.7 KiB
Diff
From c2d62e49de009b598b62eed7d75849348e3ed435 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
|
|
Date: Sat, 15 May 2021 21:43:44 +0200
|
|
Subject: [PATCH 187/469] of: property: fw_devlink: Support allwinner,sram
|
|
links
|
|
|
|
allwinner,sram property points to a node representing section of SRAM,
|
|
which is implemented by its ancestor (syscon), so we link to the
|
|
parent of parent of the actual SRAM section node that the link points
|
|
to.
|
|
|
|
Signed-off-by: Ondrej Jirman <megi@xff.cz>
|
|
---
|
|
drivers/of/property.c | 22 ++++++++++++++++++++++
|
|
1 file changed, 22 insertions(+)
|
|
|
|
diff --git a/drivers/of/property.c b/drivers/of/property.c
|
|
index ddc75cd50825..0e49dbbbc280 100644
|
|
--- a/drivers/of/property.c
|
|
+++ b/drivers/of/property.c
|
|
@@ -1325,6 +1325,27 @@ static struct device_node *parse_interrupts(struct device_node *np,
|
|
return of_irq_parse_one(np, index, &sup_args) ? NULL : sup_args.np;
|
|
}
|
|
|
|
+static struct device_node *parse_allwinner_sram(struct device_node *np,
|
|
+ const char *prop_name, int index)
|
|
+{
|
|
+ struct device_node *sram_node;
|
|
+
|
|
+ if (!IS_ENABLED(CONFIG_SUNXI_SRAM))
|
|
+ return NULL;
|
|
+
|
|
+ if (strcmp(prop_name, "allwinner,sram"))
|
|
+ return NULL;
|
|
+
|
|
+ if (index > 0)
|
|
+ return NULL;
|
|
+
|
|
+ sram_node = of_parse_phandle(np, prop_name, 0);
|
|
+ sram_node = of_get_parent(sram_node);
|
|
+ sram_node = of_get_parent(sram_node);
|
|
+
|
|
+ return sram_node;
|
|
+}
|
|
+
|
|
static const struct supplier_bindings of_supplier_bindings[] = {
|
|
{ .parse_prop = parse_clocks, },
|
|
{ .parse_prop = parse_interconnects, },
|
|
@@ -1359,6 +1380,7 @@ static const struct supplier_bindings of_supplier_bindings[] = {
|
|
{ .parse_prop = parse_regulators, },
|
|
{ .parse_prop = parse_gpio, },
|
|
{ .parse_prop = parse_gpios, },
|
|
+ { .parse_prop = parse_allwinner_sram, },
|
|
{}
|
|
};
|
|
|
|
--
|
|
2.34.1
|
|
|