On 3/31/25 13:43, Caleb Connolly via groups.io wrote:
The fdt_node_check_compatible() function returns 0 on success which is
pretty confusing, and we were using it wrong!
Invert the condition check and refactor things to be more readable.
Additionally, add the check for the RB1 which needs the same fixup as
the RB2.
Reported-by: Sam Day <[email protected]>
Fixes: e64503f1fcdf ("mach-snapdragon: implement ft_board_setup() for USB role
selection")
Signed-off-by: Caleb Connolly <[email protected]>
---
arch/arm/mach-snapdragon/of_fixup.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/arm/mach-snapdragon/of_fixup.c
b/arch/arm/mach-snapdragon/of_fixup.c
index 55368dd43b66..588c92c5cc91 100644
--- a/arch/arm/mach-snapdragon/of_fixup.c
+++ b/arch/arm/mach-snapdragon/of_fixup.c
@@ -160,16 +160,16 @@ int ft_board_setup(void *blob, struct bd_info
__maybe_unused *bd)
{
struct fdt_header *fdt = blob;
int node;
- /* We only want to do this fix-up for the RB1 board, quick return for all others */
- if (!fdt_node_check_compatible(fdt, 0, "qcom,qrb4210-rb2"))
- return 0;
-
- fdt_for_each_node_by_compatible(node, blob, 0, "snps,dwc3") {
- log_debug("%s: Setting 'dr_mode' to OTG\n", fdt_get_name(blob,
node, NULL));
- fdt_setprop_string(fdt, node, "dr_mode", "otg");
- break;
+ /* On RB1/2 we need to fix-up the dr_mode */
+ if (!fdt_node_check_compatible(fdt, 0, "qcom,qrb4210-rb2") ||
+ !fdt_node_check_compatible(fdt, 0, "qcom,qrb2210-rb1")) {
+ fdt_for_each_node_by_compatible(node, blob, 0, "snps,dwc3") {
+ log_debug("%s: Setting 'dr_mode' to OTG\n",
fdt_get_name(blob, node, NULL));
+ fdt_setprop_string(fdt, node, "dr_mode", "otg");
+ break;
+ }
}
return 0;
}
This fixes USB mode on all my sdm660/636 boards that should only use
gadget mode.
Tested-by: Alexey Minnekhanov <[email protected]>
---
Regards,
Alexey Minnekhanov