summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Collyer <scollyer@google.com>2018-12-19 11:06:58 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-30 13:06:36 -0800
commit9726522566fc1169df30d54764d78719e0dc75b3 (patch)
treee7c98eba3338ae66d31bf73d9ca5523a57488eab
parentf0efcfb98fa5fca8a7c56b10ea48b808cc0f144a (diff)
downloadchrome-ec-9726522566fc1169df30d54764d78719e0dc75b3.tar.gz
hatch: Add support for keyboard backlight
This CL adds board specific config options, functions and GPIO signal required for keyboard backlight support. BRANCH=none BUG=b:122251649 TEST=make buildall Change-Id: Ib60a7c861d2a85939592556437bd6202e6815947 Signed-off-by: Scott Collyer <scollyer@google.com> Reviewed-on: https://chromium-review.googlesource.com/1387590 Commit-Ready: Scott Collyer <scollyer@chromium.org> Tested-by: Scott Collyer <scollyer@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--baseboard/hatch/baseboard.c4
-rw-r--r--baseboard/hatch/baseboard.h1
-rw-r--r--board/hatch/board.c9
-rw-r--r--board/hatch/board.h4
-rw-r--r--board/hatch/gpio.inc5
5 files changed, 23 insertions, 0 deletions
diff --git a/baseboard/hatch/baseboard.c b/baseboard/hatch/baseboard.c
index 71a28a3faa..8419bd91ab 100644
--- a/baseboard/hatch/baseboard.c
+++ b/baseboard/hatch/baseboard.c
@@ -108,6 +108,8 @@ DECLARE_HOOK(HOOK_CHIPSET_STARTUP, baseboard_chipset_startup,
static void baseboard_chipset_resume(void)
{
/* TODD(b/122266850): Need to fill out this hook */
+ /* Enable keyboard backlight */
+ gpio_set_level(GPIO_EC_KB_BL_EN, 1);
}
DECLARE_HOOK(HOOK_CHIPSET_RESUME, baseboard_chipset_resume, HOOK_PRIO_DEFAULT);
@@ -115,6 +117,8 @@ DECLARE_HOOK(HOOK_CHIPSET_RESUME, baseboard_chipset_resume, HOOK_PRIO_DEFAULT);
static void baseboard_chipset_suspend(void)
{
/* TODD(b/122266850): Need to fill out this hook */
+ /* Disable keyboard backlight */
+ gpio_set_level(GPIO_EC_KB_BL_EN, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, baseboard_chipset_suspend,
HOOK_PRIO_DEFAULT);
diff --git a/baseboard/hatch/baseboard.h b/baseboard/hatch/baseboard.h
index 9eb62fc528..9d4eaed696 100644
--- a/baseboard/hatch/baseboard.h
+++ b/baseboard/hatch/baseboard.h
@@ -18,6 +18,7 @@
#define CONFIG_I2C
/* EC Defines */
+#define CONFIG_PWM
#define CONFIG_VBOOT_HASH
#define CONFIG_VSTORE
#define CONFIG_VSTORE_SLOT_COUNT 1
diff --git a/board/hatch/board.c b/board/hatch/board.c
index 0277164932..185794f0bc 100644
--- a/board/hatch/board.c
+++ b/board/hatch/board.c
@@ -12,6 +12,8 @@
#include "lid_switch.h"
#include "power.h"
#include "power_button.h"
+#include "pwm.h"
+#include "pwm_chip.h"
#include "spi.h"
#include "switch.h"
#include "system.h"
@@ -71,6 +73,13 @@ const struct spi_device_t spi_devices[] = {
};
const unsigned int spi_devices_used = ARRAY_SIZE(spi_devices);
+/******************************************************************************/
+/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
+const struct pwm_t pwm_channels[] = {
+ [PWM_CH_KBLIGHT] = { .channel = 3, .flags = 0, .freq = 10000 }
+};
+BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
+
void board_overcurrent_event(int port, int is_overcurrented)
{
/* Sanity check the port. */
diff --git a/board/hatch/board.h b/board/hatch/board.h
index bf9c21bf9b..7f91551111 100644
--- a/board/hatch/board.h
+++ b/board/hatch/board.h
@@ -26,6 +26,9 @@
#undef CONFIG_UART_TX_BUF_SIZE
#define CONFIG_UART_TX_BUF_SIZE 4096
+/* Keyboard features */
+#define CONFIG_PWM_KBLIGHT
+
/*
* Macros for GPIO signals used in common code that don't match the
* schematic names. Signal names in gpio.inc match the schematic and are
@@ -50,6 +53,7 @@ enum adc_channel {
};
enum pwm_channel {
+ PWM_CH_KBLIGHT,
PWM_CH_COUNT
};
diff --git a/board/hatch/gpio.inc b/board/hatch/gpio.inc
index d277cf7fac..82a65b91d2 100644
--- a/board/hatch/gpio.inc
+++ b/board/hatch/gpio.inc
@@ -56,6 +56,8 @@ GPIO(LED_1_L, PIN(C, 4), GPIO_OUT_HIGH) /* Yellow (hatch
GPIO(LED_2_L, PIN(C, 3), GPIO_OUT_HIGH) /* White (hatch) */
GPIO(LED_3_L, PIN(C, 2), GPIO_OUT_HIGH)
GPIO(LED_4_L, PIN(6, 0), GPIO_OUT_HIGH)
+GPIO(EC_KB_BL_EN, PIN(8, 6), GPIO_OUT_LOW) /* Keyboard backlight */
+
/* I2C pins - Alternate function below configures I2C module on these pins */
GPIO(I2C0_SCL, PIN(B, 5), GPIO_INPUT |
@@ -90,3 +92,6 @@ ALTERNATE(PIN_MASK(8, 0x80), 0, MODULE_I2C, 0) /* I2
ALTERNATE(PIN_MASK(D, 0x03), 0, MODULE_I2C, 0) /* I2C3 */
ALTERNATE(PIN_MASK(3, 0x48), 0, MODULE_I2C, 0) /* I2C5 */
ALTERNATE(PIN_MASK(B, 0x0C), 0, MODULE_I2C, 0) /* I2C7 */
+
+/* PWM */
+ALTERNATE(PIN_MASK(8, 0x01), 0, MODULE_PWM, 0) /* PWM3 */