Hey Caleb, On Monday, 31 March 2025 at 12:43, Caleb Connolly <[email protected]> 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; > } > -- > 2.49.0 Thanks, this fixes USB peripheral mode on my fajita. Tested-by: Sam Day <[email protected]> -Sam

