summaryrefslogtreecommitdiff
path: root/board/hammer/board.c
diff options
context:
space:
mode:
authorJack Rosenthal <jrosenth@chromium.org>2021-11-04 12:11:58 -0600
committerCommit Bot <commit-bot@chromium.org>2021-11-05 04:22:34 +0000
commit252457d4b21f46889eebad61d4c0a65331919cec (patch)
tree01856c4d31d710b20e85a74c8d7b5836e35c3b98 /board/hammer/board.c
parent08f5a1e6fc2c9467230444ac9b582dcf4d9f0068 (diff)
downloadchrome-ec-stabilize-quickfix-14695.124.B-ish.tar.gz
In the interest of making long-term branch maintenance incur as little technical debt on us as possible, we should not maintain any files on the branch we are not actually using. This has the added effect of making it extremely clear when merging CLs from the main branch when changes have the possibility to affect us. The follow-on CL adds a convenience script to actually pull updates from the main branch and generate a CL for the update. BUG=b:204206272 BRANCH=ish TEST=make BOARD=arcada_ish && make BOARD=drallion_ish Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: I17e4694c38219b5a0823e0a3e55a28d1348f4b18 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3262038 Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Tom Hughes <tomhughes@chromium.org>
Diffstat (limited to 'board/hammer/board.c')
-rw-r--r--board/hammer/board.c374
1 files changed, 0 insertions, 374 deletions
diff --git a/board/hammer/board.c b/board/hammer/board.c
deleted file mode 100644
index b68498acfb..0000000000
--- a/board/hammer/board.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/* Copyright 2016 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 board configuration */
-
-#include "charger.h"
-#include "clock.h"
-#include "common.h"
-#include "driver/charger/isl923x.h"
-#include "driver/led/lm3630a.h"
-#include "ec_version.h"
-#include "ec_ec_comm_server.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "hwtimer.h"
-#include "i2c.h"
-#include "keyboard_raw.h"
-#include "keyboard_scan.h"
-#include "printf.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "queue.h"
-#include "queue_policies.h"
-#include "registers.h"
-#include "rollback.h"
-#include "spi.h"
-#include "system.h"
-#include "tablet_mode.h"
-#include "task.h"
-#include "touchpad.h"
-#include "timer.h"
-#include "update_fw.h"
-#include "usart-stm32f0.h"
-#include "usart_tx_dma.h"
-#include "usart_rx_dma.h"
-#include "usb_api.h"
-#include "usb_descriptor.h"
-#include "usb_i2c.h"
-#include "usb_spi.h"
-#include "util.h"
-
-#include "gpio_list.h"
-
-#ifdef SECTION_IS_RW
-#define CROS_EC_SECTION "RW"
-#else
-#define CROS_EC_SECTION "RO"
-#endif
-
-#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args)
-
-/******************************************************************************
- * Define the strings used in our USB descriptors.
- */
-const void *const usb_strings[] = {
- [USB_STR_DESC] = usb_string_desc,
- [USB_STR_VENDOR] = USB_STRING_DESC("Google Inc."),
- [USB_STR_PRODUCT] = USB_STRING_DESC("Hammer"),
- [USB_STR_SERIALNO] = 0,
- [USB_STR_VERSION] =
- USB_STRING_DESC(CROS_EC_SECTION ":" CROS_EC_VERSION32),
- [USB_STR_I2C_NAME] = USB_STRING_DESC("I2C"),
- [USB_STR_UPDATE_NAME] = USB_STRING_DESC("Firmware update"),
-#ifdef CONFIG_USB_ISOCHRONOUS
- [USB_STR_HEATMAP_NAME] = USB_STRING_DESC("Heatmap"),
-#endif
-};
-
-BUILD_ASSERT(ARRAY_SIZE(usb_strings) == USB_STR_COUNT);
-
-/******************************************************************************
- * Support I2C bridging over USB.
- */
-
-#ifdef SECTION_IS_RW
-#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 },
-};
-const unsigned int spi_devices_used = ARRAY_SIZE(spi_devices);
-
-USB_SPI_CONFIG(usb_spi, USB_IFACE_I2C_SPI, USB_EP_I2C_SPI, 0);
-/* 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 /* !HAS_SPI_TOUCHPAD */
-
-#ifdef CONFIG_I2C
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"master", I2C_PORT_MASTER, 400,
- GPIO_MASTER_I2C_SCL, GPIO_MASTER_I2C_SDA},
-#ifdef BOARD_WAND
- {"charger", I2C_PORT_CHARGER, 100,
- GPIO_CHARGER_I2C_SCL, GPIO_CHARGER_I2C_SDA},
-#endif
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-#endif
-
-#ifdef CONFIG_CHARGER_ISL9238
-const struct charger_config_t chg_chips[] = {
- {
- .i2c_port = I2C_PORT_CHARGER,
- .i2c_addr_flags = ISL923X_ADDR_FLAGS,
- .drv = &isl923x_drv,
- },
-};
-
-#endif
-
-#ifdef HAS_BACKLIGHT
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {STM32_TIM(TIM_KBLIGHT), STM32_TIM_CH(1), 0, KBLIGHT_PWM_FREQ},
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-#endif /* HAS_BACKLIGHT */
-
-int usb_i2c_board_is_enabled(void)
-{
- /* Disable I2C passthrough when the system is locked */
- return !system_is_locked();
-}
-
-__override struct keyboard_scan_config keyscan_config = {
- .output_settle_us = 50,
- .debounce_down_us = 9 * MSEC,
- .debounce_up_us = 30 * MSEC,
- .scan_period_us = 3 * MSEC,
- .min_post_scan_delay_us = 1000,
- .poll_timeout_us = 100 * MSEC,
- .actual_key_mask = {
- 0x3c, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff,
- 0xa4, 0xff, 0xfe, 0x55, 0xfa, 0xca /* full set */
- },
-};
-#endif
-
-#if defined(BOARD_WAND) && defined(SECTION_IS_RW)
-struct consumer const ec_ec_usart_consumer;
-static struct usart_config const ec_ec_usart;
-
-struct queue const ec_ec_comm_server_input = QUEUE_DIRECT(64, uint8_t,
- ec_ec_usart.producer, ec_ec_usart_consumer);
-struct queue const ec_ec_comm_server_output = QUEUE_DIRECT(64, uint8_t,
- null_producer, ec_ec_usart.consumer);
-
-struct consumer const ec_ec_usart_consumer = {
- .queue = &ec_ec_comm_server_input,
- .ops = &((struct consumer_ops const) {
- .written = ec_ec_comm_server_written,
- }),
-};
-
-static struct usart_config const ec_ec_usart =
- USART_CONFIG(EC_EC_UART,
- usart_rx_interrupt,
- usart_tx_interrupt,
- 115200,
- USART_CONFIG_FLAG_HDSEL,
- ec_ec_comm_server_input,
- ec_ec_comm_server_output);
-#endif /* BOARD_WAND && SECTION_IS_RW */
-
-/******************************************************************************
- * Initialize board.
- */
-static int has_keyboard_backlight;
-
-#ifdef SECTION_IS_RW
-static void board_init(void)
-{
-#ifdef HAS_BACKLIGHT
- /* Detect keyboard backlight: pull-down means it is present. */
- has_keyboard_backlight = !gpio_get_level(GPIO_KEYBOARD_BACKLIGHT);
-
- CPRINTS("Backlight%s present", has_keyboard_backlight ? "" : " not");
-#endif /* HAS_BACKLIGHT */
-
-#ifdef BOARD_WAND
- /* USB to serial queues */
- queue_init(&ec_ec_comm_server_input);
- queue_init(&ec_ec_comm_server_output);
-
- /* UART init */
- usart_init(&ec_ec_usart);
-#endif /* BOARD_WAND */
-
-#ifdef CONFIG_LED_DRIVER_LM3630A
- lm3630a_poweron();
-#endif
-
-#ifdef HAS_SPI_TOUCHPAD
- spi_enable(&spi_devices[SPI_ST_TP_DEVICE_ID], 0);
-
- /* Disable SPI passthrough when the system is locked */
- usb_spi_enable(&usb_spi, system_is_locked());
-
- /* Set all four SPI pins to high speed */
- /* pins B3/5, A15 */
- STM32_GPIO_OSPEEDR(GPIO_B) |= 0x00000cc0;
- STM32_GPIO_OSPEEDR(GPIO_A) |= 0xc0000000;
-
- /* Reset SPI1 */
- STM32_RCC_APB2RSTR |= STM32_RCC_PB2_SPI1;
- STM32_RCC_APB2RSTR &= ~STM32_RCC_PB2_SPI1;
- /* Enable clocks to SPI1 module */
- STM32_RCC_APB2ENR |= STM32_RCC_PB2_SPI1;
-
- clock_wait_bus_cycles(BUS_APB, 1);
- /* Enable SPI for touchpad */
- gpio_config_module(MODULE_SPI_CONTROLLER, 1);
- spi_enable(&spi_devices[SPI_ST_TP_DEVICE_ID], 1);
-#endif /* HAS_SPI_TOUCHPAD */
-}
-/* This needs to happen before PWM is initialized. */
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_INIT_PWM - 1);
-#endif /* SECTION_IS_RW */
-
-void board_config_pre_init(void)
-{
- /* enable SYSCFG clock */
- STM32_RCC_APB2ENR |= BIT(0);
-
- /* Remap USART DMA to match the USART driver */
- /*
- * the DMA mapping is :
- * Chan 4 : USART1_TX
- * Chan 5 : USART1_RX
- */
- STM32_SYSCFG_CFGR1 |= BIT(9) | BIT(10); /* Remap USART1 RX/TX DMA */
-}
-
-int board_has_keyboard_backlight(void)
-{
- return has_keyboard_backlight;
-}
-
-#ifndef HAS_NO_TOUCHPAD
-/* Reset the touchpad, mainly used to recover it from malfunction. */
-void board_touchpad_reset(void)
-{
-#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);
- msleep(100);
-#else
- gpio_set_level(GPIO_EN_PP3300_TP_ODL, 1);
- msleep(10);
- gpio_set_level(GPIO_EN_PP3300_TP_ODL, 0);
- msleep(10);
-#endif
-}
-#endif /* !HAS_NO_TOUCHPAD */
-
-#ifdef CONFIG_KEYBOARD_TABLET_MODE_SWITCH
-static void board_tablet_mode_change(void)
-{
- /*
- * Turn off key scanning in tablet mode.
- */
- if (tablet_get_mode())
- keyboard_scan_enable(0, KB_SCAN_DISABLE_LID_ANGLE);
- else
- keyboard_scan_enable(1, KB_SCAN_DISABLE_LID_ANGLE);
-}
-DECLARE_HOOK(HOOK_TABLET_MODE_CHANGE, board_tablet_mode_change,
- HOOK_PRIO_DEFAULT);
-/* Run after tablet_mode_init. */
-DECLARE_HOOK(HOOK_INIT, board_tablet_mode_change, HOOK_PRIO_DEFAULT+1);
-#endif
-
-/*
- * Get entropy based on Clock Recovery System, which is enabled on hammer to
- * synchronize USB SOF with internal oscillator.
- */
-int board_get_entropy(void *buffer, int len)
-{
- int i = 0;
- uint8_t *data = buffer;
- uint32_t start;
- /* We expect one SOF per ms, so wait at most 2ms. */
- const uint32_t timeout = 2*MSEC;
-
- for (i = 0; i < len; i++) {
- STM32_CRS_ICR |= STM32_CRS_ICR_SYNCOKC;
- start = __hw_clock_source_read();
- while (!(STM32_CRS_ISR & STM32_CRS_ISR_SYNCOKF)) {
- if ((__hw_clock_source_read() - start) > timeout)
- return 0;
- usleep(500);
- }
- /* Pick 8 bits, including FEDIR and 7 LSB of FECAP. */
- data[i] = STM32_CRS_ISR >> 15;
- }
-
- return 1;
-}
-
-/*
- * Generate a USB serial number from unique chip ID.
- */
-__override const char *board_read_serial(void)
-{
- static char str[CONFIG_SERIALNO_LEN];
-
- if (str[0] == '\0') {
- uint8_t *id;
- int pos = 0;
- int idlen = system_get_chip_unique_id(&id);
- int i;
-
- for (i = 0; i < idlen && pos < sizeof(str); i++, pos += 2) {
- snprintf(&str[pos], sizeof(str)-pos,
- "%02x", id[i]);
- }
- }
-
- return str;
-}
-
-__override int board_write_serial(const char *serialno)
-{
- return 0;
-}
-
-static const struct ec_response_keybd_config zed_kb = {
- .num_top_row_keys = 10,
- .action_keys = {
- TK_BACK,
- TK_REFRESH,
- TK_FULLSCREEN,
- TK_OVERVIEW,
- TK_SNAPSHOT,
- TK_BRIGHTNESS_DOWN,
- TK_BRIGHTNESS_UP,
- TK_VOL_MUTE,
- TK_VOL_DOWN,
- TK_VOL_UP,
- },
- .capabilities = KEYBD_CAP_SCRNLOCK_KEY,
-};
-
-static const struct ec_response_keybd_config bland_kb = {
- .num_top_row_keys = 10,
- .action_keys = {
- TK_BACK,
- TK_REFRESH,
- TK_FULLSCREEN,
- TK_OVERVIEW,
- TK_BRIGHTNESS_DOWN,
- TK_BRIGHTNESS_UP,
- TK_MICMUTE,
- TK_VOL_MUTE,
- TK_VOL_DOWN,
- TK_VOL_UP,
- },
- .capabilities = KEYBD_CAP_SCRNLOCK_KEY,
-};
-
-__override
-const struct ec_response_keybd_config *board_vivaldi_keybd_config(void)
-{
- if (IS_ENABLED(BOARD_ZED) || IS_ENABLED(BOARD_STAR))
- return &zed_kb;
- if (IS_ENABLED(BOARD_BLAND) || IS_ENABLED(BOARD_EEL))
- return &bland_kb;
-
- return NULL;
-}