I am confronted with an occasional hang on the Radxa Rock 3A during PCI probe. The board has no PCI devices connected.
This hang doesn't happen in Linux and doesn't happen on the QNAP TS433-eU, which is also RK3568, but actually has PCIe devices, which are probed normally. For such purposes, add a barebox,status property as setting the status to disabled, would impact Linux as well if barebox were to pass along its own device tree. Signed-off-by: Ahmad Fatoum <[email protected]> --- .../devicetree/bindings/barebox/barebox,status.rst | 8 ++++++++ drivers/of/base.c | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/barebox/barebox,status.rst diff --git a/Documentation/devicetree/bindings/barebox/barebox,status.rst b/Documentation/devicetree/bindings/barebox/barebox,status.rst new file mode 100644 index 000000000000..06524b218fb1 --- /dev/null +++ b/Documentation/devicetree/bindings/barebox/barebox,status.rst @@ -0,0 +1,8 @@ +barebox,status property +======================= + +barebox interprets ``barebox,status`` the same as it does ``status``, +but gives the former precedence if both exist. + +Use this property only for devices for which barebox has a driver, but +that barebox should not be probing on a per-board basis. diff --git a/drivers/of/base.c b/drivers/of/base.c index 54fd458bd9a1..4e83a757a4e9 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2149,7 +2149,9 @@ int of_device_is_available(const struct device_node *device) const char *status; int statlen; - status = of_get_property(device, "status", &statlen); + status = of_get_property(device, "barebox,status", &statlen); + if (status == NULL) + status = of_get_property(device, "status", &statlen); if (status == NULL) return 1; -- 2.47.3
