summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 */