barebox doesn't support arm,arm-firmware-suite partitioning and if the barebox device tree uses a fixed-partitions binding for a flash, it will overwrite a kernel partitions node that uses arm,arm-firmware-suite with the fixed partition binding.
This broke in the default case with the addition of global.of_partition_binding=adaptive, because the check for a compatible was successful, but the compatible was neither fixed-partitions or barebox,fixed-partitions. Fix this by explicitly checking the compatibles we expect. This fixes a failed of_get_reproducible_name in of_state_fixup, which broke barebox-state usage on Vexpress in DistroKit. Fixes: f0d91d7ba6cb ("of: partition: add Linux CONFIG_OF_PARTITION-compatible adaptive fixup mode") Reported-by: Robert Schwebel <r...@pengutronix.de> Signed-off-by: Ahmad Fatoum <a.fat...@pengutronix.de> --- drivers/of/partition.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/of/partition.c b/drivers/of/partition.c index a0890bfcdef0..7f5a526ac88f 100644 --- a/drivers/of/partition.c +++ b/drivers/of/partition.c @@ -206,8 +206,8 @@ int of_fixup_partitions(struct device_node *np, struct cdev *cdev) partnode = np; break; case MTD_OF_BINDING_ADAPTIVE: - /* If there's already a compatible property, leave it as-is */ - if (of_property_present(partnode, "compatible")) + /* If there's already a fixed-partitions node, leave compatible as-is */ + if (of_node_is_fixed_partitions(partnode)) break; if (!cdev->mtd) compat = "barebox,fixed-partitions"; -- 2.39.5