mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-01 12:52:26 +00:00
This code is not LM4-specific, it's x86-specific. So it doesn't
belong in chip/lm4. Put it in its own module rather than leaving it
in switch.c, since some x86 systems may need the power button state
machine but not the backlight-enable passthru.
BUG=chrome-os-partner:18343
BRANCH=none
TEST=Quickly run a magnet over the lid switch; the backlight goes off and then
back on.
Change-Id: I72f7139b73f91539dcfbe6b5cb6d56587ab66fde
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61595
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
/* Backlight passthru for x86 platforms */
|
|
|
|
#include "common.h"
|
|
#include "gpio.h"
|
|
#include "hooks.h"
|
|
#include "host_command.h"
|
|
#include "lid_switch.h"
|
|
|
|
/**
|
|
* Update backlight state.
|
|
*/
|
|
static void update_backlight(void)
|
|
{
|
|
/* Only enable the backlight if the lid is open */
|
|
if (gpio_get_level(GPIO_PCH_BKLTEN) && lid_is_open())
|
|
gpio_set_level(GPIO_ENABLE_BACKLIGHT, 1);
|
|
else
|
|
gpio_set_level(GPIO_ENABLE_BACKLIGHT, 0);
|
|
}
|
|
DECLARE_HOOK(HOOK_LID_CHANGE, update_backlight, HOOK_PRIO_DEFAULT);
|
|
|
|
/**
|
|
* Initialize backlight module.
|
|
*/
|
|
static void backlight_init(void)
|
|
{
|
|
update_backlight();
|
|
|
|
gpio_enable_interrupt(GPIO_PCH_BKLTEN);
|
|
}
|
|
DECLARE_HOOK(HOOK_INIT, backlight_init, HOOK_PRIO_DEFAULT);
|
|
|
|
void backlight_interrupt(enum gpio_signal signal)
|
|
{
|
|
update_backlight();
|
|
}
|
|
|
|
/**
|
|
* Host command to toggle backlight.
|
|
*/
|
|
static int switch_command_enable_backlight(struct host_cmd_handler_args *args)
|
|
{
|
|
const struct ec_params_switch_enable_backlight *p = args->params;
|
|
gpio_set_level(GPIO_ENABLE_BACKLIGHT, p->enabled);
|
|
return EC_RES_SUCCESS;
|
|
}
|
|
DECLARE_HOST_COMMAND(EC_CMD_SWITCH_ENABLE_BKLIGHT,
|
|
switch_command_enable_backlight, 0);
|
|
|
|
|