Index: trunk/firmware/target/arm/s3c2440/gigabeat-fx/button-meg-fx.c =================================================================== --- trunk.orig/firmware/target/arm/s3c2440/gigabeat-fx/button-meg-fx.c +++ trunk/firmware/target/arm/s3c2440/gigabeat-fx/button-meg-fx.c @@ -87,7 +87,7 @@ int button_read_device(void) /* Check for hold first - exit if asserted with no button pressed */ if (hold_button) - return btn; + return btn | BUTTON_HOLD_ON; /* the side buttons - Check before doing all of the work on each bit */ buttons = GPGDAT & 0x1F; Index: trunk/firmware/target/arm/s3c2440/gigabeat-fx/button-target.h =================================================================== --- trunk.orig/firmware/target/arm/s3c2440/gigabeat-fx/button-target.h +++ trunk/firmware/target/arm/s3c2440/gigabeat-fx/button-target.h @@ -22,6 +22,7 @@ #include #include "config.h" +#define HAS_POWEROFF_NOW_BUTTON #define HAS_BUTTON_HOLD bool button_hold(void); @@ -44,6 +45,8 @@ int button_read_device(void); #define BUTTON_SELECT 0x00000100 #define BUTTON_A 0x00000200 +#define BUTTON_HOLD_ON 0x00010000 + /* Remote control buttons */ #define BUTTON_RC_VOL_UP 0x00000400 @@ -87,12 +90,13 @@ int button_read_device(void); #define BUTTON_MAIN (BUTTON_POWER|BUTTON_MENU|BUTTON_LEFT|BUTTON_RIGHT\ |BUTTON_UP|BUTTON_DOWN|BUTTON_VOL_UP|BUTTON_VOL_DOWN\ - |BUTTON_SELECT|BUTTON_A) + |BUTTON_SELECT|BUTTON_A|BUTTON_HOLD_ON) #define BUTTON_REMOTE (BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN|BUTTON_RC_FF\ |BUTTON_RC_REW|BUTTON_RC_PLAY|BUTTON_RC_DSP) #define POWEROFF_BUTTON BUTTON_POWER +#define POWEROFF_NOW_BUTTON BUTTON_HOLD_ON #define POWEROFF_COUNT 10 #endif /* _BUTTON_TARGET_H_ */ Index: trunk/firmware/target/coldfire/iriver/button-target.h =================================================================== --- trunk.orig/firmware/target/coldfire/iriver/button-target.h +++ trunk/firmware/target/coldfire/iriver/button-target.h @@ -26,6 +26,7 @@ #include "config.h" #define HAS_BUTTON_HOLD +#define HAS_POWEROFF_NOW_BUTTON #define HAS_REMOTE_BUTTON_HOLD bool button_hold(void); @@ -54,8 +55,10 @@ bool button_scan_enabled(void); #define BUTTON_SELECT 0x00000100 +#define BUTTON_HOLD_ON 0x00000200 + #define BUTTON_MAIN (BUTTON_ON|BUTTON_OFF|BUTTON_LEFT|BUTTON_RIGHT|\ - BUTTON_UP|BUTTON_DOWN|BUTTON_REC|BUTTON_MODE|BUTTON_SELECT) + BUTTON_UP|BUTTON_DOWN|BUTTON_REC|BUTTON_MODE|BUTTON_SELECT|BUTTON_HOLD_ON) /* Remote control's buttons */ #define BUTTON_RC_ON 0x00100000 @@ -80,6 +83,7 @@ bool button_scan_enabled(void); |BUTTON_RC_SOURCE) #define POWEROFF_BUTTON BUTTON_OFF +#define POWEROFF_NOW_BUTTON BUTTON_HOLD_ON #define RC_POWEROFF_BUTTON BUTTON_RC_STOP #define POWEROFF_COUNT 10 Index: trunk/firmware/target/coldfire/iriver/h300/button-h300.c =================================================================== --- trunk.orig/firmware/target/coldfire/iriver/h300/button-h300.c +++ trunk/firmware/target/coldfire/iriver/h300/button-h300.c @@ -127,6 +127,9 @@ int button_read_device(void) } } + if (hold_button) + btn |= BUTTON_HOLD_ON; + /* remote buttons */ remote_hold_button_old = remote_hold_button; remote_hold_button = remote_button_hold_only();