diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/power.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c index aa76c2ecb6..17a3fecea1 100644 --- a/firmware/drivers/power.c +++ b/firmware/drivers/power.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include "power.h" | 25 | #include "power.h" |
26 | #include "logf.h" | 26 | #include "logf.h" |
27 | #include "usb.h" | 27 | #include "usb.h" |
28 | #include "backlight-target.h" | ||
28 | 29 | ||
29 | #if CONFIG_CHARGING == CHARGING_CONTROL | 30 | #if CONFIG_CHARGING == CHARGING_CONTROL |
30 | bool charger_enabled; | 31 | bool charger_enabled; |
@@ -66,6 +67,13 @@ void power_init(void) | |||
66 | PBCR2 &= ~0x0c00; /* GPIO for PB5 */ | 67 | PBCR2 &= ~0x0c00; /* GPIO for PB5 */ |
67 | or_b(0x20, &PBIORL); | 68 | or_b(0x20, &PBIORL); |
68 | or_b(0x20, &PBDRL); /* hold power */ | 69 | or_b(0x20, &PBDRL); /* hold power */ |
70 | #if defined(HAVE_MMC) && !defined(HAVE_BACKLIGHT) | ||
71 | /* Disable backlight on backlight-modded Ondios when running | ||
72 | * a standard build (always on otherwise). */ | ||
73 | PACR1 &= ~0x3000; /* Set PA14 (backlight control) to GPIO */ | ||
74 | and_b(~0x40, &PADRH); /* drive it low */ | ||
75 | or_b(0x40, &PAIORH); /* ..and output */ | ||
76 | #endif | ||
69 | #endif | 77 | #endif |
70 | #if CONFIG_CHARGING == CHARGING_CONTROL | 78 | #if CONFIG_CHARGING == CHARGING_CONTROL |
71 | PBCR2 &= ~0x0c00; /* GPIO for PB5 */ | 79 | PBCR2 &= ~0x0c00; /* GPIO for PB5 */ |
@@ -200,6 +208,10 @@ void power_off(void) | |||
200 | and_b(~0x10, &PBDRL); | 208 | and_b(~0x10, &PBDRL); |
201 | or_b(0x10, &PBIORL); | 209 | or_b(0x10, &PBIORL); |
202 | #elif defined(HAVE_POWEROFF_ON_PB5) | 210 | #elif defined(HAVE_POWEROFF_ON_PB5) |
211 | #if defined(HAVE_MMC) && defined(HAVE_BACKLIGHT) | ||
212 | /* Switch off the light on backlight-modded Ondios */ | ||
213 | __backlight_off(); | ||
214 | #endif | ||
203 | and_b(~0x20, &PBDRL); | 215 | and_b(~0x20, &PBDRL); |
204 | or_b(0x20, &PBIORL); | 216 | or_b(0x20, &PBIORL); |
205 | #else /* player */ | 217 | #else /* player */ |