diff options
author | Caleb Connolly <caleb.connolly@linaro.org> | 2024-04-18 18:25:49 +0100 |
---|---|---|
committer | Caleb Connolly <caleb.connolly@linaro.org> | 2024-04-23 13:29:30 +0200 |
commit | e64503f1fcdfa4e836c192ab7d16075fda864d19 (patch) | |
tree | a494b453255d4cb5f905b4fe5ce0c795c0764415 | |
parent | 956f6e4de48f5f6c549d403a9f6db78a8deef689 (diff) |
mach-snapdragon: implement ft_board_setup() for USB role selection
Some Qualcomm boards have only one USB controller which is muxed between
the type-c port and an internal USB hub for type-A and ethernet. We
modify the DT for these to force them to host mode in U-Boot. However in
Linux DRD role switching is supported (required, even). Use
ft_board_setup() to adjust the dr_mode property for these boards.
While we're here, define pr_fmt for this file so we can more easily
identify log messages.
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
-rw-r--r-- | arch/arm/mach-snapdragon/of_fixup.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/arm/mach-snapdragon/of_fixup.c b/arch/arm/mach-snapdragon/of_fixup.c index 3f7ac227bd0..55368dd43b6 100644 --- a/arch/arm/mach-snapdragon/of_fixup.c +++ b/arch/arm/mach-snapdragon/of_fixup.c @@ -17,6 +17,8 @@ * Author: Caleb Connolly <caleb.connolly@linaro.org> */ +#define pr_fmt(fmt) "of_fixup: " fmt + #include <dt-bindings/input/linux-event-codes.h> #include <dm/of_access.h> #include <dm/of.h> @@ -153,3 +155,21 @@ void qcom_of_fixup_nodes(void) time_call(fixup_usb_nodes); time_call(fixup_power_domains); } + +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; + } + + return 0; +} |