summaryrefslogtreecommitdiff
path: root/power/mediatek.c
diff options
context:
space:
mode:
Diffstat (limited to 'power/mediatek.c')
-rw-r--r--power/mediatek.c36
1 files changed, 34 insertions, 2 deletions
diff --git a/power/mediatek.c b/power/mediatek.c
index 8515c27310..e4b54c59d9 100644
--- a/power/mediatek.c
+++ b/power/mediatek.c
@@ -140,6 +140,16 @@ enum power_on_event_t {
POWER_ON_EVENT_COUNT,
};
+/**
+ * Parameters of mtk_backlight_override().
+ */
+enum blacklight_override_t {
+ MTK_BACKLIGHT_FORCE_OFF,
+ MTK_BACKLIGHT_CONTROL_BY_SOC,
+
+ MTK_BACKLIGHT_OVERRIDE_COUNT,
+};
+
/* Forward declaration */
static void chipset_turn_off_power_rails(void);
@@ -261,8 +271,30 @@ static int check_for_power_off_event(void)
return POWER_OFF_CANCEL;
}
-static void llama_lid_event(void)
+/**
+ * Set the LCD backlight enable pin and override the signal from SoC.
+ *
+ * @param asserted MTK_BACKLIGHT_FORCE_OFF, force off the panel backlight
+ * MTK_BACKLIGHT_CONTROL_BY_SOC, leave the control to SOC
+ */
+static void mtk_backlight_override(enum blacklight_override_t asserted)
+{
+ /* Signal is active-low */
+ gpio_set_level(GPIO_EC_BL_OVERRIDE, !asserted);
+}
+
+static void mtk_lid_event(void)
{
+ enum blacklight_override_t bl_override;
+
+ /* Override the panel backlight enable signal from SoC,
+ * force the backlight off on lid close.
+ */
+ bl_override = lid_is_open() ?
+ MTK_BACKLIGHT_CONTROL_BY_SOC :
+ MTK_BACKLIGHT_FORCE_OFF;
+ mtk_backlight_override(bl_override);
+
/* Power task only cares about lid-open events */
if (!lid_is_open())
return;
@@ -270,7 +302,7 @@ static void llama_lid_event(void)
lid_opened = 1;
task_wake(TASK_ID_CHIPSET);
}
-DECLARE_HOOK(HOOK_LID_CHANGE, llama_lid_event, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_LID_CHANGE, mtk_lid_event, HOOK_PRIO_DEFAULT);
enum power_state power_chipset_init(void)
{