summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/export/config/vibe500.h3
-rw-r--r--firmware/target/arm/pbell/vibe500/power-vibe500.c27
2 files changed, 14 insertions, 16 deletions
diff --git a/firmware/export/config/vibe500.h b/firmware/export/config/vibe500.h
index 7ae1f4fc2a..f8ce86b24f 100644
--- a/firmware/export/config/vibe500.h
+++ b/firmware/export/config/vibe500.h
@@ -136,8 +136,7 @@
#define CONFIG_I2C I2C_PP5020
/* define this if the hardware can be powered off while charging */
-/* It is possible to do it (OF seems to do that) but the method is unknown yet */
-/* #define HAVE_POWEROFF_WHILE_CHARGING */
+#define HAVE_POWEROFF_WHILE_CHARGING
/* The start address index for ROM builds */
#define ROM_START 0x00000000
diff --git a/firmware/target/arm/pbell/vibe500/power-vibe500.c b/firmware/target/arm/pbell/vibe500/power-vibe500.c
index 45ab7fb1fd..b345a9b5d0 100644
--- a/firmware/target/arm/pbell/vibe500/power-vibe500.c
+++ b/firmware/target/arm/pbell/vibe500/power-vibe500.c
@@ -55,7 +55,7 @@ void power_init(void)
ClipZifnoFinger=0,DisableDeceleration=0,Dribble=0.
MEP parameter 0x21 - Enhanced Operating Configuration */
touchpad_set_parameter(0x21,0x0008);
- /* Set the GPO_LEVEL = 0 - for the button lights */
+ /* Set the GPO_LEVELS = 0 - for the button lights */
touchpad_set_parameter(0x23,0x0000);
/* Sound unmute (on) */
@@ -94,22 +94,21 @@ bool ide_powered(void)
void power_off(void)
{
- /* from the OF */
-/*
- DEV_INIT2 |= DEV_I2S;
- GPIO_SET_BITWISE(GPIOL_OUTPUT_VAL, 0x10);
- sleep(HZ/100);
- GPIO_SET_BITWISE(GPIOL_OUTPUT_VAL, 0x10);
- sleep(HZ);
- GPIO_CLEAR_BITWISE(GPIOB_OUTPUT_VAL, 0x80);
- sleep(HZ);
- GPIO_CLEAR_BITWISE(GPIOC_OUTPUT_VAL, 0x08);
- GPO32_VAL |= 0x40000000;
- GPO32_ENABLE |= 0x40000000;
-*/
/* Sound mute (off) */
DEV_INIT2 |= DEV_I2S;
GPIO_SET_BITWISE(GPIOL_OUTPUT_VAL, 0x10);
/* shutdown bit */
GPIO_CLEAR_BITWISE(GPIOB_OUTPUT_VAL, 0x80);
+ /* button lights off */
+ touchpad_set_parameter(0x22,0x0000);
+ /* ATA power off */
+ ide_power_enable(false);
+ /* ? - in the OF */
+ GPO32_VAL |= 0x40000000;
+ GPO32_ENABLE |= 0x40000000;
+ /* lcd controller off ? - makes lcd white until power on */
+ GPIO_CLEAR_BITWISE(GPIOJ_OUTPUT_VAL, 0x04);
+ /* a way to poweroff while charging = system_reset */
+ if (power_input_status())
+ system_reboot();
}