[PATCH 7/8] of: partition: add a helper to determin if a node is a of-partition

Marco Felsch m.felsch at pengutronix.de
Fri Oct 14 09:35:33 PDT 2022


This helper checks if the given device_node is a of-partition. The check
is based on the node name which should something like partition at xxx. If
that fails the we try to check if the parent node contains a
"fixed-partitions" compatible.

Signed-off-by: Marco Felsch <m.felsch at pengutronix.de>
---
 drivers/of/partition.c | 12 ++++++++++++
 include/of.h           |  6 ++++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/of/partition.c b/drivers/of/partition.c
index abbda674d6..494fd92660 100644
--- a/drivers/of/partition.c
+++ b/drivers/of/partition.c
@@ -107,6 +107,18 @@ int of_parse_partitions(struct cdev *cdev, struct device_node *node)
 	return 0;
 }
 
+int is_of_partition(struct device_node *np)
+{
+	if (of_node_name_eq(np, "partition"))
+		return 1;
+
+	np = of_get_parent(np);
+	if (of_device_is_compatible(np, "fixed-partitions"))
+		return 1;
+
+	return 0;
+}
+
 int of_partition_ensure_probed(struct device_node *np)
 {
 	np = of_get_parent(np);
diff --git a/include/of.h b/include/of.h
index 052d5fcad8..d6a3e75f86 100644
--- a/include/of.h
+++ b/include/of.h
@@ -309,6 +309,7 @@ struct cdev *of_parse_partition(struct cdev *cdev, struct device_node *node);
 int of_parse_partitions(struct cdev *cdev, struct device_node *node);
 int of_fixup_partitions(struct device_node *np, struct cdev *cdev);
 int of_partitions_register_fixup(struct cdev *cdev);
+int is_of_partition(struct device_node *np);
 struct device_node *of_get_stdoutpath(unsigned int *);
 int of_device_is_stdout_path(struct device_d *dev, unsigned int *baudrate);
 const char *of_get_model(void);
@@ -359,6 +360,11 @@ static inline int of_partitions_register_fixup(struct cdev *cdev)
 	return -ENOSYS;
 }
 
+static inline int is_of_partition(struct device_node *np)
+{
+	return -ENOSYS;
+}
+
 static inline struct device_node *of_get_stdoutpath(unsigned int *rate)
 {
 	return NULL;
-- 
2.30.2




More information about the barebox mailing list