Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 25157) +++ apps/lang/english.lang (working copy) @@ -13377,4 +13377,21 @@ recording_histogram: "Histogram interval" + + id: LANG_USB_CHARGING_MODE + desc: in settings -> system menu + user: core + + *: none + charging: "USB Charging By Default?" + + + *: none + charging: "USB Charging By Default?" + + + *: none + charging: "U S B Charging By Default?" + + Index: apps/settings.h =================================================================== --- apps/settings.h (revision 25157) +++ apps/settings.h (working copy) @@ -540,6 +540,7 @@ bool audioscrobbler; /* Audioscrobbler logging */ bool cuesheet; bool car_adapter_mode; /* 0=off 1=on */ + bool usb_charging_mode; /* 0=off 1=on */ int start_in_screen; #if defined(HAVE_RTC_ALARM) && \ (defined(HAVE_RECORDING) || CONFIG_TUNER) Index: apps/menus/settings_menu.c =================================================================== --- apps/menus/settings_menu.c (revision 25157) +++ apps/menus/settings_menu.c (working copy) @@ -244,6 +244,8 @@ #endif #if CONFIG_CHARGING MENUITEM_SETTING(car_adapter_mode, &global_settings.car_adapter_mode, NULL); +MENUITEM_SETTING(usb_charging_mode, &global_settings.usb_charging_mode, + NULL); #endif #ifdef IPOD_ACCESSORY_PROTOCOL MENUITEM_SETTING(serial_bitrate, &global_settings.serial_bitrate, NULL); @@ -292,6 +294,7 @@ #endif #if CONFIG_CHARGING &car_adapter_mode, + &usb_charging_mode, #endif #ifdef IPOD_ACCESSORY_PROTOCOL &serial_bitrate, Index: apps/settings_list.c =================================================================== --- apps/settings_list.c (revision 25157) +++ apps/settings_list.c (working copy) @@ -689,6 +689,8 @@ #if CONFIG_CHARGING OFFON_SETTING(NVRAM(1), car_adapter_mode, LANG_CAR_ADAPTER_MODE, false, "car adapter mode", NULL), + OFFON_SETTING(0, usb_charging_mode,LANG_USB_CHARGING_MODE, false, + "usb charging mode", NULL), #endif #ifdef IPOD_ACCESSORY_PROTOCOL CHOICE_SETTING(0, serial_bitrate, LANG_SERIAL_BITRATE, 0, "serial bitrate", Index: firmware/export/usb.h =================================================================== --- firmware/export/usb.h (revision 25157) +++ firmware/export/usb.h (working copy) @@ -23,6 +23,7 @@ #include "kernel.h" #include "button.h" +#include "settings.h" #if defined(IPOD_COLOR) || defined(IPOD_4G) \ || defined(IPOD_MINI) || defined(IPOD_MINI2G) Index: firmware/usb.c =================================================================== --- firmware/usb.c (revision 25157) +++ firmware/usb.c (working copy) @@ -204,9 +204,21 @@ static inline bool usb_power_button(void) { #if (defined(IRIVER_H10) || defined (IRIVER_H10_5GB)) && !defined(USE_ROCKBOX_USB) - return (button_status() & ~USBPOWER_BTN_IGNORE) != USBPOWER_BUTTON; + if (global_settings.usb_charging_mode) + { + /* Charging by default mode is ON. inverse power button state */ + return !((button_status() & ~USBPOWER_BTN_IGNORE) != USBPOWER_BUTTON) + } + /* Charging by default is OFF. return real status of power button */ + return ((button_status() & ~USBPOWER_BTN_IGNORE) != USBPOWER_BUTTON); #else - return (button_status() & ~USBPOWER_BTN_IGNORE) == USBPOWER_BUTTON; + if (global_settings.usb_charging_mode) + { + /* Charging by default mode is ON. inverse power button state */ + return !((button_status() & ~USBPOWER_BTN_IGNORE) == USBPOWER_BUTTON); + } + /* Charging by default is OFF. return real status of power button */ + return ((button_status() & ~USBPOWER_BTN_IGNORE) == USBPOWER_BUTTON); #endif }