summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx31/gigabeat-s/power-imx31.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/power-imx31.c')
-rw-r--r--firmware/target/arm/imx31/gigabeat-s/power-imx31.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/firmware/target/arm/imx31/gigabeat-s/power-imx31.c b/firmware/target/arm/imx31/gigabeat-s/power-imx31.c
index e51318d16f..3e845d7d93 100644
--- a/firmware/target/arm/imx31/gigabeat-s/power-imx31.c
+++ b/firmware/target/arm/imx31/gigabeat-s/power-imx31.c
@@ -19,6 +19,7 @@
19#include "config.h" 19#include "config.h"
20#include "system.h" 20#include "system.h"
21#include "power.h" 21#include "power.h"
22#include "ata.h"
22#include "backlight.h" 23#include "backlight.h"
23#include "backlight-target.h" 24#include "backlight-target.h"
24#include "avic-imx31.h" 25#include "avic-imx31.h"
@@ -50,7 +51,21 @@ bool charging_state(void) {
50 51
51void ide_power_enable(bool on) 52void ide_power_enable(bool on)
52{ 53{
53 (void)on; 54 if (!on)
55 {
56 /* Bus must be isolated before power off */
57 imx31_regmod32(&GPIO2_DR, (1 << 16), (1 << 16));
58 }
59
60 /* HD power switch */
61 imx31_regmod32(&GPIO3_DR, on ? (1 << 5) : 0, (1 << 5));
62
63 if (on)
64 {
65 /* Bus switch may be turned on after powerup */
66 sleep(HZ/10);
67 imx31_regmod32(&GPIO2_DR, 0, (1 << 16));
68 }
54} 69}
55 70
56bool ide_powered(void) 71bool ide_powered(void)