diff options
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/power-imx31.c')
-rw-r--r-- | firmware/target/arm/imx31/gigabeat-s/power-imx31.c | 17 |
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 | ||
51 | void ide_power_enable(bool on) | 52 | void 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 | ||
56 | bool ide_powered(void) | 71 | bool ide_powered(void) |