From 7e0492444c38f2ed350016be15b6a4d8ba489bcd Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Wed, 25 May 2022 00:43:19 +0100 Subject: usb: remove "Ask" USB Mode (FS#13317) USB ask mode is basically a footgun: it can't work on native targets and doesn't work reliably on hosted ones, and it continually produces a slow trickle of problems. FS#13317 gives a rundown of the issues. Removing the setting seems like the best solution for now, since a fix would be pretty involved. This partially reverts 60f581e8f5. The USB Mode setting is left in place so the option can be added back later in a non-buggy way. Change-Id: Ie01b28dd2ed95a31b509a7834d85bac8eb866098 --- apps/settings_list.c | 7 +++---- firmware/export/usb.h | 1 - firmware/usb.c | 25 ------------------------- manual/configure_rockbox/system_options.tex | 10 ++++++++-- manual/rockbox_interface/main.tex | 15 ++++++--------- 5 files changed, 17 insertions(+), 41 deletions(-) diff --git a/apps/settings_list.c b/apps/settings_list.c index e230a5a081..d6449d1c6f 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -2148,19 +2148,18 @@ const struct settings_list settings[] = { LANG_USB_MODE, USBMODE_DEFAULT, "usb mode", - "ask,mass storage,charge" + "mass storage,charge" #if defined(DX50) || defined(DX90) ",adb" #endif , #if defined(DX50) || defined(DX90) ibasso_set_usb_mode, - 4, + 3, #else usb_set_mode, - 3, + 2, #endif - ID2P(LANG_ASK), ID2P(LANG_USB_MODE_MASS_STORAGE), ID2P(LANG_USB_MODE_CHARGE) #if defined(DX50) || defined(DX90) diff --git a/firmware/export/usb.h b/firmware/export/usb.h index fe9f3bcfa1..c075fa83ec 100644 --- a/firmware/export/usb.h +++ b/firmware/export/usb.h @@ -134,7 +134,6 @@ enum /* Supported usb modes. */ enum { - USB_MODE_ASK = 0, USB_MODE_MASS_STORAGE, USB_MODE_CHARGE, USB_MODE_ADB diff --git a/firmware/usb.c b/firmware/usb.c index 4c122e8eea..c4d07c5533 100644 --- a/firmware/usb.c +++ b/firmware/usb.c @@ -491,37 +491,12 @@ static void NORETURN_ATTR usb_thread(void) if (button_status() & ~USBPOWER_BTN_IGNORE) new_usbmode = USB_MODE_MASS_STORAGE; break; -#ifndef BOOTLOADER - case USB_MODE_ASK: - new_usbmode = USB_MODE_ASK; - break; -#endif default: case USB_MODE_MASS_STORAGE: if (button_status() & ~USBPOWER_BTN_IGNORE) new_usbmode = USB_MODE_CHARGE; break; } - -#ifndef BOOTLOADER - if (new_usbmode == USB_MODE_ASK) - { - push_current_activity(ACTIVITY_USBSCREEN); - if (yesno_pop(ID2P(LANG_ENTER_USB_STORAGE_MODE_QUERY))) - new_usbmode = USB_MODE_MASS_STORAGE; - else - new_usbmode = USB_MODE_CHARGE; - pop_current_activity(); - /* Force full redraw */ -// queue_post(&button_queue, BUTTON_REDRAW, 0); -// Alternative approach, as above is supposedly inadequate by design. - FOR_NB_SCREENS(i) - { - struct screen *screen = &screens[i]; - screen->set_viewport(NULL); - } - } -#endif #endif #ifndef USB_DETECT_BY_REQUEST diff --git a/manual/configure_rockbox/system_options.tex b/manual/configure_rockbox/system_options.tex index 5a95df27b1..52750f7486 100755 --- a/manual/configure_rockbox/system_options.tex +++ b/manual/configure_rockbox/system_options.tex @@ -870,8 +870,14 @@ therefore result in better runtime. \opt{usb_power}{ \subsection{USB Mode} This controls what happens with the \dap{}'s USB port is connected. - \setting{Charge Only} and \setting{Mass Storage} will automatically enter - that mode, and \setting{Ask} will prompt the user each time. + \setting{Mass Storage} allows you to transfer files, while + \setting{Charge Only} will only charge the battery (and allow you to keep + using the player). You can choose the opposite behavior by holding down any + button while plugging in the USB cable. + \nopt{fuzeplus}{ + \note{Be aware that holding a button may still perform its normal function, + so it is recommended to use a button without harmful side effects, such as + \ActionStdUsbCharge{}.} } \opt{multidrive_usb}{ \subsection{USB Hide Internal Drive} diff --git a/manual/rockbox_interface/main.tex b/manual/rockbox_interface/main.tex index 20aa8c833e..82192829fd 100644 --- a/manual/rockbox_interface/main.tex +++ b/manual/rockbox_interface/main.tex @@ -848,16 +848,13 @@ properly.} \opt{usb_power}{ \section{USB Charging} - Whenever your \dap{} is connected to USB, it will automatically charge. - However, depending on the \config{usb\_mode} setting, the \dap{} may also - enter mass storage mode or prompt the user for what action to take. - When the \dap{} is configured to enter mass storage mode or automatically - charge, you may trigger the opposite behavior by holding down any button - while plugging it in. Your \dap{} must already be in Rockbox for this to - function. + Your \dap{} will automatically charge when connected to USB. By default + Rockbox will connect in mass storage mode to transfer files, but you can + prevent this by holding down any button while plugging in the USB cable, + or by changing the \setting{USB Mode} setting to \setting{Charge Only}. \nopt{fuzeplus}{ - \note{Be aware that this button may still perform its normal function, so - it is recommended to use a button without harmful side effects, such as + \note{Be aware that holding a button may still perform its normal function, + so it is recommended to use a button without harmful side effects, such as \ActionStdUsbCharge{}.} } } -- cgit v1.2.3