summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@chromium.org>2019-08-12 08:52:37 +0800
committerCommit Bot <commit-bot@chromium.org>2019-08-12 05:39:14 +0000
commite4440d52945fef7e5f3c98911f50363e65fc488e (patch)
tree73cffd4360d9bdccd72cee70770f29075301cd1f
parentfb0eb4d1b932ba469f7385e42cf43f5a11f09c85 (diff)
downloadchrome-ec-e4440d52945fef7e5f3c98911f50363e65fc488e.tar.gz
hammer: Refactor config options to support more variants
board.h is already quite difficult to read, and will become worse as we add more and more derivatives, let's refactor most of the variations into variants.h. BRANCH=none BUG=b:138968914 TEST=make buildall -j, see that there is no size change before and after the change. Change-Id: Ideb381d8d04c65c3e76eb3ab9353e1ce5cdee954 Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1746352 Reviewed-by: Wei-Han Chen <stimim@chromium.org> Reviewed-by: Yilun Lin <yllin@chromium.org>
-rw-r--r--board/hammer/board.c15
-rw-r--r--board/hammer/board.h72
-rw-r--r--board/hammer/ec.tasklist2
-rw-r--r--board/hammer/gpio.inc8
-rw-r--r--board/hammer/variants.h80
5 files changed, 108 insertions, 69 deletions
diff --git a/board/hammer/board.c b/board/hammer/board.c
index 6b7a4029cf..fe50321fa9 100644
--- a/board/hammer/board.c
+++ b/board/hammer/board.c
@@ -72,7 +72,7 @@ BUILD_ASSERT(ARRAY_SIZE(usb_strings) == USB_STR_COUNT);
*/
#ifdef SECTION_IS_RW
-#ifdef BOARD_WHISKERS
+#ifdef HAS_SPI_TOUCHPAD
/* SPI devices */
const struct spi_device_t spi_devices[] = {
[SPI_ST_TP_DEVICE_ID] = { CONFIG_SPI_TOUCHPAD_PORT, 2, GPIO_SPI1_NSS },
@@ -83,7 +83,7 @@ USB_SPI_CONFIG(usb_spi, USB_IFACE_I2C_SPI, USB_EP_I2C_SPI);
/* SPI interface is always enabled, no need to do anything. */
void usb_spi_board_enable(struct usb_spi_config const *config) {}
void usb_spi_board_disable(struct usb_spi_config const *config) {}
-#endif /* !BOARD_WHISKERS */
+#endif /* !HAS_SPI_TOUCHPAD */
/* I2C ports */
const struct i2c_port_t i2c_ports[] = {
@@ -193,8 +193,11 @@ static void board_init(void)
usart_init(&ec_ec_usart);
#endif /* BOARD_WAND */
-#ifdef BOARD_WHISKERS
+#ifdef CONFIG_LED_DRIVER_LM3630A
lm3630a_poweron();
+#endif
+
+#ifdef HAS_SPI_TOUCHPAD
spi_enable(CONFIG_SPI_TOUCHPAD_PORT, 0);
/* Disable SPI passthrough when the system is locked */
@@ -215,7 +218,7 @@ static void board_init(void)
/* Enable SPI for touchpad */
gpio_config_module(MODULE_SPI_MASTER, 1);
spi_enable(CONFIG_SPI_TOUCHPAD_PORT, 1);
-#endif /* BOARD_WHISKERS */
+#endif /* HAS_SPI_TOUCHPAD */
#endif /* SECTION_IS_RW */
}
/* This needs to happen before PWM is initialized. */
@@ -243,7 +246,7 @@ int board_has_keyboard_backlight(void)
/* Reset the touchpad, mainly used to recover it from malfunction. */
void board_touchpad_reset(void)
{
-#ifdef BOARD_WHISKERS
+#ifdef HAS_EN_PP3300_TP_ACTIVE_HIGH
gpio_set_level(GPIO_EN_PP3300_TP, 0);
msleep(100);
gpio_set_level(GPIO_EN_PP3300_TP, 1);
@@ -256,7 +259,7 @@ void board_touchpad_reset(void)
#endif
}
-#if defined(BOARD_WHISKERS) && defined(SECTION_IS_RW)
+#ifdef CONFIG_KEYBOARD_TABLET_MODE_SWITCH
static void board_tablet_mode_change(void)
{
/*
diff --git a/board/hammer/board.h b/board/hammer/board.h
index 812ee6e6c3..a64167adc4 100644
--- a/board/hammer/board.h
+++ b/board/hammer/board.h
@@ -8,6 +8,8 @@
#ifndef __CROS_EC_BOARD_H
#define __CROS_EC_BOARD_H
+#include "variants.h"
+
/* TODO: Remove CONFIG_SYSTEM_UNLOCKED prior to building MP FW. */
#define CONFIG_SYSTEM_UNLOCKED
/* TODO(b:63378217): Define FLASH_PSTATE_LOCKED prior to building MP FW. */
@@ -85,17 +87,6 @@
/* USB Configuration */
#define CONFIG_USB
-#ifdef BOARD_HAMMER
-#define CONFIG_USB_PID 0x5022
-#elif defined(BOARD_STAFF)
-#define CONFIG_USB_PID 0x502b
-#elif defined(BOARD_WAND)
-#define CONFIG_USB_PID 0x502d
-#elif defined(BOARD_WHISKERS)
-#define CONFIG_USB_PID 0x5030
-#else
-#error "Invalid board"
-#endif
#define CONFIG_STREAM_USB
#define CONFIG_USB_UPDATE
@@ -117,11 +108,6 @@
/* Replaced at runtime (board_read_serial) by chip unique-id-based number. */
#define DEFAULT_SERIALNO ""
-#if defined(BOARD_WHISKERS) && defined(SECTION_IS_RW)
-/* Enable to send heatmap to AP */
-#define CONFIG_USB_ISOCHRONOUS
-#endif /* !(BOARD_WHISKERS && SECTION_IS_RW) */
-
/* USB interface indexes (use define rather than enum to expand them) */
#ifdef SECTION_IS_RW
#define USB_IFACE_HID_KEYBOARD 0
@@ -129,12 +115,12 @@
#define USB_IFACE_HID_TOUCHPAD 2
/* Can be either I2C or SPI passthrough, depending on the board. */
#define USB_IFACE_I2C_SPI 3
-#if defined(BOARD_WHISKERS) && defined(CONFIG_USB_ISOCHRONOUS)
+#if defined(CONFIG_USB_ISOCHRONOUS)
#define USB_IFACE_ST_TOUCHPAD 4
#define USB_IFACE_COUNT 5
-#else /* !(BOARD_WHISKERS && CONFIG_USB_ISOCHRONOUS) */
+#else /* !CONFIG_USB_ISOCHRONOUS */
#define USB_IFACE_COUNT 4
-#endif /* BOARD_WHISKERS && CONFIG_USB_ISOCHRONOUS */
+#endif /* CONFIG_USB_ISOCHRONOUS */
#else /* !SECTION_IS_RW */
#define USB_IFACE_UPDATE 0
#define USB_IFACE_COUNT 1
@@ -148,13 +134,13 @@
#define USB_EP_HID_TOUCHPAD 3
/* Can be either I2C or SPI passthrough, depending on the board. */
#define USB_EP_I2C_SPI 4
-#if defined(BOARD_WHISKERS) && defined(CONFIG_USB_ISOCHRONOUS)
+#if defined(CONFIG_USB_ISOCHRONOUS)
#define USB_EP_ST_TOUCHPAD 5
#define USB_EP_ST_TOUCHPAD_INT 6
#define USB_EP_COUNT 7
-#else /* !(BOARD_WHISKERS && CONFIG_USB_ISOCHRONOUS) */
+#else /* !CONFIG_USB_ISOCHRONOUS */
#define USB_EP_COUNT 5
-#endif /* BOARD_WHISKERS && CONFIG_USB_ISOCHRONOUS */
+#endif /* CONFIG_USB_ISOCHRONOUS */
#else /* !SECTION_IS_RW */
#define USB_EP_COUNT 2
#endif /* SECTION_IS_RW */
@@ -203,39 +189,9 @@
/* Include touchpad FW hashes in image */
#define CONFIG_TOUCHPAD_HASH_FW
-/* Touchpad firmware size and dimension difference */
-#if defined(BOARD_HAMMER) || defined(BOARD_WAND)
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_X 3207
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_Y 1783
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_PRESSURE 511
-#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_X 1018 /* tenth of mm */
-#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_Y 566 /* tenth of mm */
-#define CONFIG_TOUCHPAD_VIRTUAL_SIZE (48*1024)
-#elif defined(BOARD_STAFF)
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_X 3206
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_Y 1832
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_PRESSURE 511
-#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_X 1017 /* tenth of mm */
-#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_Y 581 /* tenth of mm */
-#define CONFIG_TOUCHPAD_VIRTUAL_SIZE (56*1024)
-#elif defined(BOARD_WHISKERS)
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_X 2160
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_Y 1573
-#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_PRESSURE 255
-#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_X 1030 /* tenth of mm */
-#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_Y 750 /* tenth of mm */
-#define CONFIG_TOUCHPAD_VIRTUAL_SIZE (CONFIG_UPDATE_PDU_SIZE + 128*1024)
-#else
-#error "No touchpad information for board."
-#endif
-
#define CONFIG_KEYBOARD_DEBUG
#undef CONFIG_KEYBOARD_BOOT_KEYS
#undef CONFIG_KEYBOARD_RUNTIME_KEYS
-#if defined(BOARD_HAMMER) || defined(BOARD_WAND) || defined(BOARD_WHISKERS)
-#define CONFIG_KEYBOARD_BOARD_CONFIG
-#define CONFIG_KEYBOARD_ASSISTANT_KEY
-#endif
/* Keyboard output port list */
#define KB_OUT_PORT_LIST GPIO_A, GPIO_B, GPIO_C, GPIO_F
@@ -248,12 +204,13 @@
/* Enable PWM */
#define CONFIG_PWM
-#ifdef BOARD_WHISKERS
-#define CONFIG_LED_DRIVER_LM3630A
+#ifdef CONFIG_HALL_SENSOR
#define CONFIG_TABLET_MODE
-#define CONFIG_HALL_SENSOR
#define HALL_SENSOR_GPIO_L GPIO_TABLET_MODE_L
#define CONFIG_KEYBOARD_TABLET_MODE_SWITCH
+#endif
+
+#ifdef HAS_SPI_TOUCHPAD
/* Enable control of SPI over USB */
#define CONFIG_USB_SPI
#define CONFIG_SPI_MASTER
@@ -265,8 +222,7 @@
#define CONFIG_CMD_SPI_XFER
#define CONFIG_TOUCHPAD
#define CONFIG_TOUCHPAD_ST
-
-#else /* !BOARD_WHISKERS */
+#elif defined(HAS_I2C_TOUCHPAD) /* HAS_SPI_TOUCHPAD */
/* Enable control of I2C over USB */
#define CONFIG_USB_I2C
#define USB_IFACE_I2C USB_IFACE_I2C_SPI
@@ -276,7 +232,7 @@
#define CONFIG_TOUCHPAD_ELAN
#define CONFIG_TOUCHPAD_I2C_PORT I2C_PORT_MASTER
#define CONFIG_TOUCHPAD_I2C_ADDR_FLAGS 0x15
-#endif /* BOARD_WHISKERS */
+#endif /* HAS_I2C_TOUCHPAD */
#define CONFIG_CURVE25519
diff --git a/board/hammer/ec.tasklist b/board/hammer/ec.tasklist
index 8fd825b94f..d3a2e17f07 100644
--- a/board/hammer/ec.tasklist
+++ b/board/hammer/ec.tasklist
@@ -15,7 +15,7 @@
TASK_ALWAYS (CONSOLE, console_task, NULL, 1024) \
TASK_ALWAYS_RW(ECCOMM, ec_ec_comm_slave_task, NULL, TASK_STACK_SIZE) \
TASK_NOTEST_RW(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
-#elif defined(BOARD_WHISKERS) && defined(CONFIG_USB_ISOCHRONOUS)
+#elif defined(CONFIG_USB_ISOCHRONOUS)
#define CONFIG_TASK_LIST \
TASK_ALWAYS_RO(RWSIG, rwsig_task, NULL, 1280) \
TASK_ALWAYS (HOOKS, hook_task, NULL, 2048) \
diff --git a/board/hammer/gpio.inc b/board/hammer/gpio.inc
index 34c0838612..806cb19f7f 100644
--- a/board/hammer/gpio.inc
+++ b/board/hammer/gpio.inc
@@ -10,9 +10,9 @@
#ifdef SECTION_IS_RW
GPIO_INT(TOUCHPAD_INT, PIN(B, 8), GPIO_INT_FALLING, touchpad_interrupt)
-#ifdef BOARD_WHISKERS
+#ifdef CONFIG_HALL_SENSOR
GPIO_INT(TABLET_MODE_L, PIN(B, 11), GPIO_PULL_UP | GPIO_INT_BOTH, hall_sensor_isr)
-#endif /* BOARD_WHISKERS */
+#endif /* CONFIG_HALL_SENSOR */
#endif /* SECTION_IS_RW */
/* Keyboard inputs */
@@ -57,7 +57,7 @@ GPIO(KB_OUT12, PIN(C, 13), GPIO_KB_OUTPUT)
GPIO(MASTER_I2C_SCL, PIN(B, 6), GPIO_INPUT)
GPIO(MASTER_I2C_SDA, PIN(B, 7), GPIO_INPUT)
/* TODO(crosbug.com/p/59083): Disable trackpad when appropriate */
-#ifdef BOARD_WHISKERS
+#ifdef HAS_EN_PP3300_TP_ACTIVE_HIGH
GPIO(EN_PP3300_TP, PIN(A, 14), GPIO_OUT_HIGH)
#else
GPIO(EN_PP3300_TP_ODL, PIN(A, 14), GPIO_OUT_LOW)
@@ -93,7 +93,7 @@ ALTERNATE(PIN_MASK(A, 0x0004), 1, MODULE_USART, GPIO_ODR_HIGH) /* USART2: PA2 -
ALTERNATE(PIN_MASK(B, 0x0c00), 1, MODULE_I2C, 0) /* I2C CHARGER: PB10/11 GPIO_ODR_HIGH */
#endif
-#ifdef BOARD_WHISKERS
+#ifdef HAS_SPI_TOUCHPAD
ALTERNATE(PIN_MASK(B, 0x0038), 0, MODULE_SPI_MASTER, 0) /* SPI MASTER:PB3/4/5 */
#endif
diff --git a/board/hammer/variants.h b/board/hammer/variants.h
new file mode 100644
index 0000000000..e520a0b450
--- /dev/null
+++ b/board/hammer/variants.h
@@ -0,0 +1,80 @@
+/* Copyright 2019 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.
+ */
+
+/*
+ * Hammer variants configuration, there should be no/little BOARD_ checks
+ * in the rest of the files. If this grows out of control, we can create
+ * variant_*.h files.
+ */
+
+#ifndef __CROS_EC_VARIANTS_H
+#define __CROS_EC_VARIANTS_H
+
+/* USB ID */
+#ifdef BOARD_HAMMER
+#define CONFIG_USB_PID 0x5022
+#elif defined(BOARD_STAFF)
+#define CONFIG_USB_PID 0x502b
+#elif defined(BOARD_WAND)
+#define CONFIG_USB_PID 0x502d
+#elif defined(BOARD_WHISKERS)
+#define CONFIG_USB_PID 0x5030
+#else
+#error "Invalid board"
+#endif
+
+#ifdef SECTION_IS_RW
+
+/* Touchpad interface, firmware size and physical dimension. */
+#if defined(BOARD_HAMMER) || defined(BOARD_WAND)
+#define HAS_I2C_TOUCHPAD
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_X 3207
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_Y 1783
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_PRESSURE 511
+#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_X 1018 /* tenth of mm */
+#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_Y 566 /* tenth of mm */
+#define CONFIG_TOUCHPAD_VIRTUAL_SIZE (48*1024)
+#elif defined(BOARD_STAFF)
+#define HAS_I2C_TOUCHPAD
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_X 3206
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_Y 1832
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_PRESSURE 511
+#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_X 1017 /* tenth of mm */
+#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_Y 581 /* tenth of mm */
+#define CONFIG_TOUCHPAD_VIRTUAL_SIZE (56*1024)
+#elif defined(BOARD_WHISKERS)
+#define HAS_SPI_TOUCHPAD
+#define HAS_EN_PP3300_TP_ACTIVE_HIGH
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_X 2160
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_Y 1573
+#define CONFIG_USB_HID_TOUCHPAD_LOGICAL_MAX_PRESSURE 255
+#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_X 1030 /* tenth of mm */
+#define CONFIG_USB_HID_TOUCHPAD_PHYSICAL_MAX_Y 750 /* tenth of mm */
+#define CONFIG_TOUCHPAD_VIRTUAL_SIZE (CONFIG_UPDATE_PDU_SIZE + 128*1024)
+/* Enable to send heatmap to AP */
+#define CONFIG_USB_ISOCHRONOUS
+#else
+#error "No touchpad information for board."
+#endif
+
+/* Assistant key */
+#if defined(BOARD_HAMMER) || defined(BOARD_WAND) || defined(BOARD_WHISKERS)
+#define CONFIG_KEYBOARD_BOARD_CONFIG
+#define CONFIG_KEYBOARD_ASSISTANT_KEY
+#endif
+
+/* Backlight driver */
+#ifdef BOARD_WHISKERS
+#define CONFIG_LED_DRIVER_LM3630A
+#endif
+
+/* Hall sensor for tablet mode detection */
+#ifdef BOARD_WHISKERS
+#define CONFIG_HALL_SENSOR
+#endif
+
+#endif /* SECTION_IS_RW */
+
+#endif /* __CROS_EC_VARIANTS_H */