[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