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@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@xxxxxxxxxxxxxx> --- 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