rockchip: use standard dr_mode parsing function
authorJohn Keeping <john@metanate.com>
Wed, 12 Apr 2023 11:52:52 +0000 (12:52 +0100)
committerKever Yang <kever.yang@rock-chips.com>
Tue, 9 May 2023 14:50:01 +0000 (22:50 +0800)
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@metanate.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
arch/arm/mach-rockchip/board.c

index f1f70c8..6d33d65 100644 (file)
@@ -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) {