usb: Fix usb mode not initialized/restored on the DX50/DX90

rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Fri, 3 Jul 2026 13:40:57 -0400
Newsgroups gmane.comp.systems.archos.rockbox.cvs
Message-ID <[email protected]>
commit f11c89aae290f6b69333503231e8b05faad7661b
Author: Solomon Peachy <[email protected]>
Date:   Fri Jul 3 07:40:46 2026 -0400

    usb:  Fix usb mode not initialized/restored on the DX50/DX90
    
     * Devices with ADB now have HAVE_USB_ADB
     * DX50/DX90 no longer set USB_NONE
       * stub out necessary functions
     * usb_set_mode() and global_settings.usb_mode are now:
       * called for all devices with (HAVE_USB_ADB | HAVE_USB_POWER)
       * wrapped with consistent #ifdefs
    
    Fixes regression in ce88de54b89
    
    Change-Id: Ib0c16082fe237e8159cd42847355186ea5c74589

diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index 6986cbac34..9b017dc2f9 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -58,7 +58,7 @@
 #include "onplay.h"
 #include "misc.h"
 
-#if defined(DX50) || defined(DX90) || (defined(HAVE_USB_POWER) && !defined(USB_NONE) && !defined(SIMULATOR))
+#if !defined(SIMULATOR) && !defined(USB_NONE) && (defined(HAVE_USB_ADB) || defined(HAVE_USB_POWER))
 #define HAVE_USB_MODE
 #endif
 
diff --git a/apps/settings.c b/apps/settings.c
index d88cb3f241..afe62299e3 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -108,11 +108,6 @@ static long lasttime = 0;
 
 #if defined(DX50) || defined(DX90)
 #include "governor-ibasso.h"
-#include "usb-ibasso.h"
-#endif
-
-#if (defined(HIBY_R3PROII) || defined(HIBY_R1))
-#include "usb-hiby-gadget.h"
 #endif
 
 #ifdef LOGF_ENABLE
@@ -1130,7 +1125,7 @@ void settings_apply(bool read_disk)
     memcpy(&calibration_parameters, &global_settings.ts_calibration_data, sizeof(struct touchscreen_parameter));
 #endif
 
-#if defined(HAVE_USB_POWER) && !defined(USB_NONE) && !defined(SIMULATOR)
+#if !defined(SIMULATOR) && !defined(USB_NONE) && (defined(HAVE_USB_ADB) || defined(HAVE_USB_POWER))
     usb_set_mode(global_settings.usb_mode);
 #endif
 #if defined(HAVE_GENERAL_PURPOSE_LED)
diff --git a/apps/settings.h b/apps/settings.h
index c872aba6a8..178817f280 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -915,7 +915,7 @@ struct user_settings
 #if defined(DX50) || defined(DX90)
     int governor;
 #endif
-#if defined(DX50) || defined(DX90) || (defined(HAVE_USB_POWER) && !defined(USB_NONE) && !defined(SIMULATOR))
+#if !defined(SIMULATOR) && !defined(USB_NONE) && (defined(HAVE_USB_ADB) || defined(HAVE_USB_POWER))
     int usb_mode;
 #endif
 #if defined(BUTTON_REC) || \
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 9e57bc3d01..1f24a8e0af 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -72,7 +72,6 @@
 
 #if defined(DX50) || defined(DX90)
 #include "governor-ibasso.h"
-#include "usb-ibasso.h"
 #endif
 
 #define UNUSED {.RESERVED=NULL}
@@ -2368,31 +2367,26 @@ const struct settings_list settings[] = {
                    "Powersave",
                    "Performance"),
 #endif
-#if defined(DX50) || defined(DX90) || (defined(HAVE_USB_POWER) && !defined(USB_NONE) && !defined(SIMULATOR))
+#if !defined(SIMULATOR) && !defined(USB_NONE) && (defined(HAVE_USB_ADB) || defined(HAVE_USB_POWER))
     CHOICE_SETTING(0,
                    usb_mode,
                    LANG_USB_MODE,
                    USBMODE_DEFAULT,
                    "usb mode",
                    "mass storage,charge"
-#if defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1)
+#if defined(HAVE_USB_ADB)
                    ",adb"
 #endif
                    ,
-#if defined(DX50) || defined(DX90)
-                   ibasso_set_usb_mode,
-                   3,
-#else
                    usb_set_mode,
-#if defined(HIBY_R3PROII) || defined(HIBY_R1)
+#if defined(HAVE_USB_ADB)
                    3,
 #else
                    2,
-#endif
 #endif
                    ID2P(LANG_USB_MODE_MASS_STORAGE),
                    ID2P(LANG_USB_MODE_CHARGE)
-#if defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1)
+#if defined(HAVE_USB_ADB)
                    ,ID2P(LANG_USB_MODE_ADB)
 #endif
         ),
diff --git a/firmware/export/config/hibyr1.h b/firmware/export/config/hibyr1.h
index f5b3707f6f..f830791d9e 100644
--- a/firmware/export/config/hibyr1.h
+++ b/firmware/export/config/hibyr1.h
@@ -83,6 +83,8 @@
 #define BOOTDIR      "/.rockbox"
 
 /* USB */
+#define HAVE_USB_ADB
+#define HAVE_USB_POWER
 #define USB_VID_STR "32BB"
 #define USB_PID_STR "0101"
 
diff --git a/firmware/export/config/hibyr3proii.h b/firmware/export/config/hibyr3proii.h
index 32a30887c2..ffb0c69f16 100644
--- a/firmware/export/config/hibyr3proii.h
+++ b/firmware/export/config/hibyr3proii.h
@@ -86,6 +86,8 @@
 #define BOOTDIR      "/.rockbox"
 
 /* USB */
+#define HAVE_USB_ADB
+#define HAVE_USB_POWER
 #define USB_VID_STR "32BB"
 #define USB_PID_STR "0101"
 
diff --git a/firmware/export/config/ibassodx50.h b/firmware/export/config/ibassodx50.h
index f8784ad1cc..1636aaba59 100644
--- a/firmware/export/config/ibassodx50.h
+++ b/firmware/export/config/ibassodx50.h
@@ -35,8 +35,8 @@
 
 #define MODEL_NAME "iBasso DX50"
 
-#define USB_NONE
 #define HAVE_USB_POWER
+#define HAVE_USB_ADB
 
 /* define this if you have a colour LCD */
 #define HAVE_LCD_COLOR
diff --git a/firmware/export/config/ibassodx90.h b/firmware/export/config/ibassodx90.h
index dd7b406ea6..1274a890f0 100644
--- a/firmware/export/config/ibassodx90.h
+++ b/firmware/export/config/ibassodx90.h
@@ -35,8 +35,8 @@
 
 #define MODEL_NAME   "iBasso DX90"
 
-#define USB_NONE
 #define HAVE_USB_POWER
+#define HAVE_USB_ADB
 
 /* define this if you have a colour LCD */
 #define HAVE_LCD_COLOR
diff --git a/firmware/target/hosted/ibasso/usb-ibasso.c b/firmware/target/hosted/ibasso/usb-ibasso.c
index 9889318cf2..e4f2a8c016 100644
--- a/firmware/target/hosted/ibasso/usb-ibasso.c
+++ b/firmware/target/hosted/ibasso/usb-ibasso.c
@@ -87,7 +87,26 @@ void ibasso_set_usb_mode(int mode)
     }
 }
 
-bool usb_powered_only(void)
+void usb_enable(bool on)
 {
-  return false;
+    (void)on; // XXX maybe implement?
+}
+
+int usb_detect(void)
+{
+    return 0; // XXX figure this out?
+}
+
+void usb_init_device(void)
+{
+    // XXX maybe something?
+}
+
+int disk_mount_all(void)
+{
+    return 1;  // XXX maybe do sometihng?
+}
+int disk_unmount_all(void)
+{
+    return 1;  // XXX maybe do sometihng?
 }
diff --git a/firmware/usb.c b/firmware/usb.c
index 14d15d669a..8f93cf158e 100644
--- a/firmware/usb.c
+++ b/firmware/usb.c
@@ -53,6 +53,9 @@
 #if defined(HIBY_R3PROII) || defined(HIBY_R1)
 #include "usb-hiby-gadget.h"
 #endif
+#if defined(DX50) || defined(DX90)
+#include "usb-ibasso.h"
+#endif
 
 #if defined(IPOD_ACCESSORY_PROTOCOL)
 #include "iap.h"
@@ -73,12 +76,24 @@
 bool do_screendump_instead_of_usb = false;
 
 #if !defined(SIMULATOR) && !defined(USB_NONE)
-
 /* We assume that the USB cable is extracted */
 static int usb_state = USB_EXTRACTED;
 #if (CONFIG_STORAGE & STORAGE_MMC) && defined(USB_FULL_INIT) && !defined(HAVE_USBSTACK)
 static int usb_mmc_countdown = 0;
 #endif
+#if defined(HAVE_USB_POWER) || defined(HAVE_USB_ADB)
+static bool usb_power_only = false;
+static int usb_mode = USBMODE_DEFAULT;
+void usb_set_mode(int mode)
+{
+    usb_mode = mode;
+#if defined(DX50) || defined(DX90)
+    ibasso_set_usb_mode(mode);
+#elif defined(HIBY_R3PROII) || defined(HIBY_R1)
+    hiby_set_usb_mode(mode);
+#endif
+}
+#endif
 
 #ifdef USB_FULL_INIT
 /* Make sure there's enough stack space for screendump */
@@ -106,11 +121,6 @@ static int usb_audio = 0;
 static bool usb_host_present = false;
 static int usb_num_acks_to_expect = 0;
 static uint32_t usb_broadcast_seqnum = 0x80000000;
-#ifdef HAVE_USB_POWER
-static int usb_mode = USBMODE_DEFAULT;
-static bool usb_power_only = false;
-#endif
-
 #if defined(USB_FIREWIRE_HANDLING)
 static void try_reboot(void)
 {
@@ -149,18 +159,6 @@ static inline bool usb_do_screendump(void)
     return false;
 }
 
-#ifdef HAVE_USB_POWER
-void usb_set_mode(int mode)
-{
-    usb_mode = mode;
-#if defined(DX50) || defined(DX90)
-    ibasso_set_usb_mode(mode);
-#elif defined(HIBY_R3PROII) || defined(HIBY_R1)
-    hiby_set_usb_mode(mode);
-#endif
-}
-#endif
-
 #ifdef USB_FIREWIRE_HANDLING
 static inline bool usb_reboot_button(void)
 {
-- 
rockbox-cvs mailing list
[email protected]
https://lists.haxx.se/mailman/listinfo/rockbox-cvs