[PATCH 1/2] rockchip: use standard dr_mode parsing function

John Keeping john at metanate.com
Wed Apr 12 13:52:52 CEST 2023


Instead of duplicating the string values here, use usb_get_dr_mode() to
handle the property lookup and converting the values to an enum.

This is implemented with a switch in preparation for the next patch
which adds extra handling for peripheral mode.

Signed-off-by: John Keeping <john at metanate.com>
---
 arch/arm/mach-rockchip/board.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
index f1f70c81d0..6d33d65780 100644
--- a/arch/arm/mach-rockchip/board.c
+++ b/arch/arm/mach-rockchip/board.c
@@ -212,6 +212,7 @@ void enable_caches(void)
 #include <usb.h>
 
 #if defined(CONFIG_USB_GADGET_DWC2_OTG)
+#include <linux/usb/otg.h>
 #include <usb/dwc2_udc.h>
 
 static struct dwc2_plat_otg_data otg_data = {
@@ -223,18 +224,23 @@ static struct dwc2_plat_otg_data otg_data = {
 int board_usb_init(int index, enum usb_init_type init)
 {
 	ofnode node;
-	const char *mode;
 	bool matched = false;
 
 	/* find the usb_otg node */
 	node = ofnode_by_compatible(ofnode_null(), "snps,dwc2");
 	while (ofnode_valid(node)) {
-		mode = ofnode_read_string(node, "dr_mode");
-		if (mode && strcmp(mode, "otg") == 0) {
+		switch (usb_get_dr_mode(node)) {
+		case USB_DR_MODE_OTG:
 			matched = true;
 			break;
+
+		default:
+			break;
 		}
 
+		if (matched)
+			break;
+
 		node = ofnode_by_compatible(node, "snps,dwc2");
 	}
 	if (!matched) {
-- 
2.40.0



More information about the U-Boot mailing list