summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2015-05-29 13:51:49 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-06-05 19:35:06 +0000
commitbdc680d8ed7ea24cdfb1b5498f73a1008c71ad37 (patch)
tree476e29e4edc29049843b19c3d2344ca6a2d435c0
parente856db125850bfc38e341b7df055efea5ae59026 (diff)
downloadchrome-ec-bdc680d8ed7ea24cdfb1b5498f73a1008c71ad37.tar.gz
Remove obsolete EC targets
This is needed to allow cleanup and refactoring of the EC codebase in ToT. All of these boards use firmware from branches and uploaded to BCS, so they don't actually care that ToT can't build their firmware. BUG=chromium:493866 TEST=build on the following using cbuildbot: daisy-paladin falco-paladin link-paladin nyan-paladin peppy-paladin samus-paladin squawks-paladin daisy_spring-paladin CQ-DEPEND=CL:274121,CL:274127 BRANCH=none Change-Id: I19598843755ded7b2385cc712ef463e5de4411b8 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/274121 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
l---------board/falco/Makefile1
-rw-r--r--board/falco/battery.c46
-rw-r--r--board/falco/board.c154
-rw-r--r--board/falco/board.h127
-rw-r--r--board/falco/build.mk12
-rw-r--r--board/falco/ec.tasklist27
-rw-r--r--board/falco/gpio.inc102
-rw-r--r--board/falco/led.c103
-rw-r--r--board/falco/panel.c131
l---------board/firefly/Makefile1
-rw-r--r--board/firefly/board.c124
-rw-r--r--board/firefly/board.h74
-rw-r--r--board/firefly/build.mk14
-rw-r--r--board/firefly/ec.tasklist22
-rw-r--r--board/firefly/gpio.inc66
-rw-r--r--board/firefly/usb_pd_config.h137
-rw-r--r--board/firefly/usb_pd_policy.c151
l---------board/fruitpie/Makefile1
-rw-r--r--board/fruitpie/board.c235
-rw-r--r--board/fruitpie/board.h139
-rw-r--r--board/fruitpie/build.mk14
-rw-r--r--board/fruitpie/ec.tasklist22
-rw-r--r--board/fruitpie/gpio.inc73
-rw-r--r--board/fruitpie/usb_pd_config.h174
-rw-r--r--board/fruitpie/usb_pd_policy.c238
l---------board/jerry/Makefile1
-rw-r--r--board/jerry/battery.c54
-rw-r--r--board/jerry/board.c75
-rw-r--r--board/jerry/board.h91
-rw-r--r--board/jerry/build.mk13
-rw-r--r--board/jerry/ec.tasklist23
-rw-r--r--board/jerry/gpio.inc59
l---------board/keyborg/Makefile1
-rw-r--r--board/keyborg/board.c199
-rw-r--r--board/keyborg/board.h52
-rw-r--r--board/keyborg/build.mk15
-rw-r--r--board/keyborg/debug.c49
-rw-r--r--board/keyborg/debug.h16
-rw-r--r--board/keyborg/ec.irqlist15
-rw-r--r--board/keyborg/ec.tasklist19
-rw-r--r--board/keyborg/encode.h20
-rw-r--r--board/keyborg/encode_raw.c58
-rw-r--r--board/keyborg/encode_segment.c144
-rw-r--r--board/keyborg/hardware.c192
-rw-r--r--board/keyborg/master_slave.c192
-rw-r--r--board/keyborg/master_slave.h49
-rw-r--r--board/keyborg/runtime.c143
-rw-r--r--board/keyborg/spi_comm.c491
-rw-r--r--board/keyborg/spi_comm.h96
-rw-r--r--board/keyborg/touch_scan.c414
-rw-r--r--board/keyborg/touch_scan.h77
l---------board/link/Makefile1
-rw-r--r--board/link/board.c158
-rw-r--r--board/link/board.h139
-rw-r--r--board/link/build.mk12
-rw-r--r--board/link/ec.tasklist28
-rw-r--r--board/link/gpio.inc96
-rw-r--r--board/link/userspace/README3
-rw-r--r--board/link/userspace/etc/init/ec.conf13
-rw-r--r--board/link/userspace/usr/share/ec/lightbar_params.txt31
l---------board/mccroskey/Makefile1
-rw-r--r--board/mccroskey/board.c87
-rw-r--r--board/mccroskey/board.h52
-rw-r--r--board/mccroskey/build.mk13
-rw-r--r--board/mccroskey/ec.tasklist23
-rw-r--r--board/mccroskey/gpio.inc73
l---------board/mighty/Makefile1
-rw-r--r--board/mighty/battery.c54
-rw-r--r--board/mighty/board.c75
-rw-r--r--board/mighty/board.h88
-rw-r--r--board/mighty/build.mk13
-rw-r--r--board/mighty/ec.tasklist23
-rw-r--r--board/mighty/gpio.inc59
-rw-r--r--board/mighty/led.c152
l---------board/nyan/Makefile1
-rw-r--r--board/nyan/battery.c275
-rw-r--r--board/nyan/board.c49
-rw-r--r--board/nyan/board.h70
-rw-r--r--board/nyan/build.mk13
-rw-r--r--board/nyan/ec.tasklist24
-rw-r--r--board/nyan/gpio.inc62
l---------board/peppy/Makefile1
-rw-r--r--board/peppy/battery.c42
-rw-r--r--board/peppy/board.c134
-rw-r--r--board/peppy/board.h116
-rw-r--r--board/peppy/build.mk12
-rw-r--r--board/peppy/ec.tasklist27
-rw-r--r--board/peppy/gpio.inc101
-rw-r--r--board/peppy/led.c186
l---------board/snow/Makefile1
-rw-r--r--board/snow/board.c202
-rw-r--r--board/snow/board.h68
-rw-r--r--board/snow/build.mk13
-rw-r--r--board/snow/ec.tasklist26
-rw-r--r--board/snow/gpio.inc70
l---------board/speedy/Makefile1
-rw-r--r--board/speedy/battery.c54
-rw-r--r--board/speedy/board.c75
-rw-r--r--board/speedy/board.h88
-rw-r--r--board/speedy/build.mk13
-rw-r--r--board/speedy/ec.tasklist23
-rw-r--r--board/speedy/gpio.inc59
-rw-r--r--board/speedy/led.c152
l---------board/spring/Makefile1
-rw-r--r--board/spring/battery.c40
-rw-r--r--board/spring/board.c188
-rw-r--r--board/spring/board.h81
-rw-r--r--board/spring/build.mk12
-rw-r--r--board/spring/ec.tasklist25
-rw-r--r--board/spring/gpio.inc65
-rw-r--r--board/spring/led.c202
l---------board/squawks/Makefile1
-rw-r--r--board/squawks/battery.c48
-rw-r--r--board/squawks/board.c126
-rw-r--r--board/squawks/board.h134
-rw-r--r--board/squawks/build.mk12
-rw-r--r--board/squawks/ec.tasklist28
-rw-r--r--board/squawks/gpio.inc78
-rw-r--r--board/squawks/led.c170
-rw-r--r--test/build.mk6
-rw-r--r--test/led_spring.c270
-rw-r--r--test/led_spring.tasklist17
l---------test/led_spring_impl.c1
-rw-r--r--test/thermal_falco.c874
-rw-r--r--test/thermal_falco.tasklist19
-rw-r--r--test/thermal_falco_externs.h15
126 files changed, 1 insertions, 10311 deletions
diff --git a/board/falco/Makefile b/board/falco/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/falco/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/falco/battery.c b/board/falco/battery.c
deleted file mode 100644
index 57ed576a44..0000000000
--- a/board/falco/battery.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* 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.
- *
- * Battery pack vendor provided charging profile
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-
-#define SB_SHIP_MODE_DATA 0x0010
-
-static const struct battery_info info = {
-
- .voltage_max = 8400,
- .voltage_normal = 7400,
- .voltage_min = 6000,
-
- /* Pre-charge values. */
- .precharge_current = 256, /* mA */
-
- .start_charging_min_c = 0,
- .start_charging_max_c = 45,
- .charging_min_c = 0,
- .charging_max_c = 45,
- .discharging_min_c = -10,
- .discharging_max_c = 60,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-int board_cut_off_battery(void)
-{
- int rv;
-
- /* Ship mode command must be sent twice. */
- rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHIP_MODE_DATA);
-
- if (rv != EC_SUCCESS)
- return rv;
-
- return sb_write(SB_MANUFACTURER_ACCESS, SB_SHIP_MODE_DATA);
-}
diff --git a/board/falco/board.c b/board/falco/board.c
deleted file mode 100644
index b1bd747ff2..0000000000
--- a/board/falco/board.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* 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.
- */
-/* EC for Falco board configuration */
-
-#include "adc.h"
-#include "adc_chip.h"
-#include "backlight.h"
-#include "board.h"
-#include "charger.h"
-#include "common.h"
-#include "driver/temp_sensor/g781.h"
-#include "extpower.h"
-#include "fan.h"
-#include "gpio.h"
-#include "host_command.h"
-#include "i2c.h"
-#include "jtag.h"
-#include "keyboard_scan.h"
-#include "lid_switch.h"
-#include "peci.h"
-#include "power.h"
-#include "power_button.h"
-#include "registers.h"
-#include "switch.h"
-#include "temp_sensor.h"
-#include "temp_sensor_chip.h"
-#include "thermal.h"
-#include "timer.h"
-#include "uart.h"
-#include "util.h"
-
-#include "gpio_list.h"
-
-/* power signal list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {
- {GPIO_PP5000_PGOOD, 1, "PGOOD_PP5000"},
- {GPIO_PP1350_PGOOD, 1, "PGOOD_PP1350"},
- {GPIO_PP1050_PGOOD, 1, "PGOOD_PP1050"},
- {GPIO_VCORE_PGOOD, 1, "PGOOD_VCORE"},
- {GPIO_PCH_SLP_S0_L, 1, "SLP_S0#_DEASSERTED"},
- {GPIO_PCH_SLP_S3_L, 1, "SLP_S3#_DEASSERTED"},
- {GPIO_PCH_SLP_S5_L, 1, "SLP_S5#_DEASSERTED"},
- {GPIO_PCH_SLP_SUS_L, 1, "SLP_SUS#_DEASSERTED"},
-};
-BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
-
-/* ADC channels. Must be in the exactly same order as in enum adc_channel. */
-const struct adc_t adc_channels[] = {
- /* EC internal temperature is calculated by
- * 273 + (295 - 450 * ADC_VALUE / ADC_READ_MAX) / 2
- * = -225 * ADC_VALUE / ADC_READ_MAX + 420.5
- */
- {"ECTemp", LM4_ADC_SEQ0, -225, ADC_READ_MAX, 420,
- LM4_AIN_NONE, 0x0e /* TS0 | IE0 | END0 */, 0, 0},
-
- /* IOUT == ICMNT is on PE3/AIN0 */
- /* We have 0.01-ohm resistors, and IOUT is 20X the differential
- * voltage, so 1000mA ==> 200mV.
- * ADC returns 0x000-0xFFF, which maps to 0.0-3.3V (as configured).
- * mA = 1000 * ADC_VALUE / ADC_READ_MAX * 3300 / 200
- */
- {"ChargerCurrent", LM4_ADC_SEQ1, 33000, ADC_READ_MAX * 2, 0,
- LM4_AIN(0), 0x06 /* IE0 | END0 */, LM4_GPIO_E, (1<<3)},
-
- /* AC Adapter ID voltage (mv) */
- {"AdapterIDVoltage", LM4_ADC_SEQ2, 3300, ADC_READ_MAX, 0,
- LM4_AIN(11), 0x06 /* IE0 | END0 */, LM4_GPIO_B, (1<<5)},
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* Physical fans. These are logically separate from pwm_channels. */
-const struct fan_t fans[] = {
- {.flags = FAN_USE_RPM_MODE,
- .rpm_min = 1000,
- .rpm_start = 1000,
- .rpm_max = 5050,
- .ch = 2,
- .pgood_gpio = GPIO_PP5000_PGOOD,
- .enable_gpio = -1,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(fans) == CONFIG_FANS);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"batt_chg", 0, 100},
- {"lvds", 1, 100},
- {"thermal", 5, 100},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-/* Temperature sensors data; must be in same order as enum temp_sensor_id. */
-const struct temp_sensor_t temp_sensors[] = {
- {"PECI", TEMP_SENSOR_TYPE_CPU, peci_temp_sensor_get_val, 0, 2},
- {"ECInternal", TEMP_SENSOR_TYPE_BOARD, chip_temp_sensor_get_val, 0, 4},
- {"G781Internal", TEMP_SENSOR_TYPE_BOARD, g781_get_val,
- G781_IDX_INTERNAL, 4},
- {"G781External", TEMP_SENSOR_TYPE_BOARD, g781_get_val,
- G781_IDX_EXTERNAL, 4},
-};
-BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
-
-/* Thermal limits for each temp sensor. All temps are in degrees K. Must be in
- * same order as enum temp_sensor_id. To always ignore any temp, use 0.
- */
-struct ec_thermal_config thermal_params[] = {
- /* Only the AP affects the thermal limits and fan speed. */
- { {C_TO_K(95), C_TO_K(97), C_TO_K(99)}, C_TO_K(55), C_TO_K(85)},
- { {0, 0, 0}, 0, 0},
- { {0, 0, 0}, 0, 0},
- { {0, 0, 0}, 0, 0},
-};
-BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
-
-struct keyboard_scan_config keyscan_config = {
- .output_settle_us = 40,
- .debounce_down_us = 6 * MSEC,
- .debounce_up_us = 30 * MSEC,
- .scan_period_us = 1500,
- .min_post_scan_delay_us = 1000,
- .poll_timeout_us = SECOND,
- .actual_key_mask = {
- 0x14, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff,
- 0xa4, 0xff, 0xf6, 0x55, 0xfa, 0xc8 /* full set */
- },
-};
-
-/**
- * Discharge battery when on AC power for factory test.
- */
-int board_discharge_on_ac(int enable)
-{
- return charger_discharge_on_ac(enable);
-}
-
-/*
- * Take a nice smooth ramp and make it all chunky.
- * And never turn it off. Bah. That'll do wonders for battery life.
- */
-#ifdef CONFIG_FAN_RPM_CUSTOM
-int fan_percent_to_rpm(int fan, int pct)
-{
- const int FAN_MAX = fans[fan].rpm_max;
- const int FAN_MIN = fans[fan].rpm_min;
- const int NUM_STEPS = 7;
- const int m = 100 * 100 / NUM_STEPS;
- const int m0 = m / 200;
-
- int chunky = 100 * (pct + m0) / m;
- return FAN_MIN + (FAN_MAX - FAN_MIN) * m * chunky / 10000;
-}
-#endif /* CONFIG_FAN_RPM_CUSTOM */
diff --git a/board/falco/board.h b/board/falco/board.h
deleted file mode 100644
index b11f6a76f5..0000000000
--- a/board/falco/board.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* 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.
- */
-
-/* Configuration for Falco mainboard */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* Optional features */
-#define CONFIG_BACKLIGHT_REQ_GPIO GPIO_PCH_BKLTEN
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BOARD_VERSION
-#define CONFIG_CHARGER
-#define CONFIG_CHARGER_V1
-#define CONFIG_CHARGER_BQ24738
-#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHIPSET_CAN_THROTTLE
-#define CONFIG_CHIPSET_HASWELL
-#define CONFIG_POWER_COMMON
-#define CONFIG_POWER_SHUTDOWN_PAUSE_IN_S5
-#define CONFIG_CMD_GSV
-#define CONFIG_EXTPOWER_FALCO
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_FANS 1
-#define CONFIG_KEYBOARD_BOARD_CONFIG
-#define CONFIG_KEYBOARD_PROTOCOL_8042
-#define CONFIG_LOW_POWER_IDLE
-#define CONFIG_PECI_TJMAX 100
-#define CONFIG_POWER_BUTTON
-#define CONFIG_POWER_BUTTON_X86
-#define CONFIG_SWITCH_DEDICATED_RECOVERY
-#define CONFIG_TEMP_SENSOR
-#define CONFIG_TEMP_SENSOR_G781
-#define CONFIG_TEMP_SENSOR_POWER_GPIO GPIO_PP3300_DX_EN
-#define CONFIG_UART_HOST 2
-#define CONFIG_USB_PORT_POWER_DUMB
-#define CONFIG_VBOOT_HASH
-#define CONFIG_WIRELESS
-
-#undef DEFERRABLE_MAX_COUNT
-#define DEFERRABLE_MAX_COUNT 9
-
-#ifndef __ASSEMBLER__
-
-/* I2C ports */
-#define I2C_PORT_BATTERY 0
-#define I2C_PORT_CHARGER 0
-#define I2C_PORT_LVDS 1
-#define I2C_PORT_THERMAL 5
-
-/* 13x8 keyboard scanner uses an entire GPIO bank for row inputs */
-#define KB_SCAN_ROW_IRQ LM4_IRQ_GPIOK
-#define KB_SCAN_ROW_GPIO LM4_GPIO_K
-
-/* Host connects to keyboard controller module via LPC */
-#define HOST_KB_BUS_LPC
-
-/* USB ports */
-#define USB_PORT_COUNT 2
-
-#include "gpio_signal.h"
-
-/* power signal definitions */
-enum power_signal {
- X86_PGOOD_PP5000 = 0,
- X86_PGOOD_PP1350,
- X86_PGOOD_PP1050,
- X86_PGOOD_VCORE,
- X86_SLP_S0_DEASSERTED,
- X86_SLP_S3_DEASSERTED,
- X86_SLP_S5_DEASSERTED,
- X86_SLP_SUS_DEASSERTED,
-
- /* Number of X86 signals */
- POWER_SIGNAL_COUNT
-};
-
-/* Charger module */
-#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* Input sensor resistor, mOhm */
-#define CONFIG_CHARGER_INPUT_CURRENT 4032 /* mA, about half max */
-#define CONFIG_CHARGER_TIMEOUT_HOURS 10 /* Max time to charge battery, hours */
-
-enum adc_channel {
- /* EC internal die temperature in degrees K. */
- ADC_CH_EC_TEMP = 0,
-
- /* Charger current in mA. */
- ADC_CH_CHARGER_CURRENT,
-
- /* AC Adapter ID voltage in mV */
- ADC_AC_ADAPTER_ID_VOLTAGE,
-
- ADC_CH_COUNT
-};
-
-enum temp_sensor_id {
- /* CPU die temperature via PECI */
- TEMP_SENSOR_CPU_PECI = 0,
- /* EC internal temperature sensor */
- TEMP_SENSOR_EC_INTERNAL,
- /* G781 internal and external sensors */
- TEMP_SENSOR_I2C_G781_INTERNAL,
- TEMP_SENSOR_I2C_G781_EXTERNAL,
-
- TEMP_SENSOR_COUNT
-};
-
-/**
- * LCD VCC enable interrupt.
- */
-void lcdvcc_interrupt(enum gpio_signal signal);
-
-/* Wireless signals */
-#define WIRELESS_GPIO_WLAN GPIO_WLAN_OFF_L
-#define WIRELESS_GPIO_WWAN GPIO_PP3300_LTE_EN
-#define WIRELESS_GPIO_WLAN_POWER GPIO_PP3300_WLAN_EN
-
-/* Discharge battery when on AC power for factory test. */
-int board_discharge_on_ac(int enable);
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/falco/build.mk b/board/falco/build.mk
deleted file mode 100644
index e8bbc36cbd..0000000000
--- a/board/falco/build.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- makefile -*-
-# 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.
-#
-# Board specific files build
-#
-
-# the IC is TI Stellaris LM4
-CHIP:=lm4
-
-board-y=board.o battery.o led.o panel.o
diff --git a/board/falco/ec.tasklist b/board/falco/ec.tasklist
deleted file mode 100644
index d193e6e7b2..0000000000
--- a/board/falco/ec.tasklist
+++ /dev/null
@@ -1,27 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' is the name of the task
- * 'r' is the main routine of the task
- * 'd' is an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(POWERBTN, power_button_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/falco/gpio.inc b/board/falco/gpio.inc
deleted file mode 100644
index 9b2fe7abe0..0000000000
--- a/board/falco/gpio.inc
+++ /dev/null
@@ -1,102 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(POWER_BUTTON_L, PIN(A, 2), GPIO_INT_BOTH_DSLEEP, power_button_interrupt) /* Power button */
-GPIO_INT(LID_OPEN, PIN(A, 3), GPIO_INT_BOTH_DSLEEP, lid_interrupt) /* Lid switch */
-GPIO_INT(AC_PRESENT, PIN(H, 3), GPIO_INT_BOTH_DSLEEP, extpower_interrupt) /* AC power present */
-GPIO_INT(PCH_BKLTEN, PIN(M, 3), GPIO_INT_BOTH, backlight_interrupt) /* Backlight enable signal from PCH */
-GPIO_INT(PCH_SLP_S0_L, PIN(G, 6), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_S0# signal from PCH */
-GPIO_INT(PCH_SLP_S3_L, PIN(G, 7), GPIO_INT_BOTH_DSLEEP, power_signal_interrupt) /* SLP_S3# signal from PCH */
-GPIO_INT(PCH_SLP_S5_L, PIN(H, 1), GPIO_INT_BOTH_DSLEEP, power_signal_interrupt) /* SLP_S5# signal from PCH */
-GPIO_INT(PCH_SLP_SUS_L, PIN(G, 3), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_SUS# signal from PCH */
-GPIO_INT(PP1050_PGOOD, PIN(H, 4), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 1.05V */
-GPIO_INT(PP1350_PGOOD, PIN(H, 6), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 1.35V (DRAM) */
-GPIO_INT(PP5000_PGOOD, PIN(N, 0), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 5V */
-GPIO_INT(VCORE_PGOOD, PIN(C, 6), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on core VR */
-GPIO_INT(PCH_EDP_VDD_EN, PIN(J, 1), GPIO_INT_BOTH, lcdvcc_interrupt) /* PCH wants EDP enabled */
-GPIO_INT(RECOVERY_L, PIN(A, 5), GPIO_PULL_UP | GPIO_INT_BOTH, switch_interrupt) /* Recovery signal from servo */
-GPIO_INT(WP_L, PIN(A, 4), GPIO_INT_BOTH, switch_interrupt) /* Write protect input */
-GPIO_INT(JTAG_TCK, PIN(C, 0), GPIO_DEFAULT, jtag_interrupt) /* JTAG clock input */
-GPIO_INT(UART0_RX, PIN(A, 0), GPIO_PULL_UP | GPIO_INT_BOTH_DSLEEP, uart_deepsleep_interrupt) /* UART0 RX input */
-
-/* Other inputs */
-GPIO(FAN_ALERT_L, PIN(B, 0), GPIO_INPUT) /* From thermal sensor */
-GPIO(PCH_SUSWARN_L, PIN(G, 2), GPIO_INT_BOTH) /* SUSWARN# signal from PCH */
-GPIO(USB1_OC_L, PIN(E, 7), GPIO_INPUT) /* USB port overcurrent warning */
-GPIO(USB2_OC_L, PIN(E, 0), GPIO_INPUT) /* USB port overcurrent warning */
-GPIO(BOARD_VERSION1, PIN(Q, 5), GPIO_INPUT) /* Board version stuffing resistor 1 */
-GPIO(BOARD_VERSION2, PIN(Q, 6), GPIO_INPUT) /* Board version stuffing resistor 2 */
-GPIO(BOARD_VERSION3, PIN(Q, 7), GPIO_INPUT) /* Board version stuffing resistor 3 */
-GPIO(CPU_PGOOD, PIN(C, 4), GPIO_INPUT) /* Power good to the CPU */
-
-/* Outputs; all unasserted by default except for reset signals */
-GPIO(CPU_PROCHOT, PIN(B, 1), GPIO_OUT_LOW) /* Force CPU to think it's overheated */
-GPIO(PP1350_EN, PIN(H, 5), GPIO_OUT_LOW) /* Enable 1.35V supply */
-GPIO(PP3300_DSW_GATED_EN, PIN(J, 3), GPIO_OUT_LOW) /* Enable DSW rails */
-GPIO(PP3300_DX_EN, PIN(J, 2), GPIO_OUT_LOW) /* Enable power to lots of peripherals */
-GPIO(PP3300_LTE_EN, PIN(D, 2), GPIO_OUT_LOW) /* Enable LTE radio */
-GPIO(PP3300_WLAN_EN, PIN(J, 0), GPIO_OUT_LOW) /* Enable WiFi power */
-GPIO(SUSP_VR_EN, PIN(C, 7), GPIO_OUT_LOW) /* Enable 1.05V regulator */
-GPIO(VCORE_EN, PIN(C, 5), GPIO_OUT_LOW) /* Stuffing option - not connected */
-GPIO(PP5000_EN, PIN(H, 7), GPIO_OUT_LOW) /* Enable 5V supply */
-GPIO(SYS_PWROK, PIN(H, 2), GPIO_OUT_LOW) /* EC thinks everything is up and ready */
-GPIO(WLAN_OFF_L, PIN(J, 4), GPIO_OUT_LOW) /* Disable WiFi radio */
-GPIO(CHARGE_L, PIN(E, 6), GPIO_OUT_LOW) /* Allow battery to charge when on AC */
-
-GPIO(ENABLE_BACKLIGHT, PIN(M, 7), GPIO_OUT_LOW) /* Enable backlight power */
-GPIO(ENABLE_TOUCHPAD, PIN(N, 1), GPIO_OUT_LOW) /* Enable touchpad power */
-GPIO(ENTERING_RW, PIN(D, 3), GPIO_OUT_LOW) /* Indicate when EC is entering RW code */
-GPIO(PCH_DPWROK, PIN(G, 0), GPIO_OUT_LOW) /* Indicate when VccDSW is good */
-
-/*
- * HDA_SDO is technically an output, but we need to leave it as an
- * input until we drive it high. So can't use open-drain (HI_Z).
- */
-GPIO(PCH_HDA_SDO, PIN(G, 1), GPIO_INPUT) /* HDA_SDO signal to PCH; when high, ME ignores security descriptor */
-GPIO(PCH_WAKE_L, PIN(F, 0), GPIO_OUT_HIGH) /* Wake signal from EC to PCH */
-GPIO(PCH_NMI_L, PIN(F, 2), GPIO_OUT_HIGH) /* Non-maskable interrupt pin to PCH */
-GPIO(PCH_PWRBTN_L, PIN(H, 0), GPIO_OUT_HIGH) /* Power button output to PCH */
-GPIO(PCH_PWROK, PIN(F, 5), GPIO_OUT_LOW) /* PWROK / APWROK signals to PCH */
-
-/*
- * PL6 is one of 4 pins on the EC which can't be used in open-drain
- * mode. To work around this PCH_RCIN_L is set to an input. It will
- * only be set to an output when it needs to be driven to 0.
- */
-GPIO(PCH_RCIN_L, PIN(L, 6), GPIO_INPUT) /* RCIN# line to PCH (for 8042 emulation) */
-GPIO(PCH_RSMRST_L, PIN(F, 1), GPIO_OUT_LOW) /* Reset PCH resume power plane logic */
-GPIO(PCH_SMI_L, PIN(F, 4), GPIO_ODR_HIGH) /* System management interrupt to PCH */
-GPIO(TOUCHSCREEN_RESET_L, PIN(N, 7), GPIO_OUT_LOW) /* Reset touch screen */
-GPIO(EC_EDP_VDD_EN, PIN(J, 5), GPIO_OUT_LOW) /* Enable EDP (passthru from PCH) */
-
-GPIO(LPC_CLKRUN_L, PIN(M, 2), GPIO_ODR_HIGH) /* Dunno. Probably important, though. */
-GPIO(USB1_ENABLE, PIN(E, 4), GPIO_OUT_LOW) /* USB port 1 output power enable */
-GPIO(USB2_ENABLE, PIN(D, 5), GPIO_OUT_LOW) /* USB port 2 output power enable */
-
-GPIO(PCH_SUSACK_L, PIN(F, 3), GPIO_OUT_HIGH) /* Acknowledge PCH SUSWARN# signal */
-GPIO(PCH_RTCRST_L, PIN(F, 6), GPIO_ODR_HIGH) /* Not supposed to be here */
-GPIO(PCH_SRTCRST_L, PIN(F, 7), GPIO_ODR_HIGH) /* Not supposed to be here */
-
-GPIO(PWR_LED_L, PIN(N, 6), GPIO_OUT_HIGH) /* Power LED */
-GPIO(KB_LED_EN, PIN(D, 4), GPIO_OUT_LOW) /* Keyboard LED */
-GPIO(BAT_LED0, PIN(D, 0), GPIO_OUT_LOW) /* Battery charger status */
-GPIO(BAT_LED1, PIN(D, 1), GPIO_OUT_LOW) /* Battery charger status */
-
-ALTERNATE(PIN_MASK(A, 0x03), 1, MODULE_UART, GPIO_PULL_UP) /* UART0 */
-ALTERNATE(PIN_MASK(A, 0x40), 3, MODULE_I2C, 0) /* I2C1 SCL */
-ALTERNATE(PIN_MASK(A, 0x80), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C1 SDA */
-ALTERNATE(PIN_MASK(B, 0x04), 3, MODULE_I2C, 0) /* I2C0 SCL */
-ALTERNATE(PIN_MASK(B, 0x08), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C0 SDA */
-ALTERNATE(PIN_MASK(B, 0x40), 3, MODULE_I2C, 0) /* I2C5 SCL */
-ALTERNATE(PIN_MASK(B, 0x80), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C5 SDA */
-ALTERNATE(PIN_MASK(G, 0x30), 1, MODULE_UART, 0) /* UART2 */
-ALTERNATE(PIN_MASK(J, 0x40), 1, MODULE_PECI, 0) /* PECI Tx */
-ALTERNATE(PIN_MASK(J, 0x80), 0, MODULE_PECI, GPIO_ANALOG) /* PECI Rx */
-ALTERNATE(PIN_MASK(L, 0x3f), 15, MODULE_LPC, 0) /* LPC */
-ALTERNATE(PIN_MASK(M, 0x33), 15, MODULE_LPC, 0) /* LPC */
-ALTERNATE(PIN_MASK(N, 0x0c), 1, MODULE_PWM_FAN, 0) /* FAN0PWM2 */
diff --git a/board/falco/led.c b/board/falco/led.c
deleted file mode 100644
index c0d7c5f3ef..0000000000
--- a/board/falco/led.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* 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.
- *
- * Power and battery LED control for Falco.
- */
-
-#include "battery.h"
-#include "charge_state.h"
-#include "chipset.h"
-#include "extpower.h"
-#include "gpio.h"
-#include "hooks.h"
-
-enum led_color {
- LED_OFF = 0,
- LED_WHITE,
- LED_AMBER,
- LED_COLOR_COUNT /* Number of colors, not a color itself */
-};
-
-static int bat_led_set_color(enum led_color color)
-{
- switch (color) {
- case LED_OFF:
- gpio_set_level(GPIO_BAT_LED0, 1);
- gpio_set_level(GPIO_BAT_LED1, 1);
- break;
- case LED_WHITE:
- gpio_set_level(GPIO_BAT_LED0, 1);
- gpio_set_level(GPIO_BAT_LED1, 0);
- break;
- case LED_AMBER:
- gpio_set_level(GPIO_BAT_LED0, 0);
- gpio_set_level(GPIO_BAT_LED1, 1);
- break;
- default:
- return EC_ERROR_UNKNOWN;
- }
- return EC_SUCCESS;
-}
-
-static int pwr_led_set_color(enum led_color color)
-{
- switch (color) {
- case LED_OFF:
- gpio_set_level(GPIO_PWR_LED_L, 1);
- break;
- case LED_WHITE:
- gpio_set_level(GPIO_PWR_LED_L, 0);
- break;
- default:
- return EC_ERROR_UNKNOWN;
- }
- return EC_SUCCESS;
-}
-
-/* Called by hook task every 250mSec */
-static void led_tick(void)
-{
- static int ticks;
- uint32_t chflags = charge_get_flags();
-
- ticks++;
-
- if (chipset_in_state(CHIPSET_STATE_ANY_OFF))
- pwr_led_set_color(LED_OFF);
- else if (chipset_in_state(CHIPSET_STATE_ON))
- pwr_led_set_color(LED_WHITE);
- else if (chipset_in_state(CHIPSET_STATE_SUSPEND))
- pwr_led_set_color((ticks & 0x4) ? LED_WHITE : LED_OFF);
-
- /* Battery LED is solid white if AC connected, unless the battery is
- * is charging or there is an error. */
- bat_led_set_color(extpower_is_present() ? LED_WHITE : LED_OFF);
-
- switch (charge_get_state()) {
- case PWR_STATE_CHARGE:
- bat_led_set_color(LED_AMBER);
- break;
- case PWR_STATE_DISCHARGE:
- /* See crosbug.com/p/22159. There's a 3% difference
- * between the battery level seen by the kernel and what's
- * really going on, so if they want to see 12%, we use 15%.
- * Hard code this number here, because this only affects the
- * LED color, not the battery charge state. */
- if (charge_get_percent() < 15)
- bat_led_set_color((ticks & 0x4) ? LED_WHITE : LED_OFF);
- break;
- case PWR_STATE_ERROR:
- bat_led_set_color((ticks & 0x2) ? LED_WHITE : LED_OFF);
- break;
- case PWR_STATE_IDLE:
- if (chflags & CHARGE_FLAG_FORCE_IDLE)
- bat_led_set_color((ticks & 0x4) ? LED_AMBER : LED_OFF);
- break;
- default:
- /* Other states don't alter LED behavior */
- break;
- }
-}
-DECLARE_HOOK(HOOK_TICK, led_tick, HOOK_PRIO_DEFAULT);
-
diff --git a/board/falco/panel.c b/board/falco/panel.c
deleted file mode 100644
index 33154620f2..0000000000
--- a/board/falco/panel.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* 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.
- */
-
-#include "common.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "host_command.h"
-#include "lid_switch.h"
-
-/*
- * Falco needs a 420ms delay for a 0->1 transition of the PCH's backlight
- * enable signal. The reason is that Falco has a LVDS bridge which controls
- * all the other signals for the panel except the backlight. In order to
- * meet the penel power sequencing requirements a delay needs to be added.
- *
- * Additionally the LCDVCC needs to be delayed on a 0->1 transition of the
- * PCH's EDP VDD enable signal to meet the panel specification.
- */
-
-#define BL_ENABLE_DELAY_US 420000 /* 420 ms delay */
-#define LCDVCC_ENABLE_DELAY_US 270000 /* 270 ms delay */
-
-static int backlight_deferred_value;
-
-static void set_backlight_value(void)
-{
- gpio_set_level(GPIO_ENABLE_BACKLIGHT, backlight_deferred_value);
-}
-DECLARE_DEFERRED(set_backlight_value);
-
-/**
- * Update backlight state.
- */
-static void update_backlight(void)
-{
- int pch_value;
-
- pch_value = gpio_get_level(GPIO_PCH_BKLTEN);
-
- /* Immediately disable the backlight when the lid is closed or the PCH
- * is instructing the backlight to be disabled. */
- if (!lid_is_open() || !pch_value) {
- /* If there was a scheduled callback pending make sure it picks
- * up the disabled value. */
- backlight_deferred_value = 0;
- gpio_set_level(GPIO_ENABLE_BACKLIGHT, 0);
- /* Cancel pending hook */
- hook_call_deferred(&set_backlight_value, -1);
- return;
- }
- /* Handle a 0->1 transition by calling a deferred hook. */
- if (pch_value && !backlight_deferred_value) {
- backlight_deferred_value = 1;
- hook_call_deferred(&set_backlight_value, BL_ENABLE_DELAY_US);
- }
-}
-DECLARE_HOOK(HOOK_LID_CHANGE, update_backlight, 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);
-
-
-static int lcdvcc_en_deferred_value;
-
-static void set_lcdvcc_en_value(void)
-{
- gpio_set_level(GPIO_EC_EDP_VDD_EN, lcdvcc_en_deferred_value);
-}
-DECLARE_DEFERRED(set_lcdvcc_en_value);
-
-void lcdvcc_interrupt(enum gpio_signal signal)
-{
- int pch_value;
-
- pch_value = gpio_get_level(GPIO_PCH_EDP_VDD_EN);
-
- /* Immediately disable the LCDVCC when the PCH indicates as such. */
- if (!pch_value) {
- /* If there was a scheduled callback pending make sure it picks
- * up the disabled value. */
- lcdvcc_en_deferred_value = 0;
- gpio_set_level(GPIO_EC_EDP_VDD_EN, 0);
- /* Cancel pending hook */
- hook_call_deferred(&set_lcdvcc_en_value, -1);
- return;
- }
- /* Handle a 0->1 transition by calling a deferred hook. */
- if (pch_value && !lcdvcc_en_deferred_value) {
- lcdvcc_en_deferred_value = 1;
- hook_call_deferred(&set_lcdvcc_en_value,
- LCDVCC_ENABLE_DELAY_US);
- }
-}
-
-/**
- * Initialize panel module.
- */
-static void panel_init(void)
-{
- /* Set initial deferred value and signal to the current PCH signal. */
- backlight_deferred_value = gpio_get_level(GPIO_PCH_BKLTEN);
- set_backlight_value();
-
- update_backlight();
-
- gpio_enable_interrupt(GPIO_PCH_BKLTEN);
-
- /* The interrupt is enabled for the GPIO_PCH_EDP_VDD_EN in the
- * chipset_haswell.c compilation unit. Initially set the value
- * to whatever it current is reading. */
- lcdvcc_en_deferred_value = gpio_get_level(GPIO_PCH_EDP_VDD_EN);
- set_lcdvcc_en_value();
-}
-DECLARE_HOOK(HOOK_INIT, panel_init, HOOK_PRIO_DEFAULT);
-
diff --git a/board/firefly/Makefile b/board/firefly/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/firefly/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/firefly/board.c b/board/firefly/board.c
deleted file mode 100644
index 4ed6cd2db7..0000000000
--- a/board/firefly/board.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Firefly board configuration */
-
-#include "adc.h"
-#include "adc_chip.h"
-#include "common.h"
-#include "console.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "i2c.h"
-#include "registers.h"
-#include "task.h"
-#include "timer.h"
-#include "usb_pd.h"
-#include "util.h"
-
-/* Debounce time for voltage buttons */
-#define BUTTON_DEBOUNCE_US (100 * MSEC)
-
-static enum gpio_signal button_pressed;
-
-/* Handle debounced button press */
-static void button_deferred(void)
-{
- int mv;
-
- /* bounce ? */
- if (gpio_get_level(button_pressed) != 0)
- return;
-
- switch (button_pressed) {
- case GPIO_SW_PP20000:
- mv = 20000;
- break;
- case GPIO_SW_PP12000:
- mv = 12000;
- break;
- case GPIO_SW_PP5000:
- mv = 5000;
- break;
- default:
- mv = -1;
- }
- pd_request_source_voltage(0, mv);
- ccprintf("Button %d = %d => Vout=%d mV\n",
- button_pressed, gpio_get_level(button_pressed), mv);
-}
-DECLARE_DEFERRED(button_deferred);
-
-void button_event(enum gpio_signal signal)
-{
- button_pressed = signal;
- /* reset debounce time */
- hook_call_deferred(button_deferred, BUTTON_DEBOUNCE_US);
-}
-
-void vbus_event(enum gpio_signal signal)
-{
- ccprintf("VBUS! =%d\n", gpio_get_level(signal));
- task_wake(TASK_ID_PD);
-}
-
-void board_config_pre_init(void)
-{
- /* enable SYSCFG clock */
- STM32_RCC_APB2ENR |= 1 << 0;
- /* Remap USART DMA to match the USART driver */
- /*
- * the DMA mapping is :
- * Chan 2 : TIM1_CH1 (PD RX)
- * Chan 3 : SPI1_TX (PD TX)
- * Chan 4 : USART1_TX
- * Chan 5 : USART1_RX
- */
- STM32_SYSCFG_CFGR1 |= (1 << 9) | (1 << 10);/* Remap USART1 RX/TX DMA */
-}
-
-#include "gpio_list.h"
-
-/* ADC channels */
-const struct adc_t adc_channels[] = {
- /* USB PD CC lines sensing. Converted to mV (3300mV/4096). */
- [ADC_CH_CC1_PD] = {"CC1_PD", 3300, 4096, 0, STM32_AIN(0)},
- [ADC_CH_CC2_PD] = {"CC2_PD", 3300, 4096, 0, STM32_AIN(2)},
- /* VBUS voltage sensing is behind a 10K/100K voltage divider */
- [ADC_CH_VBUS_SENSE] = {"VBUS", 36300, 4096, 0, STM32_AIN(5)},
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-static void board_init(void)
-{
- gpio_enable_interrupt(GPIO_SW_PP20000);
- gpio_enable_interrupt(GPIO_SW_PP12000);
- gpio_enable_interrupt(GPIO_SW_PP5000);
-
- /* Enable interrupts on VBUS transitions. */
- gpio_enable_interrupt(GPIO_VBUS_WAKE);
-}
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
-
-static int command_volt(int argc, char **argv)
-{
- int millivolt = -1;
- if (argc >= 2) {
- char *e;
- millivolt = strtoi(argv[1], &e, 10) * 1000;
- }
- ccprintf("Request Vout=%d mV\n", millivolt);
- pd_request_source_voltage(0, millivolt);
-
- return EC_SUCCESS;
-}
-DECLARE_CONSOLE_COMMAND(volt, command_volt,
- "[5|12|20]",
- "set voltage through USB PD",
- NULL);
diff --git a/board/firefly/board.h b/board/firefly/board.h
deleted file mode 100644
index 1ca109662f..0000000000
--- a/board/firefly/board.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Firefly board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* 48 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 48000000
-
-/* the UART console is on USART1 (PA9/PA10) */
-#define CONFIG_UART_CONSOLE 1
-
-/* Optional features */
-#define CONFIG_STM_HWTIMER32
-#define CONFIG_USB_POWER_DELIVERY
-#define CONFIG_USB_PD_DUAL_ROLE
-#define CONFIG_USB_PD_INTERNAL_COMP
-#define CONFIG_USB_PD_PORT_COUNT 1
-#define CONFIG_USB_PD_TCPC
-#define CONFIG_USB_PD_TCPM_STUB
-#define CONFIG_ADC
-#define CONFIG_HW_CRC
-#define CONFIG_I2C
-#define CONFIG_BOARD_PRE_INIT
-#undef CONFIG_WATCHDOG_HELP
-#undef CONFIG_LID_SWITCH
-#undef CONFIG_TASK_PROFILING
-
-/* I2C ports configuration */
-#define I2C_PORT_SLAVE 0
-
-/*
- * Allow dangerous commands all the time, since we don't have a write protect
- * switch.
- */
-#define CONFIG_SYSTEM_UNLOCKED
-
-#ifndef __ASSEMBLER__
-
-/* Timer selection */
-#define TIM_CLOCK32 2
-#define TIM_ADC 3
-
-#include "gpio_signal.h"
-
-/* ADC signal */
-enum adc_channel {
- ADC_CH_CC1_PD = 0,
- ADC_CH_CC2_PD,
- ADC_CH_VBUS_SENSE,
- /* Number of ADC channels */
- ADC_CH_COUNT
-};
-
-/* we are acting only as a sink */
-#define PD_DEFAULT_STATE PD_STATE_SNK_DISCONNECTED
-
-/* we are never a source : don't care about power supply */
-#define PD_POWER_SUPPLY_TURN_ON_DELAY 0 /* us */
-#define PD_POWER_SUPPLY_TURN_OFF_DELAY 0 /* us */
-
-/* Define typical operating power and max power */
-#define PD_OPERATING_POWER_MW 1000
-#define PD_MAX_POWER_MW 1500
-#define PD_MAX_CURRENT_MA 300
-#define PD_MAX_VOLTAGE_MV 20000
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/firefly/build.mk b/board/firefly/build.mk
deleted file mode 100644
index 3d6b7a4688..0000000000
--- a/board/firefly/build.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- makefile -*-
-# Copyright (c) 2014 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32F072CBU6
-CHIP:=stm32
-CHIP_FAMILY:=stm32f0
-CHIP_VARIANT:=stm32f07x
-
-board-y=board.o
-board-$(CONFIG_USB_POWER_DELIVERY)+=usb_pd_policy.o
diff --git a/board/firefly/ec.tasklist b/board/firefly/ec.tasklist
deleted file mode 100644
index e9c8c1cc1f..0000000000
--- a/board/firefly/ec.tasklist
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(PD, pd_task, NULL, TASK_STACK_SIZE)
diff --git a/board/firefly/gpio.inc b/board/firefly/gpio.inc
deleted file mode 100644
index 1fba1be06a..0000000000
--- a/board/firefly/gpio.inc
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(VBUS_WAKE, PIN(C, 13), GPIO_INT_BOTH, vbus_event)
-
-/* Buttons */
-GPIO_INT(SW_PP20000, PIN(B, 10), GPIO_INT_FALLING, button_event)
-GPIO_INT(SW_PP12000, PIN(B, 11), GPIO_INT_FALLING, button_event)
-GPIO_INT(SW_PP5000, PIN(B, 12), GPIO_INT_FALLING, button_event)
-
-/* PD RX/TX */
-GPIO(USB_CC1_PD, PIN(A, 0), GPIO_ANALOG)
-GPIO(PD_REF1, PIN(A, 1), GPIO_ANALOG)
-GPIO(USB_CC2_PD, PIN(A, 2), GPIO_ANALOG)
-GPIO(PD_REF2, PIN(A, 3), GPIO_ANALOG)
-GPIO(PD_CC1_TX_EN, PIN(A, 4), GPIO_ODR_HIGH)
-GPIO(PD_CC2_TX_EN, PIN(A, 15), GPIO_ODR_HIGH)
-GPIO(PD_CLK_OUT, PIN(B, 9), GPIO_OUT_LOW)
-GPIO(PD_CC1_TX_DATA, PIN(A, 6), GPIO_INPUT)
-GPIO(PD_CC2_TX_DATA, PIN(B, 4), GPIO_INPUT)
-GPIO(PD_CLK_IN, PIN(B, 3), GPIO_INPUT)
-
-/* CCx device pull-downs */
-GPIO(PD_CC1_DEVICE, PIN(B, 13), GPIO_ODR_LOW)
-GPIO(PD_CC2_DEVICE, PIN(B, 14), GPIO_ODR_LOW)
-
-/* ADC */
-GPIO(VBUS_SENSE, PIN(A, 5), GPIO_ANALOG)
-
-/* LEDs control */
-GPIO(LED_PP20000, PIN(B, 0), GPIO_OUT_LOW)
-GPIO(LED_PP12000, PIN(B, 1), GPIO_OUT_LOW)
-GPIO(LED_PP5000, PIN(B, 2), GPIO_OUT_LOW)
-
-/* Slave I2C port */
-GPIO(I2C_INT_L, PIN(B, 8), GPIO_ODR_HIGH)
-/*
- * I2C pins should be configured as inputs until I2C module is
- * initialized. This will avoid driving the lines unintentionally.
- */
-GPIO(I2C_SCL, PIN(B, 6), GPIO_INPUT)
-GPIO(I2C_SDA, PIN(B, 7), GPIO_INPUT)
-
-/* Test points */
-GPIO(TP_A8, PIN(A, 8), GPIO_ODR_HIGH)
-GPIO(TP_A13, PIN(A, 13), GPIO_ODR_HIGH)
-GPIO(TP_A14, PIN(A, 14), GPIO_ODR_HIGH)
-GPIO(TP_B15, PIN(B, 15), GPIO_ODR_HIGH)
-GPIO(TP_C14, PIN(C, 14), GPIO_ODR_HIGH)
-GPIO(TP_C15, PIN(C, 15), GPIO_ODR_HIGH)
-GPIO(TP_F0, PIN(F, 0), GPIO_ODR_HIGH)
-GPIO(TP_F1, PIN(F, 1), GPIO_ODR_HIGH)
-
-/* Unimplemented signals which we need to emulate for now */
-UNIMPLEMENTED(ENTERING_RW)
-UNIMPLEMENTED(WP_L)
-
-ALTERNATE(PIN_MASK(B, 0x0008), 0, MODULE_USB_PD, 0) /* SPI1: SCK(PB3) */
-ALTERNATE(PIN_MASK(B, 0x0200), 2, MODULE_USB_PD, 0) /* TIM17_CH1: PB9) */
-ALTERNATE(PIN_MASK(A, 0x0600), 1, MODULE_UART, GPIO_PULL_UP) /* USART1: PA9/PA10 */
-ALTERNATE(PIN_MASK(B, 0x00c0), 1, MODULE_I2C, 0) /* I2C SLAVE:PB6/7 */
diff --git a/board/firefly/usb_pd_config.h b/board/firefly/usb_pd_config.h
deleted file mode 100644
index be0f0b3670..0000000000
--- a/board/firefly/usb_pd_config.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* USB Power delivery board configuration */
-
-#ifndef __USB_PD_CONFIG_H
-#define __USB_PD_CONFIG_H
-
-/* Timer selection for baseband PD communication */
-#define TIM_CLOCK_PD_TX_C0 17
-#define TIM_CLOCK_PD_RX_C0 1
-
-#define TIM_CLOCK_PD_TX(p) TIM_CLOCK_PD_TX_C0
-#define TIM_CLOCK_PD_RX(p) TIM_CLOCK_PD_RX_C0
-
-/* Timer channel */
-#define TIM_RX_CCR_C0 1
-#define TIM_TX_CCR_C0 1
-
-/* RX timer capture/compare register */
-#define TIM_CCR_C0 (&STM32_TIM_CCRx(TIM_CLOCK_PD_RX_C0, TIM_RX_CCR_C0))
-#define TIM_RX_CCR_REG(p) TIM_CCR_C0
-
-/* TX and RX timer register */
-#define TIM_REG_TX_C0 (STM32_TIM_BASE(TIM_CLOCK_PD_TX_C0))
-#define TIM_REG_RX_C0 (STM32_TIM_BASE(TIM_CLOCK_PD_RX_C0))
-#define TIM_REG_TX(p) TIM_REG_TX_C0
-#define TIM_REG_RX(p) TIM_REG_RX_C0
-
-/* use the hardware accelerator for CRC */
-#define CONFIG_HW_CRC
-
-/* TX is using SPI1 on PB3/PB4 or PA6 */
-#define SPI_REGS(p) STM32_SPI1_REGS
-
-static inline void spi_enable_clock(int port)
-{
- STM32_RCC_APB2ENR |= STM32_RCC_PB2_SPI1;
-}
-
-#define DMAC_SPI_TX(p) STM32_DMAC_CH3
-
-/* RX is using COMP1 triggering TIM1 CH1 */
-#define CMP1OUTSEL STM32_COMP_CMP1OUTSEL_TIM1_IC1
-#define CMP2OUTSEL STM32_COMP_CMP2OUTSEL_TIM1_IC1
-
-#define TIM_TX_CCR_IDX(p) TIM_TX_CCR_C0
-#define TIM_RX_CCR_IDX(p) TIM_RX_CCR_C0
-#define TIM_CCR_CS 1
-#define EXTI_COMP_MASK(p) ((1 << 21) | (1 << 22))
-#define IRQ_COMP STM32_IRQ_COMP
-/* triggers packet detection on comparator falling edge */
-#define EXTI_XTSR STM32_EXTI_FTSR
-
-#define DMAC_TIM_RX(p) STM32_DMAC_CH2
-
-/* the pins used for communication need to be hi-speed */
-static inline void pd_set_pins_speed(int port)
-{
- /* 40 MHz pin speed on SPI1 PA6/7 */
- STM32_GPIO_OSPEEDR(GPIO_A) |= 0x0000F000;
- /* 40 MHz pin speed on SPI1 PB3/4/5 */
- STM32_GPIO_OSPEEDR(GPIO_B) |= 0x00000FC0;
- /* 40 MHz pin speed on TIM17_CH1 (PB9) */
- STM32_GPIO_OSPEEDR(GPIO_B) |= 0x000C0000;
-}
-
-/* Reset SPI peripheral used for TX */
-static inline void pd_tx_spi_reset(int port)
-{
- /* Reset SPI1 */
- STM32_RCC_APB2RSTR |= (1 << 12);
- STM32_RCC_APB2RSTR &= ~(1 << 12);
-}
-
-/* Drive the CC line from the TX block */
-static inline void pd_tx_enable(int port, int polarity)
-{
- /* put SPI function on TX pin */
- if (polarity) /* PB4 is SPI1 MISO */
- gpio_set_alternate_function(GPIO_B, 0x0010, 0);
- else /* PA6 is SPI1 MISO */
- gpio_set_alternate_function(GPIO_A, 0x0040, 0);
-
- /* set the low level reference */
- gpio_set_level(polarity ? GPIO_PD_CC2_TX_EN : GPIO_PD_CC1_TX_EN, 0);
-}
-
-/* Put the TX driver in Hi-Z state */
-static inline void pd_tx_disable(int port, int polarity)
-{
- /* put SPI TX in Hi-Z */
- if (polarity)
- gpio_set_alternate_function(GPIO_B, 0x0010, -1);
- else
- gpio_set_alternate_function(GPIO_A, 0x0040, -1);
- /* put the low level reference in Hi-Z */
- gpio_set_level(polarity ? GPIO_PD_CC2_TX_EN : GPIO_PD_CC1_TX_EN, 1);
-}
-
-/* we know the plug polarity, do the right configuration */
-static inline void pd_select_polarity(int port, int polarity)
-{
- /* use the right comparator */
- STM32_COMP_CSR =
- (STM32_COMP_CSR & ~(STM32_COMP_CMP1EN | STM32_COMP_CMP2EN))
- | (polarity ? STM32_COMP_CMP2EN : STM32_COMP_CMP1EN);
-}
-
-/* Initialize pins used for TX and put them in Hi-Z */
-static inline void pd_tx_init(void)
-{
- /* Configure SCK pin */
- gpio_config_module(MODULE_USB_PD, 1);
-}
-
-static inline void pd_set_host_mode(int port, int enable)
-{
-}
-
-static inline void pd_config_init(int port, uint8_t power_role)
-{
- /* Initialize TX pins and put them in Hi-Z */
- pd_tx_init();
-}
-
-static inline int pd_adc_read(int port, int cc)
-{
- if (cc == 0)
- return adc_read_channel(ADC_CH_CC1_PD);
- else
- return adc_read_channel(ADC_CH_CC2_PD);
-}
-
-#endif /* __USB_PD_CONFIG_H */
diff --git a/board/firefly/usb_pd_policy.c b/board/firefly/usb_pd_policy.c
deleted file mode 100644
index 3750fb67a4..0000000000
--- a/board/firefly/usb_pd_policy.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-#include "adc.h"
-#include "board.h"
-#include "common.h"
-#include "console.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "registers.h"
-#include "task.h"
-#include "timer.h"
-#include "util.h"
-#include "usb_pd.h"
-
-#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args)
-#define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args)
-
-/* Acceptable margin between requested VBUS and measured value */
-#define MARGIN_MV 400 /* mV */
-
-#define PDO_FIXED_FLAGS (PDO_FIXED_EXTERNAL)
-
-/* we are not acting as a source */
-const uint32_t pd_src_pdo[] = {
- PDO_FIXED(5000, 500, PDO_FIXED_FLAGS),
-};
-const int pd_src_pdo_cnt = ARRAY_SIZE(pd_src_pdo);
-
-/* Fake PDOs : we just want our pre-defined voltages */
-const uint32_t pd_snk_pdo[] = {
- PDO_FIXED(5000, 500, PDO_FIXED_FLAGS),
- PDO_FIXED(12000, 500, PDO_FIXED_FLAGS),
- PDO_FIXED(20000, 500, PDO_FIXED_FLAGS),
-};
-const int pd_snk_pdo_cnt = ARRAY_SIZE(pd_snk_pdo);
-
-void pd_set_input_current_limit(int port, uint32_t max_ma,
- uint32_t supply_voltage)
-{
- /* No battery, nothing to do */
- return;
-}
-
-int pd_is_valid_input_voltage(int mv)
-{
- /* Any voltage less than the max is allowed */
- return 1;
-}
-
-int pd_check_requested_voltage(uint32_t rdo)
-{
- /* Never acting as a source */
- return EC_ERROR_INVAL;
-}
-
-void pd_transition_voltage(int idx)
-{
- /* No operation: sink only */
-}
-
-int pd_set_power_supply_ready(int port)
-{
- /* Never acting as a source */
- return EC_ERROR_INVAL;
-}
-
-void pd_power_supply_reset(int port)
-{
-}
-
-int pd_snk_is_vbus_provided(int port)
-{
- /* VBUS_WAKE is broken (not detecting 5V), use the ADC instead */
- return adc_read_channel(ADC_CH_VBUS_SENSE) > 4000;
-}
-
-int pd_board_checks(void)
-{
- static int blinking;
- int vbus;
- int led5 = 0, led12 = 0, led20 = 0;
- unsigned select_mv = pd_get_max_voltage();
-
- /* LED blinking state for the default indicator */
- blinking = (blinking + 1) & 3;
-
- vbus = adc_read_channel(ADC_CH_VBUS_SENSE);
-
- if (select_mv > 0) {
- /* is current VBUS voltage matching the request ? */
- int diff = vbus - select_mv;
- int correct = (diff < MARGIN_MV) && (diff > -MARGIN_MV);
- /*
- * turn on the LED if the voltage is correct
- * or we are in on-period of the duty cycle.
- */
- int led_value = correct || !blinking;
- /* decide which LED is used */
- switch (select_mv) {
- case 5000:
- led5 = led_value;
- break;
- case 12000:
- led12 = led_value;
- break;
- case 20000:
- led20 = led_value;
- break;
- }
- }
- /* switch LEDs */
- gpio_set_level(GPIO_LED_PP5000, led5);
- gpio_set_level(GPIO_LED_PP12000, led12);
- gpio_set_level(GPIO_LED_PP20000, led20);
-
- return EC_SUCCESS;
-}
-
-int pd_check_power_swap(int port)
-{
- /* Always refuse power swap */
- return 0;
-}
-
-int pd_check_data_swap(int port, int data_role)
-{
- /* Always refuse data swap */
- return 0;
-}
-
-void pd_execute_data_swap(int port, int data_role)
-{
- /* Do nothing */
-}
-
-void pd_check_pr_role(int port, int pr_role, int flags)
-{
-}
-
-void pd_check_dr_role(int port, int dr_role, int flags)
-{
-}
-
-int pd_custom_vdm(int port, int cnt, uint32_t *payload,
- uint32_t **rpayload)
-{
- return 0;
-}
diff --git a/board/fruitpie/Makefile b/board/fruitpie/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/fruitpie/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/fruitpie/board.c b/board/fruitpie/board.c
deleted file mode 100644
index ab6289b5b2..0000000000
--- a/board/fruitpie/board.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Fruitpie board configuration */
-
-#include "adc.h"
-#include "adc_chip.h"
-#include "common.h"
-#include "console.h"
-#include "ec_version.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "i2c.h"
-#include "registers.h"
-#include "task.h"
-#include "timer.h"
-#include "usb.h"
-#include "usb_pd.h"
-#include "util.h"
-
-#include "driver/tsu6721.h"
-
-void rohm_event(enum gpio_signal signal)
-{
- ccprintf("ROHM!\n");
-}
-
-void vbus_event(enum gpio_signal signal)
-{
- ccprintf("VBUS!\n");
-}
-
-void tsu_event(enum gpio_signal signal)
-{
- ccprintf("TSU!\n");
-}
-
-#include "gpio_list.h"
-
-/* Initialize board. */
-static void board_init(void)
-{
- /* enable SYSCFG clock */
- STM32_RCC_APB2ENR |= 1 << 0;
-
- /* Remap SPI2 to DMA channels 6 and 7 */
- STM32_SYSCFG_CFGR1 |= (1 << 24);
-}
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
-
-/* ADC channels */
-const struct adc_t adc_channels[] = {
- /* USB PD CC lines sensing. Converted to mV (3300mV/4096). */
- [ADC_CH_CC1_PD] = {"CC1_PD", 3300, 4096, 0, STM32_AIN(0)},
- [ADC_CH_CC2_PD] = {"CC2_PD", 3300, 4096, 0, STM32_AIN(4)},
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"master", I2C_PORT_MASTER, 100,
- GPIO_MASTER_I2C_SCL, GPIO_MASTER_I2C_SDA},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-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("FruitPie"),
- [USB_STR_VERSION] = USB_STRING_DESC(CROS_EC_VERSION32),
-};
-BUILD_ASSERT(ARRAY_SIZE(usb_strings) == USB_STR_COUNT);
-
-int board_set_debug(int enable)
-{
- timestamp_t timeout;
- int rv = EC_SUCCESS;
-
- if (enable) {
- /* Disable the PD module */
- gpio_config_module(MODULE_USB_PD, 0);
-
- /* Suspend the USB PD task */
- pd_set_suspend(0, 1);
-
- /* Decrease BCDv1.2 timer to 0.6s */
- tsu6721_write(TSU6721_REG_TIMER, 0x05);
-
- timeout.val = get_time().val + DEBUG_SWITCH_TIMEOUT_MSEC;
- /* Wait for power to be detected to allow switching debug mux */
- while (!(tsu6721_read(TSU6721_REG_DEV_TYPE3) & 0x74)) {
- if (get_time().val > timeout.val)
- return EC_ERROR_TIMEOUT;
-
- /* Not already powered by cable, turn on regulator */
- gpio_set_level(GPIO_USB_C_5V_EN, 1);
-
- ccputs("Sleeping for 1s, waiting for TSU6721...\n");
- usleep(1000*MSEC);
- }
-
- /* Enable manual switching */
- rv = tsu6721_mux(TSU6721_MUX_USB);
- if (rv)
- return rv;
-
- /* Switch debug mux */
- tsu6721_set_pins(TSU6721_PIN_MANUAL2_BOOT);
-
- /* Set pins PD_CLK_IN, PD_TX_DATA, and
- * VCONN1_EN to alternate function. */
- /* Set pin PD_TX_EN (NSS) to general purpose output mode. */
- STM32_GPIO_MODER(GPIO_B) &= ~0xff000000;
- STM32_GPIO_MODER(GPIO_B) |= 0xa9000000;
-
- /* Set all four pins to alternate function 0 */
- STM32_GPIO_AFRH(GPIO_B) &= ~(0xffff0000);
-
- /* Set all four pins to output push-pull */
- STM32_GPIO_OTYPER(GPIO_B) &= ~(0xf000);
-
- /* Set pullup on PD_TX_EN */
- STM32_GPIO_PUPDR(GPIO_B) |= 0x1000000;
-
- /* Set all four pins to high speed */
- STM32_GPIO_OSPEEDR(GPIO_B) |= 0xff000000;
-
- /* Reset SPI2 */
- STM32_RCC_APB1RSTR |= (1 << 14);
- STM32_RCC_APB1RSTR &= ~(1 << 14);
-
- /* Enable clocks to SPI2 module */
- STM32_RCC_APB1ENR |= STM32_RCC_PB1_SPI2;
- } else {
- /* Reset SPI2 */
- STM32_RCC_APB1RSTR |= (1 << 14);
- STM32_RCC_APB1RSTR &= ~(1 << 14);
-
- /* Set all but VCONN1_EN to input mode */
- STM32_GPIO_MODER(GPIO_B) &= ~0x3f000000;
-
- /* Unset pullup on PD_TX_EN/SPI_NSS */
- gpio_set_flags(GPIO_PD_TX_EN, GPIO_OUT_LOW);
-
- /* Turn off debug mux */
- tsu6721_set_pins(0);
-
- /* Disable manual switching */
- rv = tsu6721_mux(TSU6721_MUX_AUTO);
- if (rv)
- return rv;
-
- /* Disable power on USB_C_5V_EN pin */
- gpio_set_level(GPIO_USB_C_5V_EN, 0);
-
- /* Restore BCDv1.2 timer to 1.6s */
- tsu6721_write(TSU6721_REG_TIMER, 0x15);
-
- /* Restore the USB PD task */
- pd_set_suspend(0, 0);
- }
-
- return rv;
-}
-
-static int command_debug(int argc, char **argv)
-{
- char *e;
- int v;
-
- if (argc < 2)
- return EC_ERROR_PARAM_COUNT;
-
- v = strtoi(argv[1], &e, 0);
- if (*e)
- return EC_ERROR_PARAM1;
-
- ccprintf("Setting debug: %d...\n", v);
- board_set_debug(v);
-
- return EC_SUCCESS;
-}
-DECLARE_CONSOLE_COMMAND(debugset, command_debug, NULL, "Set debug mode", NULL);
-
-void board_set_usb_mux(int port, enum typec_mux mux,
- enum usb_switch usb, int polarity)
-{
- /* reset everything */
- gpio_set_level(GPIO_SS1_EN_L, 1);
- gpio_set_level(GPIO_SS2_EN_L, 1);
- gpio_set_level(GPIO_DP_MODE, 0);
- gpio_set_level(GPIO_SS1_USB_MODE_L, 1);
- gpio_set_level(GPIO_SS2_USB_MODE_L, 1);
-
- if (mux == TYPEC_MUX_NONE)
- /* everything is already disabled, we can return */
- return;
-
- if (mux == TYPEC_MUX_USB || mux == TYPEC_MUX_DOCK) {
- /* USB 3.0 uses 2 superspeed lanes */
- gpio_set_level(polarity ? GPIO_SS2_USB_MODE_L :
- GPIO_SS1_USB_MODE_L, 0);
- }
-
- if (mux == TYPEC_MUX_DP || mux == TYPEC_MUX_DOCK) {
- /* DP uses available superspeed lanes (x2 or x4) */
- gpio_set_level(GPIO_DP_POLARITY_L, !polarity);
- gpio_set_level(GPIO_DP_MODE, 1);
- }
- /* switch on superspeed lanes */
- gpio_set_level(GPIO_SS1_EN_L, 0);
- gpio_set_level(GPIO_SS2_EN_L, 0);
-}
-
-int board_get_usb_mux(int port, const char **dp_str, const char **usb_str)
-{
- int has_ss = !gpio_get_level(GPIO_SS1_EN_L);
- int has_usb = !gpio_get_level(GPIO_SS1_USB_MODE_L) ||
- !gpio_get_level(GPIO_SS2_USB_MODE_L);
- int has_dp = !!gpio_get_level(GPIO_DP_MODE);
-
- if (has_dp)
- *dp_str = gpio_get_level(GPIO_DP_POLARITY_L) ? "DP1" : "DP2";
- else
- *dp_str = NULL;
-
- if (has_usb)
- *usb_str = gpio_get_level(GPIO_SS1_USB_MODE_L) ?
- "USB2" : "USB1";
- else
- *usb_str = NULL;
-
- return has_ss;
-}
diff --git a/board/fruitpie/board.h b/board/fruitpie/board.h
deleted file mode 100644
index 429a0a110c..0000000000
--- a/board/fruitpie/board.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Fruitpie board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* 48 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 48000000
-
-/* the UART console is on USART2 (PA14/PA15) */
-#undef CONFIG_UART_CONSOLE
-#define CONFIG_UART_CONSOLE 2
-
-/* Optional features */
-#define CONFIG_STM_HWTIMER32
-#define CONFIG_USB
-#define CONFIG_USB_POWER_DELIVERY
-#define CONFIG_USB_PD_ALT_MODE
-#define CONFIG_USB_PD_ALT_MODE_DFP
-#define CONFIG_USB_PD_CUSTOM_VDM
-#define CONFIG_USB_PD_DUAL_ROLE
-#define CONFIG_USB_PD_INTERNAL_COMP
-#define CONFIG_USB_PD_PORT_COUNT 1
-#define CONFIG_USB_PD_TCPC
-#define CONFIG_USB_PD_TCPM_STUB
-#define CONFIG_USBC_SS_MUX
-#define CONFIG_USBC_VCONN
-#define CONFIG_ADC
-#define CONFIG_HW_CRC
-#define CONFIG_I2C
-#define CONFIG_BATTERY_SMART
-#define CONFIG_USB_SWITCH_TSU6721
-#define CONFIG_SPI_FLASH
-#define CONFIG_SPI_FLASH_SIZE 8388608
-#define CONFIG_SPI_FLASH_W25Q64
-#define CONFIG_SPI_MASTER_PORT 2
-#define CONFIG_SPI_CS_GPIO GPIO_PD_TX_EN
-#undef CONFIG_WATCHDOG_HELP
-#undef CONFIG_LID_SWITCH
-#undef CONFIG_TASK_PROFILING
-
-/* I2C ports configuration */
-#define I2C_PORT_MASTER 1
-#define I2C_PORT_BATTERY I2C_PORT_MASTER
-#define I2C_PORT_CHARGER I2C_PORT_MASTER
-#define I2C_PORT_SLAVE 0
-
-/* Charger configuration */
-#define CONFIG_CHARGER
-#undef CONFIG_CHARGER_V1
-#define CONFIG_CHARGER_BQ24773
-#define CONFIG_CHARGER_SENSE_RESISTOR 5 /* milliOhms */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* milliOhms */
-#define CONFIG_CHARGER_INPUT_CURRENT 512 /* mA */
-#define CONFIG_CHARGER_ILIM_PIN_DISABLED /* external ILIM pin disabled */
-
-/* USB configuration */
-#define CONFIG_USB_PID 0x5009
-/* By default, enable all console messages excepted USB */
-#define CC_DEFAULT (CC_ALL & ~CC_MASK(CC_USB))
-
-/*
- * Allow dangerous commands all the time, since we don't have a write protect
- * switch.
- */
-#define CONFIG_SYSTEM_UNLOCKED
-
-#ifndef __ASSEMBLER__
-
-/*
- * Timeout to wait for TSU6721 to detect power. Set to double the BCD timer.
- */
-#define DEBUG_SWITCH_TIMEOUT_MSEC (1200*MSEC)
-
-/*
- * Used to set GPIO's and clock to SPI module used for debug
- *
- * @param enable Whether to enable or disable debug
- */
-int board_set_debug(int enable);
-
-/* Timer selection */
-#define TIM_CLOCK32 2
-#define TIM_ADC 3
-
-#include "gpio_signal.h"
-
-/* ADC signal */
-enum adc_channel {
- ADC_CH_CC1_PD = 0,
- ADC_CH_CC2_PD,
- /* Number of ADC channels */
- ADC_CH_COUNT
-};
-
-/* USB string indexes */
-enum usb_strings {
- USB_STR_DESC = 0,
- USB_STR_VENDOR,
- USB_STR_PRODUCT,
- USB_STR_VERSION,
-
- USB_STR_COUNT
-};
-
-/* Standard-current Rp */
-#define PD_SRC_VNC PD_SRC_DEF_VNC_MV
-#define PD_SRC_RD_THRESHOLD PD_SRC_DEF_RD_THRESH_MV
-
-/* start as a sink in case we have no other power supply/battery */
-#define PD_DEFAULT_STATE PD_STATE_SNK_DISCONNECTED
-
-/* delay necessary for the voltage transition on the power supply */
-#define PD_POWER_SUPPLY_TURN_ON_DELAY 50000 /* us */
-#define PD_POWER_SUPPLY_TURN_OFF_DELAY 50000 /* us */
-
-/* Define typical operating power and max power */
-#define PD_OPERATING_POWER_MW 1000
-#define PD_MAX_POWER_MW 60000
-#define PD_MAX_CURRENT_MA 3000
-#define PD_MAX_VOLTAGE_MV 20000
-
-#endif /* !__ASSEMBLER__ */
-
-/* USB interface indexes (use define rather than enum to expand them) */
-#define USB_IFACE_MS 0
-#define USB_IFACE_COUNT 1
-
-/* USB endpoint indexes (use define rather than enum to expand them) */
-#define USB_EP_CONTROL 0
-#define USB_EP_MS_TX 1
-#define USB_EP_MS_RX 2
-#define USB_EP_COUNT 3
-
-#endif /* __BOARD_H */
diff --git a/board/fruitpie/build.mk b/board/fruitpie/build.mk
deleted file mode 100644
index 92bb84b52c..0000000000
--- a/board/fruitpie/build.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- makefile -*-
-# Copyright (c) 2014 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32F072B
-CHIP:=stm32
-CHIP_FAMILY:=stm32f0
-CHIP_VARIANT:=stm32f07x
-
-board-y=board.o
-board-$(CONFIG_USB_POWER_DELIVERY)+=usb_pd_policy.o
diff --git a/board/fruitpie/ec.tasklist b/board/fruitpie/ec.tasklist
deleted file mode 100644
index a8250d57c1..0000000000
--- a/board/fruitpie/ec.tasklist
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(PD, pd_task, NULL, TASK_STACK_SIZE)
diff --git a/board/fruitpie/gpio.inc b/board/fruitpie/gpio.inc
deleted file mode 100644
index f51de23f87..0000000000
--- a/board/fruitpie/gpio.inc
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-GPIO_INT(VBUS_WAKE, PIN(B, 5), GPIO_INT_BOTH, vbus_event)
-GPIO_INT(MASTER_I2C_INT_L, PIN(C, 13), GPIO_INT_FALLING, tsu_event)
-GPIO_INT(ALERT_L, PIN(A, 2), GPIO_INT_FALLING, rohm_event)
-
-/* PD RX/TX */
-GPIO(USB_CC1_PD, PIN(A, 0), GPIO_ANALOG)
-GPIO(PD_REF1, PIN(A, 1), GPIO_ANALOG)
-GPIO(PD_REF2, PIN(A, 3), GPIO_ANALOG)
-GPIO(USB_CC2_PD, PIN(A, 4), GPIO_ANALOG)
-GPIO(PD_CLK_OUT, PIN(B, 9), GPIO_OUT_LOW)
-GPIO(PD_TX_EN, PIN(B, 12), GPIO_OUT_LOW)
-GPIO(PD_TX_DATA, PIN(B, 14), GPIO_OUT_LOW)
-#if 0
-GPIO(PD_CLK_IN, PIN(B, 13), GPIO_OUT_LOW)
-#endif
-
-/* Power and muxes control */
-GPIO(PP5000_EN, PIN(A, 5), GPIO_OUT_HIGH)
-GPIO(CC_HOST, PIN(A, 6), GPIO_OUT_LOW)
-GPIO(CHARGE_EN_L, PIN(A, 8), GPIO_OUT_LOW)
-GPIO(USB_C_5V_EN, PIN(A, 10), GPIO_OUT_LOW)
-GPIO(VCONN1_EN, PIN(B, 15), GPIO_OUT_LOW)
-GPIO(VCONN2_EN, PIN(C, 14), GPIO_OUT_LOW)
-GPIO(SS1_EN_L, PIN(A, 9), GPIO_OUT_HIGH)
-GPIO(SS2_EN_L, PIN(B, 4), GPIO_OUT_HIGH)
-GPIO(SS2_USB_MODE_L, PIN(B, 3), GPIO_OUT_HIGH)
-GPIO(SS1_USB_MODE_L, PIN(B, 8), GPIO_OUT_HIGH)
-GPIO(DP_MODE, PIN(C, 15), GPIO_OUT_LOW)
-GPIO(DP_POLARITY_L, PIN(A, 7), GPIO_OUT_HIGH)
-
-/* Not used : no host on that bus */
-GPIO(SLAVE_I2C_INT_L, PIN(B, 2), GPIO_ODR_HIGH)
-
-/* Alternate functions */
-#if 0
-GPIO(USB_DM, PIN(A, 11), GPIO_ANALOG)
-GPIO(USB_DP, PIN(A, 12), GPIO_ANALOG)
-GPIO(UART_TX, PIN(A, 14), GPIO_OUT_LOW)
-GPIO(UART_RX, PIN(A, 15), GPIO_OUT_LOW)
-#endif
-/*
- * I2C pins should be configured as inputs until I2C module is
- * initialized. This will avoid driving the lines unintentionally.
- */
-GPIO(SLAVE_I2C_SCL, PIN(B, 6), GPIO_INPUT)
-GPIO(SLAVE_I2C_SDA, PIN(B, 7), GPIO_INPUT)
-GPIO(MASTER_I2C_SCL, PIN(B, 10), GPIO_INPUT)
-GPIO(MASTER_I2C_SDA, PIN(B, 11), GPIO_INPUT)
-
-/* Rohm BD92104 connections */
-GPIO(USBPD_RST, PIN(B, 0), GPIO_OUT_LOW)
-GPIO(USBPD_FORCE_OTG, PIN(B, 1), GPIO_OUT_LOW)
-GPIO(USBPD_VIN_EN_L, PIN(F, 0), GPIO_OUT_HIGH)
-
-/* Test points */
-GPIO(TP9, PIN(A, 13), GPIO_ODR_HIGH)
-GPIO(TP11, PIN(F, 1), GPIO_ODR_HIGH)
-
-/* Unimplemented signals which we need to emulate for now */
-UNIMPLEMENTED(ENTERING_RW)
-UNIMPLEMENTED(WP_L)
-
-ALTERNATE(PIN_MASK(B, 0x2000), 0, MODULE_USB_PD, 0) /* SPI2: SCK(PB13) */
-ALTERNATE(PIN_MASK(B, 0x0200), 2, MODULE_USB_PD, 0) /* TIM17_CH1: PB9) */
-ALTERNATE(PIN_MASK(A, 0xC000), 1, MODULE_UART, 0) /* USART2: PA14/PA15 */
-ALTERNATE(PIN_MASK(B, 0x0cc0), 1, MODULE_I2C, 0) /* I2C SLAVE:PB6/7 MASTER:PB10/11 */
diff --git a/board/fruitpie/usb_pd_config.h b/board/fruitpie/usb_pd_config.h
deleted file mode 100644
index e7e81e4e58..0000000000
--- a/board/fruitpie/usb_pd_config.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* USB Power delivery board configuration */
-
-#ifndef __USB_PD_CONFIG_H
-#define __USB_PD_CONFIG_H
-
-/* Timer selection for baseband PD communication */
-#define TIM_CLOCK_PD_TX_C0 17
-#define TIM_CLOCK_PD_RX_C0 1
-
-#define TIM_CLOCK_PD_TX(p) TIM_CLOCK_PD_TX_C0
-#define TIM_CLOCK_PD_RX(p) TIM_CLOCK_PD_RX_C0
-
-/* Timer channel */
-#define TIM_RX_CCR_C0 1
-#define TIM_TX_CCR_C0 1
-
-/* RX timer capture/compare register */
-#define TIM_CCR_C0 (&STM32_TIM_CCRx(TIM_CLOCK_PD_RX_C0, TIM_RX_CCR_C0))
-#define TIM_RX_CCR_REG(p) TIM_CCR_C0
-
-/* TX and RX timer register */
-#define TIM_REG_TX_C0 (STM32_TIM_BASE(TIM_CLOCK_PD_TX_C0))
-#define TIM_REG_RX_C0 (STM32_TIM_BASE(TIM_CLOCK_PD_RX_C0))
-#define TIM_REG_TX(p) TIM_REG_TX_C0
-#define TIM_REG_RX(p) TIM_REG_RX_C0
-
-/* use the hardware accelerator for CRC */
-#define CONFIG_HW_CRC
-
-/* TX is using SPI2 on PB12-14 */
-#define SPI_REGS(p) STM32_SPI2_REGS
-
-static inline void spi_enable_clock(int port)
-{
- STM32_RCC_APB1ENR |= STM32_RCC_PB1_SPI2;
- STM32_SYSCFG_CFGR1 |= 1 << 24; /* Remap SPI2 DMA */
-}
-
-#define DMAC_SPI_TX(p) STM32_DMAC_CH7
-
-/* RX is using COMP1 triggering TIM1 CH1 */
-#define CMP1OUTSEL STM32_COMP_CMP1OUTSEL_TIM1_IC1
-#define CMP2OUTSEL 0
-
-#define TIM_TX_CCR_IDX(p) TIM_TX_CCR_C0
-#define TIM_RX_CCR_IDX(p) TIM_RX_CCR_C0
-#define TIM_CCR_CS 1
-#define EXTI_COMP_MASK(p) (1 << 21)
-#define IRQ_COMP STM32_IRQ_COMP
-/* triggers packet detection on comparator falling edge */
-#define EXTI_XTSR STM32_EXTI_FTSR
-
-#define DMAC_TIM_RX(p) STM32_DMAC_CH2
-
-/* the pins used for communication need to be hi-speed */
-static inline void pd_set_pins_speed(int port)
-{
- /* 40 MHz pin speed on SPI PB12/13/14 */
- STM32_GPIO_OSPEEDR(GPIO_B) |= 0x3f000000;
- /* 40 MHz pin speed on TIM17_CH1 (PB9) */
- STM32_GPIO_OSPEEDR(GPIO_B) |= 0x000C0000;
-}
-
-/* Reset SPI peripheral used for TX */
-static inline void pd_tx_spi_reset(int port)
-{
- /* Reset SPI2 */
- STM32_RCC_APB1RSTR |= (1 << 14);
- STM32_RCC_APB1RSTR &= ~(1 << 14);
-}
-
-/* Drive the CC line from the TX block */
-static inline void pd_tx_enable(int port, int polarity)
-{
- /* TX_DATA on PB14 is now connected to SPI2 */
- gpio_set_alternate_function(GPIO_B, 0x4000, 0);
-
- gpio_set_level(GPIO_PD_TX_EN, 1);
-}
-
-/* Put the TX driver in Hi-Z state */
-static inline void pd_tx_disable(int port, int polarity)
-{
- /* TX_DATA on PB14 is an output low GPIO to disable the FET */
- STM32_GPIO_MODER(GPIO_B) = (STM32_GPIO_MODER(GPIO_B) & ~(3 << (2*14)))
- | (1 << (2*14));
- /*
- * Tri-state the low side after the high side
- * to ensure we are not going above Vnc
- */
- gpio_set_level(GPIO_PD_TX_EN, 0);
-}
-
-/* we know the plug polarity, do the right configuration */
-static inline void pd_select_polarity(int port, int polarity)
-{
- /* use the right comparator non inverted input for COMP1 */
- STM32_COMP_CSR = (STM32_COMP_CSR & ~STM32_COMP_CMP1INSEL_MASK)
- | STM32_COMP_CMP1EN
- | (polarity ? STM32_COMP_CMP1INSEL_INM4
- : STM32_COMP_CMP1INSEL_INM6);
-}
-
-/* Initialize pins used for TX and put them in Hi-Z */
-static inline void pd_tx_init(void)
-{
- gpio_config_module(MODULE_USB_PD, 1);
-}
-
-static inline void pd_set_host_mode(int port, int enable)
-{
- /* We never charging in power source mode */
- if (enable) {
- gpio_set_level(GPIO_CHARGE_EN_L, 1);
- } else {
- /* Kill VBUS power supply */
- gpio_set_level(GPIO_USB_C_5V_EN, 0);
- /* Enable the charging path*/
- gpio_set_level(GPIO_CHARGE_EN_L, 0);
- }
-
- gpio_set_level(GPIO_CC_HOST, enable);
-}
-
-/**
- * Initialize various GPIOs and interfaces to safe state at start of pd_task.
- *
- * These include:
- * VBUS, charge path based on power role.
- * Physical layer CC transmit.
- * VCONNs disabled.
- *
- * @param port USB-C port number
- * @param power_role Power role of device
- */
-static inline void pd_config_init(int port, uint8_t power_role)
-{
- /*
- * Set CC pull resistors, and charge_en and vbus_en GPIOs to match
- * the initial role.
- */
- pd_set_host_mode(port, power_role);
-
- /* Initialize TX pins and put them in Hi-Z */
- pd_tx_init();
-
- /* Reset mux ... for NONE polarity doesn't matter */
- board_set_usb_mux(port, TYPEC_MUX_NONE, USB_SWITCH_DISCONNECT, 0);
-
- gpio_set_level(GPIO_VCONN1_EN, 0);
- gpio_set_level(GPIO_VCONN2_EN, 0);
-}
-
-static inline int pd_adc_read(int port, int cc)
-{
- if (cc == 0)
- return adc_read_channel(ADC_CH_CC1_PD);
- else
- return adc_read_channel(ADC_CH_CC2_PD);
-}
-
-static inline void pd_set_vconn(int port, int polarity, int enable)
-{
- /* Set VCONN on the opposite CC line from the polarity */
- gpio_set_level(polarity ? GPIO_VCONN1_EN :
- GPIO_VCONN2_EN, enable);
-}
-
-#endif /* __USB_PD_CONFIG_H */
diff --git a/board/fruitpie/usb_pd_policy.c b/board/fruitpie/usb_pd_policy.c
deleted file mode 100644
index ff27c46b43..0000000000
--- a/board/fruitpie/usb_pd_policy.c
+++ /dev/null
@@ -1,238 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-#include "charger.h"
-#include "common.h"
-#include "console.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "registers.h"
-#include "system.h"
-#include "task.h"
-#include "timer.h"
-#include "util.h"
-#include "usb_pd.h"
-
-#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args)
-#define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args)
-
-#define PDO_FIXED_FLAGS (PDO_FIXED_EXTERNAL | PDO_FIXED_DUAL_ROLE | \
- PDO_FIXED_DATA_SWAP)
-
-const uint32_t pd_src_pdo[] = {
- PDO_FIXED(5000, 3000, PDO_FIXED_FLAGS),
- PDO_FIXED(12000, 3000, PDO_FIXED_FLAGS),
- PDO_FIXED(20000, 3000, PDO_FIXED_FLAGS),
-};
-const int pd_src_pdo_cnt = ARRAY_SIZE(pd_src_pdo);
-
-const uint32_t pd_snk_pdo[] = {
- PDO_FIXED(5000, 500, PDO_FIXED_FLAGS),
- PDO_BATT(5000, 20000, 15000),
- PDO_VAR(5000, 20000, 3000),
-};
-const int pd_snk_pdo_cnt = ARRAY_SIZE(pd_snk_pdo);
-
-void pd_set_input_current_limit(int port, uint32_t max_ma,
- uint32_t supply_voltage)
-{
- int rv = charger_set_input_current(MAX(max_ma,
- CONFIG_CHARGER_INPUT_CURRENT));
- if (rv < 0)
- CPRINTS("Failed to set input current limit for PD");
-}
-
-int pd_is_valid_input_voltage(int mv)
-{
- /* Any voltage less than the max is allowed */
- return 1;
-}
-
-int pd_check_requested_voltage(uint32_t rdo)
-{
- int max_ma = rdo & 0x3FF;
- int op_ma = (rdo >> 10) & 0x3FF;
- int idx = rdo >> 28;
- uint32_t pdo;
- uint32_t pdo_ma;
-
- if (!idx || idx > pd_src_pdo_cnt)
- return EC_ERROR_INVAL; /* Invalid index */
-
- /* check current ... */
- pdo = pd_src_pdo[idx - 1];
- pdo_ma = (pdo & 0x3ff);
- if (op_ma > pdo_ma)
- return EC_ERROR_INVAL; /* too much op current */
- if (max_ma > pdo_ma)
- return EC_ERROR_INVAL; /* too much max current */
-
- CPRINTF("Requested %d V %d mA (for %d/%d mA)\n",
- ((pdo >> 10) & 0x3ff) * 50, (pdo & 0x3ff) * 10,
- ((rdo >> 10) & 0x3ff) * 10, (rdo & 0x3ff) * 10);
-
- return EC_SUCCESS;
-}
-
-void pd_transition_voltage(int idx)
-{
- /* No-operation: we are always 5V */
-}
-
-int pd_set_power_supply_ready(int port)
-{
- /* provide VBUS */
- gpio_set_level(GPIO_USB_C_5V_EN, 1);
-
- return EC_SUCCESS; /* we are ready */
-}
-
-void pd_power_supply_reset(int port)
-{
- /* Kill VBUS */
- gpio_set_level(GPIO_USB_C_5V_EN, 0);
-}
-
-int pd_snk_is_vbus_provided(int port)
-{
- return gpio_get_level(GPIO_VBUS_WAKE);
-}
-
-int pd_board_checks(void)
-{
- return EC_SUCCESS;
-}
-
-int pd_check_power_swap(int port)
-{
- /* Always allow power swap */
- return 1;
-}
-
-int pd_check_data_swap(int port, int data_role)
-{
- /* Always allow data swap */
- return 1;
-}
-
-void pd_execute_data_swap(int port, int data_role)
-{
- /* Do nothing */
-}
-
-void pd_check_pr_role(int port, int pr_role, int flags)
-{
-}
-
-void pd_check_dr_role(int port, int dr_role, int flags)
-{
-}
-/* ----------------- Vendor Defined Messages ------------------ */
-const struct svdm_response svdm_rsp = {
- .identity = NULL,
- .svids = NULL,
- .modes = NULL,
-};
-
-int pd_custom_vdm(int port, int cnt, uint32_t *payload,
- uint32_t **rpayload)
-{
- int cmd = PD_VDO_CMD(payload[0]);
- uint16_t dev_id = 0;
-
- /* make sure we have some payload */
- if (cnt == 0)
- return 0;
-
- switch (cmd) {
- case VDO_CMD_VERSION:
- /* guarantee last byte of payload is null character */
- *(payload + cnt - 1) = 0;
- CPRINTF("version: %s\n", (char *)(payload+1));
- break;
- case VDO_CMD_READ_INFO:
- case VDO_CMD_SEND_INFO:
- /* if last word is present, it contains lots of info */
- if (cnt == 7) {
- dev_id = VDO_INFO_HW_DEV_ID(payload[6]);
- CPRINTF("DevId:%d.%d SW:%d RW:%d\n",
- HW_DEV_ID_MAJ(dev_id),
- HW_DEV_ID_MIN(dev_id),
- VDO_INFO_SW_DBG_VER(payload[6]),
- VDO_INFO_IS_RW(payload[6]));
- }
- /* copy hash */
- if (cnt >= 6)
- pd_dev_store_rw_hash(port, dev_id, payload + 1,
- SYSTEM_IMAGE_UNKNOWN);
-
- break;
- }
-
- return 0;
-}
-
-static int svdm_enter_dp_mode(int port, uint32_t mode_caps)
-{
- /* Only enter mode if device is DFP_D capable */
- if (mode_caps & MODE_DP_SNK) {
- CPRINTF("Entering mode w/ vdo = %08x\n", mode_caps);
- return 0;
- }
-
- return -1;
-}
-
-static int dp_on;
-
-static int svdm_dp_status(int port, uint32_t *payload)
-{
- payload[0] = VDO(USB_SID_DISPLAYPORT, 1, CMD_DP_STATUS);
- payload[1] = VDO_DP_STATUS(0, /* HPD IRQ ... not applicable */
- 0, /* HPD level ... not applicable */
- 0, /* exit DP? ... no */
- 0, /* usb mode? ... no */
- 0, /* multi-function ... no */
- dp_on,
- 0, /* power low? ... no */
- dp_on);
- return 2;
-};
-
-static int svdm_dp_config(int port, uint32_t *payload)
-{
- board_set_usb_mux(port, TYPEC_MUX_DP, USB_SWITCH_CONNECT,
- pd_get_polarity(port));
- dp_on = 1;
- payload[0] = VDO(USB_SID_DISPLAYPORT, 1, CMD_DP_CONFIG);
- payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* sink pins */
- MODE_DP_PIN_E, /* src pins */
- 1, /* DPv1.3 signaling */
- 2); /* UFP connected */
- return 2;
-};
-
-static int svdm_dp_attention(int port, uint32_t *payload)
-{
- return 1; /* ack */
-}
-
-static void svdm_exit_dp_mode(int port)
-{
- CPRINTF("Exiting mode\n");
- /* return to safe config */
-}
-
-const struct svdm_amode_fx supported_modes[] = {
- {
- .svid = USB_SID_DISPLAYPORT,
- .enter = &svdm_enter_dp_mode,
- .status = &svdm_dp_status,
- .config = &svdm_dp_config,
- .attention = &svdm_dp_attention,
- .exit = &svdm_exit_dp_mode,
- },
-};
-const int supported_modes_cnt = ARRAY_SIZE(supported_modes);
diff --git a/board/jerry/Makefile b/board/jerry/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/jerry/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/jerry/battery.c b/board/jerry/battery.c
deleted file mode 100644
index 02b491443f..0000000000
--- a/board/jerry/battery.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (c) 2012 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.
- *
- * Battery pack vendor provided charging profile
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-#include "console.h"
-#include "gpio.h"
-#include "host_command.h"
-#include "util.h"
-
-/* Shutdown mode parameter to write to manufacturer access register */
-#define SB_SHUTDOWN_DATA 0x0010
-
-static const struct battery_info info = {
- .voltage_max = 8400, /* mV */
- .voltage_normal = 7400,
- .voltage_min = 6000,
- .precharge_current = 256, /* mA */
- .start_charging_min_c = 0,
- .start_charging_max_c = 45,
- .charging_min_c = 0,
- .charging_max_c = 45,
- .discharging_min_c = 0,
- .discharging_max_c = 60,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-static int cutoff(void)
-{
- int rv;
-
- /* Ship mode command must be sent twice to take effect */
- rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-
- if (rv != EC_SUCCESS)
- return rv;
-
- return sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-}
-
-
-int board_cut_off_battery(void)
-{
- return cutoff();
-}
-
diff --git a/board/jerry/board.c b/board/jerry/board.c
deleted file mode 100644
index a91a25c6a4..0000000000
--- a/board/jerry/board.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Veyron board-specific configuration */
-
-#include "battery.h"
-#include "chipset.h"
-#include "common.h"
-#include "extpower.h"
-#include "gpio.h"
-#include "i2c.h"
-#include "keyboard_raw.h"
-#include "lid_switch.h"
-#include "power.h"
-#include "power_button.h"
-#include "power.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "registers.h"
-#include "spi.h"
-#include "task.h"
-#include "util.h"
-#include "timer.h"
-#include "charger.h"
-
-#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-#define GPIO_KB_OUTPUT GPIO_ODR_HIGH
-
-#include "gpio_list.h"
-
-
-/* power signal list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {
- {GPIO_SOC_POWER_GOOD, 1, "POWER_GOOD"},
- {GPIO_SUSPEND_L, 1, "SUSPEND#_ASSERTED"},
-};
-BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"master", I2C_PORT_MASTER, 100},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {STM32_TIM(2), STM32_TIM_CH(3),
- PWM_CONFIG_ACTIVE_LOW},
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-/**
- * Discharge battery when on AC power for factory test.
- */
-int board_discharge_on_ac(int enable)
-{
- return charger_discharge_on_ac(enable);
-}
-
-void board_config_pre_init(void)
-{
- /* enable SYSCFG clock */
- STM32_RCC_APB2ENR |= 1 << 0;
-
- /* Remap USART DMA to match the USART driver */
- /*
- * the DMA mapping is :
- * Chan 2 : TIM1_CH1
- * Chan 3 : SPI1_TX
- * Chan 4 : USART1_TX
- * Chan 5 : USART1_RX
- */
- STM32_SYSCFG_CFGR1 |= (1 << 9) | (1 << 10); /* Remap USART1 RX/TX DMA */
-}
diff --git a/board/jerry/board.h b/board/jerry/board.h
deleted file mode 100644
index 6ba79dbe1b..0000000000
--- a/board/jerry/board.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Veyron board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* Optional features */
-#define CONFIG_AP_HANG_DETECT
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BOARD_PRE_INIT
-#define CONFIG_CHARGER
-#define CONFIG_CHARGER_BQ24715
-#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_V2
-#define CONFIG_CHIPSET_ROCKCHIP
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_FORCE_CONSOLE_RESUME
-#define CONFIG_HOST_COMMAND_STATUS
-#define CONFIG_I2C
-#define CONFIG_KEYBOARD_COL2_INVERTED
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
-#define CONFIG_LED_COMMON
-#define CONFIG_LED_POLICY_STD
-#define CONFIG_LED_BAT_ACTIVE_LOW
-#define CONFIG_LED_POWER_ACTIVE_LOW
-#define CONFIG_LOW_POWER_IDLE
-#define CONFIG_LOW_POWER_S0
-#define CONFIG_POWER_BUTTON
-#define CONFIG_POWER_BUTTON_ACTIVE_STATE 1
-#define CONFIG_POWER_COMMON
-#define CONFIG_PWM
-#define CONFIG_SPI
-#define CONFIG_STM_HWTIMER32
-#define CONFIG_UART_RX_DMA
-#define CONFIG_VBOOT_HASH
-#undef CONFIG_WATCHDOG_HELP
-
-#define CONFIG_HIBERNATE_WAKEUP_PINS (STM32_PWR_CSR_EWUP1 | STM32_PWR_CSR_EWUP6)
-
-#ifndef __ASSEMBLER__
-
-/* 48 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 48000000
-
-/* Keyboard output port list */
-#define KB_OUT_PORT_LIST GPIO_A, GPIO_B, GPIO_C
-
-/* Single I2C port, where the EC is the master. */
-#define I2C_PORT_MASTER 0
-#define I2C_PORT_BATTERY I2C_PORT_MASTER
-#define I2C_PORT_CHARGER I2C_PORT_MASTER
-
-/* Timer selection */
-#define TIM_CLOCK32 2
-#define TIM_WATCHDOG 4
-
-#include "gpio_signal.h"
-
-enum power_signal {
- RK_POWER_GOOD = 0,
- RK_SUSPEND_ASSERTED,
- /* Number of power signals */
- POWER_SIGNAL_COUNT
-};
-
-enum pwm_channel {
- PWM_CH_POWER_LED = 0,
- /* Number of PWM channels */
- PWM_CH_COUNT
-};
-
-/* Charger module */
-#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 /* Input sensor resistor, mOhm */
-/* Input current limit for 45W AC adapter:
- * 45W/19V*85%=2013mA, choose the closest charger setting = 2048mA
- */
-#define CONFIG_CHARGER_INPUT_CURRENT 2048 /* mA, based on Link HW design */
-#define CONFIG_CHARGER_CURRENT_LIMIT 3000 /* PL102 inductor 3.0A(3.8A) */
-
-/* Discharge battery when on AC power for factory test. */
-int board_discharge_on_ac(int enable);
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/jerry/build.mk b/board/jerry/build.mk
deleted file mode 100644
index e9b9999094..0000000000
--- a/board/jerry/build.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- makefile -*-
-# Copyright (c) 2014 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32F071RB
-CHIP:=stm32
-CHIP_FAMILY:=stm32f0
-CHIP_VARIANT:=stm32f07x
-
-board-y=board.o battery.o
diff --git a/board/jerry/ec.tasklist b/board/jerry/ec.tasklist
deleted file mode 100644
index 318cfe2553..0000000000
--- a/board/jerry/ec.tasklist
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK(n, r, d, s) where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/jerry/gpio.inc b/board/jerry/gpio.inc
deleted file mode 100644
index f334dfcf83..0000000000
--- a/board/jerry/gpio.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(POWER_BUTTON_L, PIN(B, 5), GPIO_INT_BOTH, power_button_interrupt) /* wk6 */ /* active high, the name is for compatibility with existing code */
-GPIO_INT(SOC_POWER_GOOD, PIN(A, 3), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(LID_OPEN, PIN(C, 13), GPIO_INT_BOTH, lid_interrupt)
-GPIO_INT(SUSPEND_L, PIN(C, 7), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SPI1_NSS, PIN(A, 4), GPIO_INT_BOTH, spi_event)
-GPIO_INT(AC_PRESENT, PIN(C, 6), GPIO_INT_BOTH | GPIO_PULL_UP, extpower_interrupt)
-
-/* Keyboard inputs */
-GPIO_INT(KB_IN00, PIN(C, 8), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN01, PIN(C, 9), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN02, PIN(C, 10), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN03, PIN(C, 11), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN04, PIN(C, 12), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN05, PIN(C, 14), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN06, PIN(C, 15), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN07, PIN(D, 2), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-
-/* Other inputs */
-GPIO(EC_WAKE, PIN(A, 0), GPIO_INPUT | GPIO_PULL_DOWN) /* wk1 */
-GPIO(WP_L, PIN(B, 4), GPIO_INPUT)
-
-/* Outputs */
-GPIO(BAT_LED_RED, PIN(B, 11), GPIO_OUT_HIGH)
-GPIO(BAT_LED_GREEN, PIN(A, 11), GPIO_OUT_HIGH)
-GPIO(EC_BL_OVERRIDE, PIN(F, 1), GPIO_OUT_LOW)
-GPIO(EC_INT, PIN(B, 9), GPIO_OUT_LOW)
-GPIO(ENTERING_RW, PIN(F, 0), GPIO_OUT_LOW)
-GPIO(I2C1_SCL, PIN(B, 6), GPIO_ODR_HIGH)
-GPIO(I2C1_SDA, PIN(B, 7), GPIO_ODR_HIGH)
-GPIO(KB_OUT00, PIN(B, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT01, PIN(B, 8), GPIO_KB_OUTPUT)
-GPIO(KB_OUT02, PIN(B, 12), GPIO_OUT_LOW) /* Inverted from silegro */
-GPIO(KB_OUT03, PIN(B, 13), GPIO_KB_OUTPUT)
-GPIO(KB_OUT04, PIN(B, 14), GPIO_KB_OUTPUT)
-GPIO(KB_OUT05, PIN(B, 15), GPIO_KB_OUTPUT)
-GPIO(KB_OUT06, PIN(C, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT07, PIN(C, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT08, PIN(C, 2), GPIO_KB_OUTPUT)
-GPIO(KB_OUT09, PIN(B, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT10, PIN(C, 5), GPIO_KB_OUTPUT)
-GPIO(KB_OUT11, PIN(C, 4), GPIO_KB_OUTPUT)
-GPIO(KB_OUT12, PIN(A, 13), GPIO_KB_OUTPUT)
-GPIO(POWER_LED, PIN(A, 2), GPIO_OUT_HIGH)
-GPIO(PMIC_PWRON, PIN(A, 12), GPIO_OUT_LOW)
-GPIO(PMIC_RESET, PIN(B, 3), GPIO_OUT_LOW)
-GPIO(PMIC_SOURCE_PWREN, PIN(B, 10), GPIO_OUT_LOW)
-GPIO(PMIC_WARM_RESET_L, PIN(C, 3), GPIO_ODR_HIGH)
-
-ALTERNATE(PIN_MASK(A, 0x00f0), 0, MODULE_SPI, 0)
-ALTERNATE(PIN_MASK(A, 0x0600), 1, MODULE_UART, 0)
-ALTERNATE(PIN_MASK(B, 0x00c0), 1, MODULE_I2C, 0)
diff --git a/board/keyborg/Makefile b/board/keyborg/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/keyborg/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/keyborg/board.c b/board/keyborg/board.c
deleted file mode 100644
index e5491a90f4..0000000000
--- a/board/keyborg/board.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Keyborg board-specific configuration */
-
-#include "common.h"
-#include "cpu.h"
-#include "debug.h"
-#include "master_slave.h"
-#include "registers.h"
-#include "spi_comm.h"
-#include "system.h"
-#include "task.h"
-#include "touch_scan.h"
-#include "util.h"
-#include "version.h"
-
-const struct ts_pin row_pins[] = {
- {TS_GPIO_E, 0}, /* R1 */
- {TS_GPIO_E, 4}, /* R2 */
- {TS_GPIO_E, 8}, /* R3 */
- {TS_GPIO_E, 1}, /* R4 */
- {TS_GPIO_E, 11}, /* R5 */
- {TS_GPIO_E, 12}, /* R6 */
- {TS_GPIO_E, 15}, /* R7 */
- {TS_GPIO_E, 13}, /* R8 */
- {TS_GPIO_D, 3}, /* R9 */
- {TS_GPIO_D, 4}, /* R10 */
- {TS_GPIO_D, 5}, /* R11 */
- {TS_GPIO_D, 0}, /* R12 */
- {TS_GPIO_D, 6}, /* R13 */
- {TS_GPIO_D, 8}, /* R14 */
- {TS_GPIO_D, 11}, /* R15 */
- {TS_GPIO_D, 10}, /* R16 */
- {TS_GPIO_D, 12}, /* R17 */
- {TS_GPIO_D, 13}, /* R18 */
- {TS_GPIO_D, 14}, /* R19 */
- {TS_GPIO_D, 15}, /* R20 */
- {TS_GPIO_C, 8}, /* R21 */
- {TS_GPIO_C, 7}, /* R22 */
- {TS_GPIO_C, 15}, /* R23 */
- {TS_GPIO_E, 6}, /* R24 */
- {TS_GPIO_E, 5}, /* R25 */
- {TS_GPIO_E, 2}, /* R26 */
- {TS_GPIO_E, 3}, /* R27 */
- {TS_GPIO_E, 10}, /* R28 */
- {TS_GPIO_E, 9}, /* R29 */
- {TS_GPIO_E, 14}, /* R30 */
- {TS_GPIO_E, 7}, /* R31 */
- {TS_GPIO_D, 2}, /* R32 */
- {TS_GPIO_D, 7}, /* R33 */
- {TS_GPIO_D, 1}, /* R34 */
- {TS_GPIO_D, 9}, /* R35 */
- {TS_GPIO_C, 5}, /* R36 */
- {TS_GPIO_C, 6}, /* R37 */
- {TS_GPIO_C, 10}, /* R38 */
- {TS_GPIO_C, 13}, /* R39 */
- {TS_GPIO_C, 14}, /* R40 */
- {TS_GPIO_C, 12}, /* R41 */
-};
-BUILD_ASSERT(ARRAY_SIZE(row_pins) == ROW_COUNT);
-
-const struct ts_pin col_pins[] = {
- {TS_GPIO_B, 5}, /* C1 */
- {TS_GPIO_H, 1}, /* C2 */
- {TS_GPIO_H, 0}, /* C3 */
- {TS_GPIO_H, 5}, /* C4 */
- {TS_GPIO_H, 10}, /* C5 */
- {TS_GPIO_H, 6}, /* C6 */
- {TS_GPIO_H, 4}, /* C7 */
- {TS_GPIO_H, 3}, /* C8 */
- {TS_GPIO_H, 9}, /* C9 */
- {TS_GPIO_H, 12}, /* C10 */
- {TS_GPIO_H, 11}, /* C11 */
- {TS_GPIO_H, 15}, /* C12 */
- {TS_GPIO_H, 2}, /* C13 */
- {TS_GPIO_H, 14}, /* C14 */
- {TS_GPIO_G, 5}, /* C15 */
- {TS_GPIO_G, 9}, /* C16 */
- {TS_GPIO_G, 4}, /* C17 */
- {TS_GPIO_G, 15}, /* C18 */
- {TS_GPIO_G, 10}, /* C19 */
- {TS_GPIO_G, 12}, /* C20 */
- {TS_GPIO_G, 0}, /* C21 */
- {TS_GPIO_G, 11}, /* C22 */
- {TS_GPIO_B, 0}, /* C23 */
- {TS_GPIO_G, 2}, /* C24 */
- {TS_GPIO_G, 1}, /* C25 */
- {TS_GPIO_A, 13}, /* C26 */
- {TS_GPIO_A, 14}, /* C27 */
- {TS_GPIO_B, 3}, /* C28 */
- {TS_GPIO_A, 10}, /* Fake C29. C29 is used as UART Tx. */
- {TS_GPIO_B, 8}, /* C30 */
- {TS_GPIO_A, 10}, /* C31 */
- {TS_GPIO_B, 1}, /* C32 */
- {TS_GPIO_G, 13}, /* C33 */
- {TS_GPIO_B, 7}, /* C34 */
- {TS_GPIO_B, 2}, /* C35 */
- {TS_GPIO_G, 14}, /* C36 */
- {TS_GPIO_G, 3}, /* C37 */
- {TS_GPIO_G, 7}, /* C38 */
- {TS_GPIO_H, 13}, /* C39 */
- {TS_GPIO_H, 7}, /* C40 */
- {TS_GPIO_B, 4}, /* C41 */
- {TS_GPIO_H, 8}, /* C42 */
- {TS_GPIO_B, 6}, /* C43 */
- {TS_GPIO_B, 9}, /* C44 */
- {TS_GPIO_I, 10}, /* C45 */
- {TS_GPIO_I, 11}, /* C46 */
- {TS_GPIO_I, 9}, /* C47 */
- {TS_GPIO_G, 8}, /* C48 */
- {TS_GPIO_G, 6}, /* C49 */
- {TS_GPIO_I, 4}, /* C50 */
- {TS_GPIO_I, 3}, /* C51 */
- {TS_GPIO_I, 5}, /* C52 */
- {TS_GPIO_I, 14}, /* C53 */
- {TS_GPIO_I, 12}, /* C54 */
- {TS_GPIO_I, 8}, /* C55 */
- {TS_GPIO_I, 6}, /* C56 */
- {TS_GPIO_I, 15}, /* C57 */
- {TS_GPIO_I, 0}, /* C58 */
- {TS_GPIO_I, 13}, /* C59 */
- {TS_GPIO_I, 7}, /* C60 */
-};
-BUILD_ASSERT(ARRAY_SIZE(col_pins) == COL_COUNT);
-
-static const char *get_version(void)
-{
- /* TODO: refine this when we have RW */
- return version_data.version;
-}
-
-static void low_power(void)
-{
- touch_scan_enable_interrupt();
- master_slave_enable_interrupt();
-
- CPU_SCB_SYSCTRL |= 0x4;
- asm volatile("wfi");
- CPU_SCB_SYSCTRL &= ~0x4;
-
- hardware_clock_init();
-
- touch_scan_disable_interrupt();
- master_slave_disable_interrupt();
- master_slave_wake_other();
-
- /* Wait for the other chip to wake */
- udelay(2 * MSEC);
-
- master_slave_sync(5);
-}
-
-int main(void)
-{
- int i = 0;
- hardware_init();
- touch_scan_init();
- debug_printf("%s starting...\n", get_version());
-
- master_slave_init();
-
- /* We want master SPI_NSS low and slave SPI_NSS high */
- STM32_GPIO_BSRR(GPIO_A) = (1 << (1 + 16)) | (1 << 6);
-
- master_slave_sync(10);
-
- if (master_slave_is_master())
- spi_master_init();
- else
- spi_slave_init();
-
- master_slave_sync(100);
-
- debug_printf("Touch to start...");
- low_power();
- debug_printf("\n");
-
- while (1) {
- i++;
- task_wait_event(SECOND);
- if (master_slave_is_master()) {
- debug_printf("Hello x 50...");
- if (spi_hello_test(50) == EC_SUCCESS)
- debug_printf("Passed\n");
- else
- debug_printf("Failed\n");
- task_wait_event(SECOND);
- debug_printf("Scan...");
- if (touch_scan_full_matrix() == EC_SUCCESS)
- debug_printf("Passed\n");
- else {
- debug_printf("Failed\n");
- task_wait_event(-1);
- }
- }
- }
-}
diff --git a/board/keyborg/board.h b/board/keyborg/board.h
deleted file mode 100644
index 27c48088b6..0000000000
--- a/board/keyborg/board.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Keyborg board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* 48 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 48000000
-
-/* Optional features */
-#define CONFIG_DEBUG_PRINTF
-#define CONFIG_KEYBORG_FAST_SCAN
-#define CONFIG_KEYBORG_SPI_FULL_PACKET
-#undef CONFIG_ADC
-#undef CONFIG_COMMON_GPIO
-#undef CONFIG_COMMON_PANIC_OUTPUT
-#undef CONFIG_COMMON_RUNTIME
-#undef CONFIG_COMMON_TIMER
-#undef CONFIG_CONSOLE_CMDHELP
-#undef CONFIG_DEBUG_EXCEPTIONS
-#undef CONFIG_DEBUG_STACK_OVERFLOW
-#undef CONFIG_FLASH
-#undef CONFIG_FMAP
-#undef CONFIG_LID_SWITCH
-#undef CONFIG_TASK_PROFILING
-#undef CONFIG_WATCHDOG_HELP
-
-/* How the touch data is stored and printed */
-#define CONFIG_ENCODE_SEGMENT
-#undef CONFIG_ENCODE_RAW
-#undef CONFIG_ENCODE_DUMP_PYTHON
-
-#ifndef __ASSEMBLER__
-
-enum gpio_signal;
-
-/* Initialize all useful registers */
-void hardware_init(void);
-
-/* Re-initialize clock */
-void hardware_clock_init(void);
-
-/* On the master, reboot both chips. On the slave, reboot itself. */
-void system_reboot(void);
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/keyborg/build.mk b/board/keyborg/build.mk
deleted file mode 100644
index be53116402..0000000000
--- a/board/keyborg/build.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (c) 2014 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32TS60
-CHIP:=stm32
-CHIP_FAMILY:=stm32f
-CHIP_VARIANT:=stm32ts60
-
-board-y=board.o hardware.o runtime.o master_slave.o spi_comm.o touch_scan.o
-board-$(CONFIG_ENCODE_SEGMENT)+=encode_segment.o
-board-$(CONFIG_ENCODE_RAW)+=encode_raw.o
-board-$(CONFIG_DEBUG_PRINTF)+=debug.o
diff --git a/board/keyborg/debug.c b/board/keyborg/debug.c
deleted file mode 100644
index b750683379..0000000000
--- a/board/keyborg/debug.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* GPIO UART debug printf */
-
-#include "common.h"
-#include "printf.h"
-#include "registers.h"
-#include "timer.h"
-#include "util.h"
-
-#define BAUD 38400
-#define BIT_PERIOD (1000000 / BAUD)
-
-int debug_txchar(void *context, int c)
-{
- int i;
- timestamp_t st;
- int32_t d;
-
- if (c == '\n')
- debug_txchar(context, '\r');
-
- c = (c << 1) | (1 << 9);
- st = get_time();
- for (i = 0; i < 10; ++i) {
- STM32_GPIO_BSRR(GPIO_A) = 1 << ((c & 1) ? 15 : 31);
- d = (int32_t)st.le.lo + BIT_PERIOD * (i + 1) - get_time().le.lo;
- if (d > 0)
- udelay(d);
- c >>= 1;
- }
-
- return 0;
-}
-
-void debug_printf(const char *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- vfnprintf(debug_txchar, NULL, format, args);
- va_end(args);
-}
-
-void panic(const char *msg)
-{
-}
diff --git a/board/keyborg/debug.h b/board/keyborg/debug.h
deleted file mode 100644
index a7ae4bfe8f..0000000000
--- a/board/keyborg/debug.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* GPIO UART debug printf */
-
-#ifndef __BOARD_KEYBORG_DEBUG_H
-#define __BOARD_KEYBORG_DEBUG_H
-
-#ifdef CONFIG_DEBUG_PRINTF
-void debug_printf(const char *format, ...);
-#else
-#define debug_printf(...)
-#endif
-
-#endif /* __BOARD_KEYBORG_DEBUG_H */
diff --git a/board/keyborg/ec.irqlist b/board/keyborg/ec.irqlist
deleted file mode 100644
index 47bf98c21e..0000000000
--- a/board/keyborg/ec.irqlist
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/**
- * List of enabled IRQ. To enable an IRQ, use ENABLE_IRQ(irq_num). Any
- * IRQ that is not listed here is disabled.
- */
-
-ENABLE_IRQ(STM32_IRQ_EXTI0)
-ENABLE_IRQ(STM32_IRQ_EXTI1)
-ENABLE_IRQ(STM32_IRQ_EXTI2)
-ENABLE_IRQ(STM32_IRQ_EXTI3)
-ENABLE_IRQ(STM32_IRQ_TIM2)
diff --git a/board/keyborg/ec.tasklist b/board/keyborg/ec.tasklist
deleted file mode 100644
index e8860b4ebb..0000000000
--- a/board/keyborg/ec.tasklist
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST
diff --git a/board/keyborg/encode.h b/board/keyborg/encode.h
deleted file mode 100644
index b743c388d4..0000000000
--- a/board/keyborg/encode.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Touch data encoding/decoding */
-
-#ifndef __KEYBORG_ENCODE_H
-#define __KEYBORG_ENCODE_H
-
-/* Start encoding a new frame */
-void encode_reset(void);
-
-/* Encode a single column */
-void encode_add_column(const uint8_t *dptr);
-
-/* Decode and print the encoded frame to console */
-void encode_dump_matrix(void);
-
-#endif /* __KEYBORG_ENCODE_H */
diff --git a/board/keyborg/encode_raw.c b/board/keyborg/encode_raw.c
deleted file mode 100644
index cf358edc96..0000000000
--- a/board/keyborg/encode_raw.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Raw touch data recording */
-
-#include "common.h"
-#include "debug.h"
-#include "touch_scan.h"
-#include "util.h"
-
-#define ENC_COL_COUNT 70
-static uint8_t encoded[ENC_COL_COUNT][ROW_COUNT * 2];
-static int encoded_col;
-
-void encode_reset(void)
-{
- encoded_col = 0;
-}
-
-void encode_add_column(const uint8_t *dptr)
-{
- if (encoded_col >= ENC_COL_COUNT)
- return;
- memcpy(encoded[encoded_col], dptr, ROW_COUNT * 2);
- encoded_col++;
-}
-
-void encode_dump_matrix(void)
-{
- int row, col;
-
-#ifdef CONFIG_ENCODE_DUMP_PYTHON
- debug_printf("heat_map = [");
- for (row = 0; row < ROW_COUNT * 2; ++row) {
- debug_printf("[");
- for (col = 0; col < encoded_col; ++col) {
- if (encoded[col][row] < THRESHOLD)
- debug_printf("0,");
- else
- debug_printf("%d,", encoded[col][row]);
- }
- debug_printf("],\n");
- }
- debug_printf("]\n");
-#else
- for (row = 0; row < ROW_COUNT * 2; ++row) {
- for (col = 0; col < encoded_col; ++col) {
- if (encoded[col][row] < THRESHOLD)
- debug_printf(" - ");
- else
- debug_printf("%3d ", encoded[col][row]);
- }
- debug_printf("\n");
- }
-#endif
-}
diff --git a/board/keyborg/encode_segment.c b/board/keyborg/encode_segment.c
deleted file mode 100644
index 49eaec64c9..0000000000
--- a/board/keyborg/encode_segment.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Touch data encoding/decoding */
-
-/*
- * This removes the "whitespace" (i.e. cells below the threshold) and
- * group the remaining active cells into "segments". By only storing
- * the segments, we can fit a single frame in RAM in most cases.
- */
-
-#include "common.h"
-#include "debug.h"
-#include "touch_scan.h"
-#include "util.h"
-
-#define BUF_SIZE 6000
-static uint8_t encoded[BUF_SIZE];
-static int encoded_size;
-
-void encode_reset(void)
-{
- /* Just clear the encoded data */
- encoded_size = 0;
-}
-
-void encode_add_column(const uint8_t *dptr)
-{
- uint8_t *seg_count_ptr;
- int p, p_start;
- uint8_t *eptr = encoded + encoded_size, *e_seg_size;
-
- seg_count_ptr = eptr;
- eptr++;
-
- *seg_count_ptr = 0;
- p = 0;
- while (p < ROW_COUNT * 2) {
- if (dptr[p] < THRESHOLD) {
- ++p;
- continue;
- }
-
- /* Give up on overflow */
- if (eptr + 2 >= encoded + BUF_SIZE)
- return;
-
- /* Save current position */
- *(eptr++) = p;
-
- /* Leave a byte for storing segment size */
- e_seg_size = eptr;
- eptr++;
-
- /* Record segment starting point */
- p_start = p;
-
- /* Save the segment */
- while (p < ROW_COUNT * 2 && dptr[p] >= THRESHOLD) {
- if (eptr >= encoded + BUF_SIZE)
- return;
- *(eptr++) = dptr[p++];
- }
-
- /* Fill in the segment size now that we know it */
- *e_seg_size = p - p_start;
-
- (*seg_count_ptr)++;
- }
-
- /* Update encoded data size now that we're sure it fits */
- encoded_size = eptr - encoded;
-}
-
-void encode_dump_matrix(void)
-{
- uint8_t *dptr;
- int row, col;
- int seg_count;
- int seg;
- int seg_end;
-
- debug_printf("Encoded size = %d\n", encoded_size);
-
-#ifdef CONFIG_ENCODE_DUMP_PYTHON
- debug_printf("heat_map = [");
- dptr = encoded;
- for (col = 0; col < COL_COUNT * 2; ++col) {
- debug_printf("[");
- if (dptr >= encoded + encoded_size) {
- debug_printf("0] * %d,\n", ROW_COUNT * 2);
- continue;
- }
- seg_count = *(dptr++);
- row = 0;
- for (seg = 0; seg < seg_count; ++seg) {
- if (row < *dptr) {
- debug_printf("] + [0] * %d + [", *dptr - row);
- row = *dptr;
- }
- dptr++;
- seg_end = *dptr + row;
- dptr++;
- for (; row < seg_end; ++row, ++dptr)
- debug_printf("%d,", *dptr);
- }
- if (row < ROW_COUNT * 2)
- debug_printf("] + [0] * %d,\n", ROW_COUNT * 2 - row);
- else
- debug_printf("],\n");
- }
- debug_printf("]\n");
-#else
- dptr = encoded;
- for (col = 0; col < COL_COUNT * 2; ++col) {
- if (dptr >= encoded + encoded_size) {
- for (row = 0; row < ROW_COUNT * 2; ++row)
- debug_printf(" - ");
- debug_printf("\n");
- continue;
- }
- seg_count = *(dptr++);
- row = 0;
- for (seg = 0; seg < seg_count; ++seg) {
- while (row < *dptr) {
- debug_printf(" - ");
- row++;
- }
- dptr++;
- seg_end = *dptr + row;
- dptr++;
- for (; row < seg_end; ++row, ++dptr)
- debug_printf("%3d ", *dptr);
- }
- while (row < ROW_COUNT * 2) {
- debug_printf(" - ");
- row++;
- }
- debug_printf("\n");
- }
-#endif
-}
diff --git a/board/keyborg/hardware.c b/board/keyborg/hardware.c
deleted file mode 100644
index 589fa12d5a..0000000000
--- a/board/keyborg/hardware.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Hardware initialization and common functions */
-
-#include "common.h"
-#include "cpu.h"
-#include "registers.h"
-#include "task.h"
-#include "timer.h"
-#include "touch_scan.h"
-#include "util.h"
-
-void hardware_clock_init(void)
-{
- /* Turn on HSE */
- if (!(STM32_RCC_CR & (1 << 17))) {
- /* Enable HSE */
- STM32_RCC_CR |= (1 << 18) | (1 << 16);
- /* Wait for HSE to be ready */
- while (!(STM32_RCC_CR & (1 << 17)))
- ;
- }
-
- /* PLLSRC = HSE/2 = 8MHz, PLLMUL = x6 = 48MHz */
- STM32_RCC_CFGR = 0x00534000;
- /* Enable PLL */
- STM32_RCC_CR |= 1 << 24;
- /* Wait for PLL to be ready */
- while (!(STM32_RCC_CR & (1 << 25)))
- ;
-
- /* switch SYSCLK to PLL */
- STM32_RCC_CFGR = 0x00534002;
- /* wait until the PLL is the clock source */
- while ((STM32_RCC_CFGR & 0xc) != 0x8)
- ;
-}
-
-static void power_init(void)
-{
- /* enable ADC1, ADC2, PMSE, SPI1, GPA-GPI, AFIO */
- STM32_RCC_APB2ENR = 0x0000f7fd;
- /* enable TIM2, TIM3, PWR */
- STM32_RCC_APB1ENR = 0x10000003;
- /* enable DMA, SRAM */
- STM32_RCC_AHBENR = 0x000005;
-}
-
-/* GPIO setting helpers */
-#define OUT(n) (0x1 << ((n & 0x7) * 4))
-#define OUT50(n) (0x3 << ((n & 0x7) * 4))
-#define ANALOG(n) (0x0)
-#define FLOAT(n) (0x4 << ((n & 0x7) * 4))
-#define GP_OD(n) (0x5 << ((n & 0x7) * 4))
-#define AF_PP(n) (0x9 << ((n & 0x7) * 4))
-#define AF_OD(n) (0xd << ((n & 0x7) * 4))
-#define LOW(n) (1 << (n + 16))
-#define HIGH(n) (1 << n)
-#define INT(n) (1 << n)
-
-static void pins_init(void)
-{
- /*
- * Disable JTAG and SWD. We want JTDI for UART Tx and SWD pins for
- * touch scan.
- */
- STM32_GPIO_AFIO_MAPR = (STM32_GPIO_AFIO_MAPR & ~(0x7 << 24))
- | (4 << 24);
-
- /*
- * Initial pin usage:
- * PA0: SPI_NSS - INPUT/INT_FALLING
- * PA1: N_CHG - INPUT
- * PA3: SPI_CLK - INPUT
- * PA4: SPI_MISO - INPUT
- * PA6: CS1 - OUTPUT/HIGH
- * PA7: SPI_MOSI - INPUT
- * PA9: USB_PU - OUTPUT/LOW
- * PA15: UART TX - OUTPUT/HIGH
- * PI1: SYNC1 - OUTPUT/LOW
- * PI2: SYNC2 - OUTPUT/LOW
- */
- STM32_GPIO_CRL(GPIO_A) = FLOAT(0) | FLOAT(1) | FLOAT(3) | FLOAT(4) |
- OUT(6) | FLOAT(7);
- STM32_GPIO_CRH(GPIO_A) = OUT(9) | OUT(15);
- STM32_GPIO_BSRR(GPIO_A) = LOW(1) | HIGH(6) | LOW(9) | HIGH(15);
- STM32_EXTI_FTSR |= INT(0);
-
- STM32_GPIO_CRL(GPIO_I) = OUT(1) | OUT(2);
- STM32_GPIO_BSRR(GPIO_I) = LOW(1) | LOW(2);
-}
-
-static void adc_init(void)
-{
- int id;
-
- for (id = 0; id < 2; ++id) {
- /* Enable ADC clock */
- STM32_RCC_APB2ENR |= (1 << (14 + id));
-
- /* Power on ADC if it's off */
- if (!(STM32_ADC_CR2(id) & (1 << 0))) {
- /* Power on ADC module */
- STM32_ADC_CR2(id) |= (1 << 0); /* ADON */
-
- /* Reset calibration */
- STM32_ADC_CR2(id) |= (1 << 3); /* RSTCAL */
- while (STM32_ADC_CR2(id) & (1 << 3))
- ;
-
- /* A/D Calibrate */
- STM32_ADC_CR2(id) |= (1 << 2); /* CAL */
- while (STM32_ADC_CR2(id) & (1 << 2))
- ;
- }
-
- /* Set right alignment */
- STM32_ADC_CR2(id) &= ~(1 << 11);
-
- /* Set sampling time */
- STM32_ADC_SMPR2(id) = ADC_SMPR_VAL;
-
- /* Select AIN0 */
- STM32_ADC_SQR3(id) &= ~0x1f;
-
- /* Disable DMA */
- STM32_ADC_CR2(id) &= ~(1 << 8);
-
- /* Disable scan mode */
- STM32_ADC_CR1(id) &= ~(1 << 8);
- }
-}
-
-static void timers_init(void)
-{
- STM32_TIM_CR1(3) = 0x0004; /* MSB */
- STM32_TIM_CR1(2) = 0x0004; /* LSB */
-
- STM32_TIM_CR2(3) = 0x0000;
- STM32_TIM_CR2(2) = 0x0020;
-
- STM32_TIM_SMCR(3) = 0x0007 | (1 << 4);
- STM32_TIM_SMCR(2) = 0x0000;
-
- STM32_TIM_ARR(3) = 0xffff;
- STM32_TIM_ARR(2) = 0xffff;
-
- STM32_TIM_PSC(3) = 0;
- STM32_TIM_PSC(2) = CPU_CLOCK / 1000000 - 1;
-
- STM32_TIM_EGR(3) = 0x0001;
- STM32_TIM_EGR(2) = 0x0001;
-
- STM32_TIM_DIER(3) = 0x0001;
- STM32_TIM_DIER(2) = 0x0000;
-
- STM32_TIM_CR1(3) |= 1;
- STM32_TIM_CR1(2) |= 1;
-
- STM32_TIM_CNT(3) = 0;
- STM32_TIM_CNT(2) = 0;
-
- task_enable_irq(STM32_IRQ_TIM3);
- task_enable_irq(STM32_IRQ_TIM2);
-}
-
-static void irq_init(void)
-{
- /* clear all pending interrupts */
- CPU_NVIC_UNPEND(0) = 0xffffffff;
- /* enable global interrupts */
- asm("cpsie i");
-}
-
-static void pmse_init(void)
-{
- /* Use 10K-ohm pull down */
- STM32_PMSE_CR |= (1 << 13);
-}
-
-void hardware_init(void)
-{
- power_init();
- hardware_clock_init();
- pins_init();
- timers_init();
- adc_init();
- irq_init();
- pmse_init();
-}
diff --git a/board/keyborg/master_slave.c b/board/keyborg/master_slave.c
deleted file mode 100644
index c494d24277..0000000000
--- a/board/keyborg/master_slave.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Master/slave identification */
-
-#include "config.h"
-#include "debug.h"
-#include "master_slave.h"
-#include "registers.h"
-#include "task.h"
-#include "timer.h"
-#include "util.h"
-
-#define SYNC1 (1 << 1) /* PI1 */
-#define SYNC2 (1 << 2) /* PI2 */
-
-static int is_master = -1;
-
-int master_slave_is_master(void)
-{
- return is_master;
-}
-
-static int wait_sync_signal(int mask, int v, int timeout_ms)
-{
- uint32_t start = get_time().le.lo;
-
- while ((!!(STM32_GPIO_IDR(GPIO_I) & mask)) != v) {
- if ((get_time().le.lo - start) >= timeout_ms * MSEC)
- return EC_ERROR_TIMEOUT;
- }
- return EC_SUCCESS;
-}
-
-int master_slave_sync_impl(const char *filename, int line, int timeout_ms)
-{
- int err = EC_SUCCESS;
- if (is_master) {
- STM32_GPIO_BSRR(GPIO_I) = SYNC1 << 0;
- if (wait_sync_signal(SYNC2, 1, timeout_ms))
- err = EC_ERROR_TIMEOUT;
- STM32_GPIO_BSRR(GPIO_I) = SYNC1 << 16;
- if (wait_sync_signal(SYNC2, 0, 5))
- err = EC_ERROR_TIMEOUT;
- } else {
- if (wait_sync_signal(SYNC1, 1, timeout_ms))
- err = EC_ERROR_TIMEOUT;
- STM32_GPIO_BSRR(GPIO_I) = SYNC2 << 0;
- if (wait_sync_signal(SYNC1, 0, 5))
- err = EC_ERROR_TIMEOUT;
- STM32_GPIO_BSRR(GPIO_I) = SYNC2 << 16;
- }
- if (err != EC_SUCCESS)
- debug_printf("Sync failed at %s:%d\n", filename, line);
- return err;
-}
-
-void master_slave_enable_interrupt(void)
-{
- if (is_master) {
- /* Interrupt on EXTI2 on port I */
- STM32_EXTI_RTSR |= 1 << 2;
- STM32_AFIO_EXTICR(0) = (STM32_AFIO_EXTICR(0) & ~0xf00) |
- (8 << 8);
- STM32_EXTI_IMR |= 1 << 2;
- task_clear_pending_irq(STM32_IRQ_EXTI2);
- task_enable_irq(STM32_IRQ_EXTI2);
- } else {
- /* Interrupt on EXTI1 on port I */
- STM32_EXTI_RTSR |= 1 << 1;
- STM32_AFIO_EXTICR(0) = (STM32_AFIO_EXTICR(0) & ~0xf0) |
- (8 << 4);
- STM32_EXTI_IMR |= 1 << 1;
- task_clear_pending_irq(STM32_IRQ_EXTI1);
- task_enable_irq(STM32_IRQ_EXTI1);
- }
-}
-
-void master_slave_disable_interrupt(void)
-{
- if (is_master)
- task_disable_irq(STM32_IRQ_EXTI2);
- else
- task_disable_irq(STM32_IRQ_EXTI1);
-}
-
-void master_slave_wake_other(void)
-{
- if (is_master) {
- STM32_GPIO_BSRR(GPIO_I) = SYNC1 << 0;
- udelay(MSEC);
- STM32_GPIO_BSRR(GPIO_I) = SYNC1 << 16;
- } else {
- STM32_GPIO_BSRR(GPIO_I) = SYNC2 << 0;
- udelay(MSEC);
- STM32_GPIO_BSRR(GPIO_I) = SYNC2 << 16;
- }
-}
-
-void master_slave_interrupt(void)
-{
- STM32_EXTI_PR = STM32_EXTI_PR;
-}
-DECLARE_IRQ(STM32_IRQ_EXTI1, master_slave_interrupt, 1);
-DECLARE_IRQ(STM32_IRQ_EXTI2, master_slave_interrupt, 1);
-
-static int master_handshake(void)
-{
- uint32_t val;
- int err;
-
- /* SYNC2 is the sync signal from the slave. Set it to input. */
- val = STM32_GPIO_CRL(GPIO_I);
- val &= ~0x00000f00;
- val |= 0x00000400;
- STM32_GPIO_CRL(GPIO_I) = val;
-
- err = master_slave_sync(1000);
- err |= master_slave_sync(20);
- err |= master_slave_sync(20);
-
- return err;
-}
-
-static int slave_handshake(void)
-{
- uint32_t val;
- int err;
-
- /*
- * N_CHG is used to drive SPI_NSS on the master. Set it to
- * output low.
- */
- val = STM32_GPIO_CRL(GPIO_A);
- val &= ~0x000000f0;
- val |= 0x00000010;
- STM32_GPIO_CRL(GPIO_A) = val;
- STM32_GPIO_BSRR(GPIO_A) = 1 << (1 + 16);
-
- /* SYNC1 is the sync signal from the master. Set it to input. */
- val = STM32_GPIO_CRL(GPIO_I);
- val &= ~0x000000f0;
- val |= 0x00000040;
- STM32_GPIO_CRL(GPIO_I) = val;
-
- err = master_slave_sync(1000);
- err |= master_slave_sync(20);
- err |= master_slave_sync(20);
-
- return err;
-}
-
-static void master_slave_check(void)
-{
- /*
- * Master slave identity check:
- * - Master has USB_PU connected to N_CHG through 1.5K
- * resistor. USB_PU is initially low, so N_CHG is low.
- * - Slave has N_CHG connected to master NSS with a 20K
- * pull-up. Master NSS is initially Hi-Z, so N_CHG is
- * high.
- */
-
- if (STM32_GPIO_IDR(GPIO_A) & (1 << 1) /* N_CHG */) {
- debug_printf("I'm slave\n");
- is_master = 0;
- } else {
- debug_printf("I'm master\n");
- is_master = 1;
- }
-}
-
-int master_slave_init(void)
-{
- int handshake_err;
-
- master_slave_check();
-
- if (is_master)
- handshake_err = master_handshake();
- else
- handshake_err = slave_handshake();
-
- if (handshake_err != EC_SUCCESS)
- debug_printf("handshake error\n");
- else
- debug_printf("handshake done\n");
-
- return handshake_err;
-}
-
diff --git a/board/keyborg/master_slave.h b/board/keyborg/master_slave.h
deleted file mode 100644
index 7312799158..0000000000
--- a/board/keyborg/master_slave.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Master/slave identification */
-
-#ifndef __BOARD_KEYBORG_MASTER_SLAVE_H
-#define __BOARD_KEYBORG_MASTER_SLAVE_H
-
-/**
- * Get the identity of this chip.
- *
- * @return 1 if master; otherwise, 0.
- */
-int master_slave_is_master(void);
-
-/**
- * Synchronize with the other chip. The other chip must also call this
- * function to synchronize.
- *
- * @param timeout_ms Timeout value in millisecond. If the other chip
- * doesn't synchronize within this time, the sync
- * call fails.
- *
- * @return EC_SUCCESS, or non-zero if any error.
- */
-#define master_slave_sync(timeout_ms) \
- master_slave_sync_impl(__FILE__, __LINE__, timeout_ms)
-int master_slave_sync_impl(const char *filename, int line, int timeout_ms);
-
-/**
- * Enable/disable master-slave interrupt. Master-slave interrupt is
- * implemented using SYNC1/SYNC2 signal, so this is assuming the master
- * and the slave are in sync waiting for interrupt.
- */
-void master_slave_enable_interrupt(void);
-void master_slave_disable_interrupt(void);
-
-/* Interrupt the other chip with a 1-ms pulse. */
-void master_slave_wake_other(void);
-
-/**
- * Identify this chip and shake hands with the other chip.
- *
- * @return EC_SUCCESS, or non-zero if any error.
- */
-int master_slave_init(void);
-
-#endif /* __BOARD_KEYBORG_MASTER_SLAVE_H */
diff --git a/board/keyborg/runtime.c b/board/keyborg/runtime.c
deleted file mode 100644
index e86d591172..0000000000
--- a/board/keyborg/runtime.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* tiny substitute of the runtime layer */
-
-#include "common.h"
-#include "cpu.h"
-#include "debug.h"
-#include "master_slave.h"
-#include "registers.h"
-#include "task.h"
-#include "timer.h"
-#include "util.h"
-
-volatile uint32_t last_event;
-
-static uint32_t last_deadline;
-static uint8_t need_wfi;
-
-timestamp_t get_time(void)
-{
- timestamp_t t;
- uint32_t hi, lo;
-
- do {
- hi = STM32_TIM_CNT(3);
- lo = STM32_TIM_CNT(2);
- } while (hi != STM32_TIM_CNT(3));
-
- t.le.lo = (hi << 16) | lo;
- t.le.hi = 0;
-
- return t;
-}
-
-void udelay(unsigned us)
-{
- unsigned t0 = get_time().le.lo;
- while ((get_time().le.lo - t0) < us)
- ;
-}
-
-void task_enable_irq(int irq)
-{
- CPU_NVIC_EN(0) = 1 << irq;
-}
-
-void task_disable_irq(int irq)
-{
- CPU_NVIC_DIS(0) = 1 << irq;
-}
-
-void task_clear_pending_irq(int irq)
-{
- CPU_NVIC_UNPEND(0) = 1 << irq;
-}
-
-uint32_t task_set_event(task_id_t tskid, uint32_t event, int wait)
-{
- last_event = event;
-
- return 0;
-}
-
-void tim2_interrupt(void)
-{
- if (STM32_TIM_CNT(3) == last_deadline >> 16) {
- STM32_TIM_DIER(2) = 0;
- task_clear_pending_irq(STM32_IRQ_TIM2);
- last_event = TASK_EVENT_TIMER;
- need_wfi = 0;
- } else {
- need_wfi = 1;
- }
-}
-DECLARE_IRQ(STM32_IRQ_TIM2, tim2_interrupt, 1);
-
-void __hw_clock_event_set(uint32_t deadline)
-{
- last_deadline = deadline;
- STM32_TIM_CCR1(2) = deadline & 0xffff;
- STM32_TIM_SR(2) = ~2;
- STM32_TIM_DIER(2) |= 2;
-}
-
-uint32_t task_wait_event(int timeout_us)
-{
- uint32_t evt;
-
- /* the event already happened */
- if (last_event || !timeout_us) {
- evt = last_event;
- last_event = 0;
-
- return evt;
- }
-
- /* set timeout on timer */
- if (timeout_us > 0)
- __hw_clock_event_set(get_time().le.lo + timeout_us);
-
- do {
- /* sleep until next interrupt */
- asm volatile("wfi");
- } while (need_wfi);
- STM32_TIM_DIER(2) = 0; /* disable match interrupt */
- evt = last_event;
- last_event = 0;
-
- return evt;
-}
-
-void system_reboot(void)
-{
- if (master_slave_is_master()) {
- /* Ask the slave to reboot as well */
- STM32_GPIO_BSRR(GPIO_A) = 1 << (6 + 16);
- udelay(10 * MSEC); /* The slave reboots in 5 ms */
- }
-
- /* Ask the watchdog to trigger a hard reboot */
- STM32_IWDG_KR = 0x5555;
- STM32_IWDG_RLR = 0x1;
- STM32_IWDG_KR = 0xcccc;
- /* wait for the watchdog */
- while (1)
- ;
-}
-
-/* Unhandled exception panic */
-void exception_panic(void)
-{
- debug_printf("PANIC\n");
- system_reboot();
-}
-
-/* --- stubs --- */
-void __hw_timer_enable_clock(int n, int enable)
-{ /* Done in hardware init */ }
-
-void usleep(unsigned us)
-{ /* Used only as a workaround */ }
diff --git a/board/keyborg/spi_comm.c b/board/keyborg/spi_comm.c
deleted file mode 100644
index 74ad247039..0000000000
--- a/board/keyborg/spi_comm.c
+++ /dev/null
@@ -1,491 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Stantum board-specific SPI module */
-
-#include "common.h"
-#include "debug.h"
-#include "dma.h"
-#include "master_slave.h"
-#include "registers.h"
-#include "spi_comm.h"
-#include "task.h"
-#include "timer.h"
-#include "touch_scan.h"
-#include "util.h"
-
-#define DUMMY_DATA 0xdd
-
-/* DMA channel option */
-static const struct dma_option dma_tx_option = {
- STM32_DMAC_SPI1_TX, (void *)&STM32_SPI1_REGS->dr,
- STM32_DMA_CCR_MSIZE_8_BIT | STM32_DMA_CCR_PSIZE_16_BIT
-};
-
-static const struct dma_option dma_rx_option = {
- STM32_DMAC_SPI1_RX, (void *)&STM32_SPI1_REGS->dr,
- STM32_DMA_CCR_MSIZE_8_BIT | STM32_DMA_CCR_PSIZE_16_BIT
-};
-
-static uint8_t out_msg[SPI_PACKET_MAX_SIZE + 2];
-static uint8_t in_msg[SPI_PACKET_MAX_SIZE];
-
-static stm32_spi_regs_t * const spi = STM32_SPI1_REGS;
-
-static inline int wait_for_signal(uint32_t port, uint32_t mask,
- int value, int timeout_us)
-{
- uint32_t start = get_time().le.lo;
-
- while ((get_time().le.lo - start) < timeout_us) {
- if ((!!(STM32_GPIO_IDR(port) & mask)) == value)
- return EC_SUCCESS;
- }
-
- return EC_ERROR_TIMEOUT;
-}
-
-static volatile uint8_t slave_ready = 1;
-
-static inline int wait_for_slave_ready(int timeout_us)
-{
- uint32_t start = get_time().le.lo;
-
- while ((get_time().le.lo - start) < timeout_us) {
- if (slave_ready) {
- slave_ready = 0; /* Clear for the next event */
- return EC_SUCCESS;
- }
- }
-
- return EC_ERROR_TIMEOUT;
-}
-
-/*****************************************************************************/
-/* Master */
-
-void spi_master_init(void)
-{
- /*
- * CLK: AFIO Push-pull
- * MISO: Input
- * MOSI: AFIO Push-pull
- */
- STM32_GPIO_CRL(GPIO_A) = (STM32_GPIO_CRL(GPIO_A) & 0x0ff00fff) |
- 0xb004b000;
-
- /* Set BR in CR1 */
- spi->cr1 |= STM32_SPI_CR1_BR_DIV4R;
-
- /* Set CPOL and CPHA */
- /* Use default: 0, 0 */
-
- /* Set DFF to 8-bit */
- /* Use default: 8-bit */
-
- /* Configure LSBFIRST */
- /* Use default: MSB first */
-
- /* Set SSOE */
- /* Use default: software control */
-
- /* Enable TX and RX DMA */
- spi->cr2 |= STM32_SPI_CR2_TXDMAEN | STM32_SPI_CR2_RXDMAEN;
-
- /* Set SSM and SSI */
- spi->cr1 |= STM32_SPI_CR1_SSM | STM32_SPI_CR1_SSI;
-
- /* Enable CRC */
- spi->cr1 |= STM32_SPI_CR1_CRCEN;
-
- /* Set MSTR and SPE */
- spi->cr1 |= STM32_SPI_CR1_MSTR | STM32_SPI_CR1_SPE;
-
- /* Enable interrupt on PA0 (GPIO_SPI_NSS) */
- STM32_AFIO_EXTICR(0) &= ~0xF;
- STM32_EXTI_IMR |= (1 << 0);
- task_clear_pending_irq(STM32_IRQ_EXTI0);
- task_enable_irq(STM32_IRQ_EXTI0);
-}
-
-static int spi_master_read_write_byte(uint8_t *in_buf, uint8_t *out_buf, int sz)
-{
- int ret;
-
- dma_start_rx(&dma_rx_option, sz, in_buf);
- dma_prepare_tx(&dma_tx_option, sz, out_buf);
- dma_go(dma_get_channel(STM32_DMAC_SPI1_TX));
- ret = dma_wait(STM32_DMAC_SPI1_TX);
- ret |= dma_wait(STM32_DMAC_SPI1_RX);
-
- dma_disable(STM32_DMAC_SPI1_TX);
- dma_disable(STM32_DMAC_SPI1_RX);
- dma_clear_isr(STM32_DMAC_SPI1_TX);
- dma_clear_isr(STM32_DMAC_SPI1_RX);
-
- return ret;
-}
-
-int spi_master_send_command(struct spi_comm_packet *cmd)
-{
- int ret;
-
- if (cmd->size + 3 > SPI_PACKET_MAX_SIZE)
- return EC_ERROR_OVERFLOW;
-
- /* Wait for SPI_NSS to go low */
- if (wait_for_signal(GPIO_A, 1 << 0, 0, 10 * MSEC))
- return EC_ERROR_TIMEOUT;
-
- /* Set CS1 (slave SPI_NSS) to low */
- STM32_GPIO_BSRR(GPIO_A) = 1 << (6 + 16);
-
- /* Wait for the slave to acknowledge */
- master_slave_sync(5);
-
- /* Clock out the packet size. */
- spi->dr = cmd->size;
- while (!(spi->sr & STM32_SPI_SR_RXNE))
- ;
- ret = spi->dr;
-
- /* Wait for the slave to acknowledge */
- master_slave_sync(5);
-
- /* Clock out command. Don't care about input. */
- ret = spi_master_read_write_byte(in_msg, ((uint8_t *)cmd) + 1,
- cmd->size + SPI_PACKET_HEADER_SIZE - 1);
-
- return ret;
-}
-
-int spi_master_wait_response_async(void)
-{
- wait_for_slave_ready(100 * MSEC);
- if (wait_for_signal(GPIO_A, 1 << 0, 1, 40 * MSEC))
- goto err_wait_resp_async;
-
- /* Discard potential garbage in SPI DR */
- if (spi->sr & STM32_SPI_SR_RXNE)
- in_msg[0] = spi->dr;
-
-#ifdef CONFIG_KEYBORG_SPI_FULL_PACKET
- dma_clear_isr(STM32_DMAC_SPI1_TX);
- dma_clear_isr(STM32_DMAC_SPI1_RX);
- dma_start_rx(&dma_rx_option, SPI_PACKET_MAX_SIZE, in_msg);
- dma_prepare_tx(&dma_tx_option, SPI_PACKET_MAX_SIZE, out_msg);
- dma_go(dma_get_channel(STM32_DMAC_SPI1_TX));
-#else
- /* Get the packet size */
- spi->dr = DUMMY_DATA;
- while (!(spi->sr & STM32_SPI_SR_RXNE))
- ;
- in_msg[0] = spi->dr;
-
- master_slave_sync(5);
-
- dma_clear_isr(STM32_DMAC_SPI1_TX);
- dma_clear_isr(STM32_DMAC_SPI1_RX);
-
- /* Get the rest of the packet*/
- dma_start_rx(&dma_rx_option,
- in_msg[0] + SPI_PACKET_HEADER_SIZE - 1,
- in_msg + 1);
- dma_prepare_tx(&dma_tx_option,
- in_msg[0] + SPI_PACKET_HEADER_SIZE - 1,
- out_msg);
- dma_go(dma_get_channel(STM32_DMAC_SPI1_TX));
-#endif
-
- return EC_SUCCESS;
-err_wait_resp_async:
- /* Set CS1 (slave SPI_NSS) to high */
- STM32_GPIO_BSRR(GPIO_A) = 1 << 6;
- return EC_ERROR_TIMEOUT;
-}
-
-const struct spi_comm_packet *spi_master_wait_response_done(void)
-{
- const struct spi_comm_packet *resp =
- (const struct spi_comm_packet *)in_msg;
-
- if (dma_wait(STM32_DMAC_SPI1_TX) || dma_wait(STM32_DMAC_SPI1_RX)) {
- debug_printf("SPI: Incomplete response\n");
- goto err_wait_response_done;
- }
- if (spi->sr & STM32_SPI_SR_CRCERR) {
- debug_printf("SPI: CRC mismatch\n");
- goto err_wait_response_done;
- }
- if (resp->cmd_sts != EC_SUCCESS) {
- debug_printf("SPI: Slave error\n");
- goto err_wait_response_done;
- }
-
-exit_wait_response_done:
- dma_disable(STM32_DMAC_SPI1_TX);
- dma_disable(STM32_DMAC_SPI1_RX);
- dma_clear_isr(STM32_DMAC_SPI1_TX);
- dma_clear_isr(STM32_DMAC_SPI1_RX);
-
- /* Set CS1 (slave SPI_NSS) to high */
- STM32_GPIO_BSRR(GPIO_A) = 1 << 6;
-
- return resp;
-err_wait_response_done:
- resp = NULL;
- goto exit_wait_response_done;
-}
-
-const struct spi_comm_packet *spi_master_wait_response(void)
-{
- if (spi_master_wait_response_async() != EC_SUCCESS)
- return NULL;
- return spi_master_wait_response_done();
-}
-
-static uint32_t myrnd(void)
-{
- static uint32_t last = 0x1357;
- return last = (last * 8001 + 1);
-}
-
-int spi_hello_test(int iteration)
-{
- int i, j, xv, sz;
- struct spi_comm_packet *cmd = (struct spi_comm_packet *)out_msg;
- const struct spi_comm_packet *resp;
-
- for (i = 0; i < iteration; ++i) {
- xv = myrnd() & 0xff;
- cmd->cmd_sts = TS_CMD_HELLO;
- sz = myrnd() % (sizeof(out_msg) - 10) + 1;
- cmd->size = sz + 2;
- cmd->data[0] = sz;
- cmd->data[1] = xv;
- for (j = 0; j < sz; ++j)
- cmd->data[j + 2] = myrnd() & 0xff;
- if (spi_master_send_command(cmd))
- return EC_ERROR_UNKNOWN;
-
- resp = spi_master_wait_response();
- if (resp == NULL || resp->size != sz)
- return EC_ERROR_UNKNOWN;
- for (j = 0; j < sz; ++j)
- if (cmd->data[j + 2] != resp->data[j])
- return EC_ERROR_UNKNOWN;
- resp = spi_master_wait_response();
- if (resp == NULL || resp->size != sz)
- return EC_ERROR_UNKNOWN;
- for (j = 0; j < sz; ++j)
- if ((cmd->data[j + 2] ^ xv) != resp->data[j])
- return EC_ERROR_UNKNOWN;
- }
-
- return EC_SUCCESS;
-}
-
-/*****************************************************************************/
-/* Slave */
-
-void spi_slave_init(void)
-{
- /*
- * MISO: AFIO Push-pull
- */
- STM32_GPIO_CRL(GPIO_A) = (STM32_GPIO_CRL(GPIO_A) & 0xfff0ffff) |
- 0x000b0000;
-
- /* Set DFF to 8-bit (default) */
-
- /* Set CPOL and CPHA (default) */
-
- /* Configure LSBFIRST (default) */
-
- /* Set SSM and clear SSI */
- spi->cr1 |= STM32_SPI_CR1_SSM;
- spi->cr1 &= ~STM32_SPI_CR1_SSI;
-
- /* Enable RXNE interrupt */
- spi->cr2 |= STM32_SPI_CR2_RXNEIE;
- /*task_enable_irq(STM32_IRQ_SPI1);*/
-
- /* Enable TX and RX DMA */
- spi->cr2 |= STM32_SPI_CR2_TXDMAEN | STM32_SPI_CR2_RXDMAEN;
-
- /* Clear MSTR */
- spi->cr1 &= ~STM32_SPI_CR1_MSTR;
-
- /* Enable CRC */
- spi->cr1 |= STM32_SPI_CR1_CRCEN;
-
- /* Set SPE */
- spi->cr1 |= STM32_SPI_CR1_SPE;
-
- /* Dummy byte to clock out when the next packet comes in */
- spi->dr = DUMMY_DATA;
-
- /* Enable interrupt on PA0 (GPIO_SPI_NSS) */
- STM32_AFIO_EXTICR(0) &= ~0xF;
- STM32_EXTI_IMR |= (1 << 0);
- task_clear_pending_irq(STM32_IRQ_EXTI0);
- task_enable_irq(STM32_IRQ_EXTI0);
-}
-
-int spi_slave_send_response(struct spi_comm_packet *resp)
-{
- int r;
-
- r = spi_slave_send_response_async(resp);
- r |= spi_slave_send_response_flush();
-
- return r;
-}
-
-int spi_slave_send_response_async(struct spi_comm_packet *resp)
-{
- int size = resp->size + SPI_PACKET_HEADER_SIZE;
-
- if (size > SPI_PACKET_MAX_SIZE)
- return EC_ERROR_OVERFLOW;
-
- if (out_msg != (uint8_t *)resp)
- memcpy(out_msg, resp, size);
-
-#ifdef CONFIG_KEYBORG_SPI_FULL_PACKET
- dma_clear_isr(STM32_DMAC_SPI1_TX);
- dma_prepare_tx(&dma_tx_option, SPI_PACKET_MAX_SIZE, out_msg);
- dma_go(dma_get_channel(STM32_DMAC_SPI1_TX));
-
- /* Set N_CHG (master SPI_NSS) to high */
- STM32_GPIO_BSRR(GPIO_A) = 1 << 1;
-#else
- if (spi->sr & STM32_SPI_SR_RXNE)
- in_msg[0] = spi->dr;
- spi->dr = out_msg[0];
-
- /* Set N_CHG (master SPI_NSS) to high */
- STM32_GPIO_BSRR(GPIO_A) = 1 << 1;
-
- while (!(spi->sr & STM32_SPI_SR_RXNE))
- ;
- in_msg[0] = spi->dr;
-
- dma_clear_isr(STM32_DMAC_SPI1_TX);
- dma_prepare_tx(&dma_tx_option, size - 1, out_msg + 1);
- dma_go(dma_get_channel(STM32_DMAC_SPI1_TX));
-
- if (master_slave_sync(5) != EC_SUCCESS)
- return EC_ERROR_UNKNOWN;
-#endif
-
- return EC_SUCCESS;
-}
-
-int spi_slave_send_response_flush(void)
-{
- int ret;
-
- ret = dma_wait(STM32_DMAC_SPI1_TX);
- dma_disable(STM32_DMAC_SPI1_TX);
- dma_clear_isr(STM32_DMAC_SPI1_TX);
-
- /* Set N_CHG (master SPI_NSS) to low */
- STM32_GPIO_BSRR(GPIO_A) = 1 << (1 + 16);
-
- return ret;
-}
-
-static void spi_slave_nack(void)
-{
- struct spi_comm_packet *resp = (struct spi_comm_packet *)out_msg;
-
- resp->cmd_sts = EC_ERROR_UNKNOWN;
- resp->size = 0;
- spi_slave_send_response(resp);
-}
-
-static void spi_slave_hello_back(const struct spi_comm_packet *cmd)
-{
- struct spi_comm_packet *resp = (struct spi_comm_packet *)out_msg;
- uint8_t buf[SPI_PACKET_MAX_SIZE];
- int i, sz;
-
- sz = cmd->data[0];
- memcpy(buf, cmd->data, sz + 2);
-
- resp->cmd_sts = EC_SUCCESS;
- resp->size = sz;
- for (i = 0; i < sz; ++i)
- resp->data[i] = cmd->data[i + 2];
- spi_slave_send_response(resp);
- for (i = 0; i < sz; ++i)
- resp->data[i] = buf[i + 2] ^ buf[1];
- spi_slave_send_response(resp);
-}
-
-static void spi_nss_interrupt(void)
-{
- const struct spi_comm_packet *cmd =
- (const struct spi_comm_packet *)in_msg;
-
- if (master_slave_is_master()) {
- slave_ready = 1;
- return;
- }
-
- if (spi->sr & STM32_SPI_SR_RXNE)
- in_msg[0] = spi->dr;
-
- /*
- * SPI_NSS is also used for the master to reboot the slave.
- * If SPI_NSS goes low without a sync in time, reboots.
- */
- if (master_slave_sync(5))
- system_reboot();
-
- /* Read in the packet size */
- while (!(spi->sr & STM32_SPI_SR_RXNE))
- ;
- in_msg[0] = spi->dr;
-
- /* Read in the rest of the packet */
- dma_clear_isr(STM32_DMAC_SPI1_RX);
- dma_start_rx(&dma_rx_option, in_msg[0] + SPI_PACKET_HEADER_SIZE - 1,
- in_msg + 1);
- dma_prepare_tx(&dma_tx_option, in_msg[0] + SPI_PACKET_HEADER_SIZE - 1,
- out_msg);
- dma_go(dma_get_channel(STM32_DMAC_SPI1_TX));
-
- master_slave_sync(5);
-
- if (dma_wait(STM32_DMAC_SPI1_RX) != EC_SUCCESS) {
- debug_printf("SPI: Incomplete packet\n");
- spi_slave_nack();
- return;
- }
- if (spi->sr & STM32_SPI_SR_CRCERR) {
- debug_printf("SPI: CRC mismatch\n");
- spi_slave_nack();
- return;
- }
-
- if (cmd->cmd_sts == TS_CMD_HELLO)
- spi_slave_hello_back(cmd);
- else if (cmd->cmd_sts == TS_CMD_FULL_SCAN)
- touch_scan_slave_start();
- else
- spi_slave_nack();
-}
-
-/* Interrupt handler for PA0 */
-void spi_nss_interrupt_handler(void)
-{
- /* Clear the interrupt */
- STM32_EXTI_PR = STM32_EXTI_PR;
-
- /* SPI slave interrupt */
- spi_nss_interrupt();
-}
-DECLARE_IRQ(STM32_IRQ_EXTI0, spi_nss_interrupt_handler, 1);
diff --git a/board/keyborg/spi_comm.h b/board/keyborg/spi_comm.h
deleted file mode 100644
index 8000503e8f..0000000000
--- a/board/keyborg/spi_comm.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-#ifndef __BOARD_KEYBORG_SPI_COMM_H
-#define __BOARD_KEYBORG_SPI_COMM_H
-
-#define SPI_PACKET_MAX_SIZE 64
-
-enum ts_command {
- TS_CMD_HELLO = 0,
- TS_CMD_FULL_SCAN,
-};
-
-struct spi_comm_packet {
- uint8_t size;
- uint8_t cmd_sts;
- uint8_t data[0];
-};
-
-#define SPI_PACKET_HEADER_SIZE 2
-
-/* Initialize SPI interface for the master chip */
-void spi_master_init(void);
-
-/* Initialize SPI interface for the slave chip */
-void spi_slave_init(void);
-
-/*
- * Calculate checksum and send command packet to the slave.
- *
- * @param cmd Pointer to the command packet.
- *
- * @return EC_SUCCESS, or non-zero if any error.
- */
-int spi_master_send_command(struct spi_comm_packet *cmd);
-
-/*
- * Wait for slave response and verify checksum.
- *
- * @return Pointer to the response packet, or NULL if any error.
- */
-const struct spi_comm_packet *spi_master_wait_response(void);
-
-/*
- * Start receiving slave response, but don't wait for full transaction.
- * The caller is responsible for calling spi_master_wait_response_done()
- * to ensure the response is fully received.
- *
- * @return EC_SUCCESS, or non-zero if any error.
- */
-int spi_master_wait_response_async(void);
-
-/*
- * Wait for slave response to complete.
- *
- * @return Pointer to the response packet, or NULL if any error.
- */
-const struct spi_comm_packet *spi_master_wait_response_done(void);
-
-/*
- * Calculate checksum and send response packet to the master.
- *
- * @param resp Pointer to the response packet.
- *
- * @return EC_SUCCESS, or non-zero if any error.
- */
-int spi_slave_send_response(struct spi_comm_packet *resp);
-
-/*
- * Start sending response to the master, but don't block. The caller is
- * responsible for calling spi_slave_send_response_flush() to ensure
- * the response is fully transmitted.
- *
- * @return EC_SUCCESS, or non-zero if any error.
- */
-int spi_slave_send_response_async(struct spi_comm_packet *resp);
-
-/*
- * Wait until the last response is sent out.
- *
- * @return EC_SUCCESS, or non-zero if any error.
- */
-int spi_slave_send_response_flush(void);
-
-/*
- * Perform random back-to-back hello test. Master only.
- *
- * @param iteration Number of hello messages to send.
- *
- * @return EC_SUCCESS, or non-zero if any error.
- */
-int spi_hello_test(int iteration);
-
-#endif /* __BOARD_KEYBORG_SPI_COMM_H */
diff --git a/board/keyborg/touch_scan.c b/board/keyborg/touch_scan.c
deleted file mode 100644
index a8b8ed75f5..0000000000
--- a/board/keyborg/touch_scan.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Touch scanning module */
-
-#include "common.h"
-#include "console.h"
-#include "cpu.h"
-#include "debug.h"
-#include "dma.h"
-#include "encode.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "master_slave.h"
-#include "registers.h"
-#include "spi_comm.h"
-#include "task.h"
-#include "timer.h"
-#include "touch_scan.h"
-#include "util.h"
-
-#define TS_PIN_TO_CR(p) ((((p).port_id + 1) << 16) | (1 << (p).pin))
-#define TS_GPIO_TO_BASE(p) (0x40010800 + (p) * 0x400)
-
-static uint8_t buf[2][ROW_COUNT * 2];
-
-#ifdef CONFIG_KEYBORG_FAST_SCAN
-#define SCAN_BUF_SIZE (DIV_ROUND_UP(COL_COUNT * 2, 32) + 2)
-#define GET_SCAN_NEEDED(x) (scan_needed[(x) / 32 + 1] & (1 << ((x) & 31)))
-static uint32_t scan_needed[SCAN_BUF_SIZE];
-#else
-#define GET_SCAN_NEEDED(x) 1
-#endif
-
-#define SPAN_LENGTH (2 * COL_SPAN + 1)
-#define SPAN_MASK ((1 << SPAN_LENGTH) - 1)
-
-static uint32_t mccr_list[COL_COUNT];
-static uint32_t mrcr_list[ROW_COUNT];
-
-static void set_gpio(const struct ts_pin pin, enum pin_type type)
-{
- uint32_t addr, mode, mask;
- uint32_t port = TS_GPIO_TO_BASE(pin.port_id);
- uint32_t pmask = 1 << pin.pin;
-
- if (pmask & 0xff) {
- addr = port;
- mode = pmask;
- } else {
- addr = port + 0x04;
- mode = pmask >> 8;
- }
- mode = mode * mode * mode * mode * 0xf;
-
- mask = REG32(addr) & ~mode;
-
- if (type == PIN_COL) {
- /* Alternate output open-drain */
- mask |= 0xdddddddd & mode;
- } else if (type == PIN_PD) {
- mask |= 0x88888888 & mode;
- STM32_GPIO_BSRR(port) = pmask << 16;
- } else if (type == PIN_Z) {
- mask |= 0x44444444 & mode;
- } else if (type == PIN_ROW) {
- /* Nothing for PIN_ROW. Already analog input. */
- }
-
- REG32(addr) = mask;
-}
-
-void touch_scan_init(void)
-{
- int i;
-
- for (i = 0; i < ROW_COUNT; ++i) {
- set_gpio(row_pins[i], PIN_ROW);
- STM32_PMSE_PxPMR(row_pins[i].port_id) |= 1 << row_pins[i].pin;
- }
- for (i = 0; i < COL_COUNT; ++i)
- set_gpio(col_pins[i], PIN_PD);
-
- for (i = 0; i < ROW_COUNT; ++i)
- mrcr_list[i] = TS_PIN_TO_CR(row_pins[i]);
- for (i = 0; i < COL_COUNT; ++i)
- mccr_list[i] = TS_PIN_TO_CR(col_pins[i]);
-}
-
-void touch_scan_enable_interrupt(void)
-{
- int i;
-
- /* Set ALLROW and ALLCOL */
- for (i = 0; i < ROW_COUNT; ++i)
- set_gpio(row_pins[i], PIN_Z);
- for (i = 0; i < COL_COUNT; ++i) {
- set_gpio(col_pins[i], PIN_COL);
- STM32_PMSE_PxPMR(col_pins[i].port_id) |= 1 << col_pins[i].pin;
- }
- STM32_PMSE_MCCR = (1 << 31) | (0 << 20);
- STM32_PMSE_MRCR = 1 << 31;
-
- /* Enable external interrupt. EXTI3 on port E. Rising edge */
- STM32_EXTI_RTSR |= 1 << 3;
- STM32_AFIO_EXTICR(0) = (STM32_AFIO_EXTICR(0) & ~0xf000) | (4 << 12);
- STM32_EXTI_IMR |= 1 << 3;
- task_clear_pending_irq(STM32_IRQ_EXTI3);
- task_enable_irq(STM32_IRQ_EXTI3);
-}
-
-void touch_scan_disable_interrupt(void)
-{
- int i;
-
- for (i = 0; i < ROW_COUNT; ++i)
- set_gpio(row_pins[i], PIN_ROW);
- for (i = 0; i < COL_COUNT; ++i) {
- set_gpio(col_pins[i], PIN_PD);
- STM32_PMSE_PxPMR(col_pins[i].port_id) &=
- ~(1 << col_pins[i].pin);
- }
-}
-
-void touch_scan_interrupt(void)
-{
- STM32_EXTI_PR = STM32_EXTI_PR;
-}
-DECLARE_IRQ(STM32_IRQ_EXTI3, touch_scan_interrupt, 1);
-
-static void discharge(void)
-{
- int i;
-
- /*
- * The value 20 is deducted from experiments.
- * Somehow this needs to be in reverse order
- */
- for (i = 20; i >= 0; --i)
- STM32_PMSE_MRCR = mrcr_list[i];
-}
-
-static void start_adc_sample(int id, int wait_cycle)
-{
- /* Clear EOC and STRT bit */
- STM32_ADC_SR(id) &= ~((1 << 1) | (1 << 4));
-
- /* Start conversion */
- STM32_ADC_CR2(id) |= (1 << 0);
-
- /* Wait for conversion start */
- while (!(STM32_ADC_SR(id) & (1 << 4)))
- ;
-
- /* Each iteration takes 3 CPU cycles */
- asm("1: subs %0, #1\n"
- " bne 1b\n" :: "r"(wait_cycle / 3));
-}
-
-static inline uint8_t flush_adc(int id)
-{
- uint16_t v;
-
-#if ADC_SMPL_CYCLE_2 < ADC_QUNTZ_CYCLE_2
- while (!(STM32_ADC_SR(id) & (1 << 1)))
- ;
-#endif
-
- v = STM32_ADC_DR(id) >> ADC_WINDOW_POS;
- if (v > 255)
- v = 255;
- return v;
-}
-
-static void enable_col(int idx, int enabled)
-{
- if (enabled) {
- set_gpio(col_pins[idx], PIN_COL);
- STM32_PMSE_PxPMR(col_pins[idx].port_id) |=
- 1 << col_pins[idx].pin;
- } else {
- set_gpio(col_pins[idx], PIN_PD);
- STM32_PMSE_PxPMR(col_pins[idx].port_id) &=
- ~(1 << col_pins[idx].pin);
- }
-}
-
-#ifdef CONFIG_KEYBORG_FAST_SCAN
-static inline void set_scan_needed(int col)
-{
- uint8_t word = (col - COL_SPAN + 32) / 32;
- uint8_t bit = (col - COL_SPAN + 32) & 31;
-
- scan_needed[word] |= SPAN_MASK << bit;
- if (bit + SPAN_LENGTH > 32)
- scan_needed[word + 1] |= SPAN_MASK >> (32 - bit);
-}
-
-int fast_scan(uint32_t *data)
-{
- int col;
- int chip_col = 0;
-
- memset(data, 0, SCAN_BUF_SIZE * 4);
-
- STM32_PMSE_MRCR = 1 << 31;
- for (col = 0; col < COL_COUNT * 2; ++col) {
- if (master_slave_is_master())
- chip_col = (col >= COL_COUNT) ? col - COL_COUNT : -1;
- else
- chip_col = (col < COL_COUNT) ? col : -1;
- if (chip_col >= 0) {
- enable_col(chip_col, 1);
- STM32_PMSE_MCCR = mccr_list[chip_col];
- }
-
- if (master_slave_sync(5) != EC_SUCCESS)
- goto fast_scan_err;
-
- start_adc_sample(0, ADC_SMPL_CPU_CYCLE);
- while (!(STM32_ADC_SR(0) & (1 << 1)))
- ;
- if (flush_adc(0) >= COL_THRESHOLD)
- set_scan_needed(col);
-
- if (master_slave_sync(5) != EC_SUCCESS)
- goto fast_scan_err;
- if (chip_col >= 0) {
- enable_col(chip_col, 0);
- STM32_PMSE_MCCR = 0;
- }
- }
- STM32_PMSE_MRCR = 0;
-
- /* Discharge the panel */
- discharge();
-
- return EC_SUCCESS;
-fast_scan_err:
- enable_col(chip_col, 0);
- STM32_PMSE_MCCR = 0;
- STM32_PMSE_MRCR = 0;
- return EC_ERROR_UNKNOWN;
-}
-#else
-#define fast_scan(x) EC_SUCCESS
-#endif
-
-void scan_column(uint8_t *data)
-{
- int i;
-
- STM32_PMSE_MRCR = mrcr_list[0];
- start_adc_sample(0, ADC_SMPL_CPU_CYCLE);
- STM32_PMSE_MRCR = mrcr_list[1];
- start_adc_sample(1, ADC_SMPL_CPU_CYCLE);
-
- for (i = 2; i < ROW_COUNT; ++i) {
- data[i - 2] = flush_adc(i & 1);
- STM32_PMSE_MRCR = mrcr_list[i];
- start_adc_sample(i & 1, ADC_SMPL_CPU_CYCLE);
- }
-
- while (!(STM32_ADC_SR(ROW_COUNT & 1) & (1 << 1)))
- ;
- data[ROW_COUNT - 2] = flush_adc(ROW_COUNT & 1);
- while (!(STM32_ADC_SR((ROW_COUNT & 1) ^ 1) & (1 << 1)))
- ;
- data[ROW_COUNT - 1] = flush_adc((ROW_COUNT & 1) ^ 1);
-}
-
-void touch_scan_slave_start(void)
-{
- int col = 0, i, v;
- struct spi_comm_packet *resp = (struct spi_comm_packet *)buf;
-
- if (fast_scan(scan_needed) != EC_SUCCESS)
- goto slave_err;
-
- for (col = 0; col < COL_COUNT * 2; ++col) {
- if (col < COL_COUNT) {
- enable_col(col, 1);
- STM32_PMSE_MCCR = mccr_list[col];
- }
-
- if (master_slave_sync(20) != EC_SUCCESS)
- goto slave_err;
-
- if (GET_SCAN_NEEDED(col)) {
- scan_column(resp->data);
-
- /* Reverse the scanned data */
- for (i = 0; ROW_COUNT - 1 - i > i; ++i) {
- v = resp->data[i];
- resp->data[i] = resp->data[ROW_COUNT - 1 - i];
- resp->data[ROW_COUNT - 1 - i] = v;
- }
- resp->size = ROW_COUNT;
- } else {
- resp->size = 0;
- }
-
- resp->cmd_sts = EC_SUCCESS;
-
- /* Flush the last response */
- if (col != 0)
- if (spi_slave_send_response_flush() != EC_SUCCESS)
- goto slave_err;
-
- /* Start sending the response for the current column */
- if (spi_slave_send_response_async(resp) != EC_SUCCESS)
- goto slave_err;
-
- /* Disable the current column and discharge */
- if (col < COL_COUNT) {
- enable_col(col, 0);
- STM32_PMSE_MCCR = 0;
- }
- discharge();
- }
- spi_slave_send_response_flush();
- master_slave_sync(20);
- return;
-slave_err:
- if (col < COL_COUNT)
- enable_col(col, 0);
- STM32_PMSE_MCCR = 0;
- spi_slave_send_response_flush();
-}
-
-int touch_scan_full_matrix(void)
-{
- struct spi_comm_packet cmd;
- const struct spi_comm_packet *resp;
- int col = 0;
- timestamp_t st = get_time();
- uint8_t *dptr = NULL, *last_dptr = NULL;
-
- cmd.cmd_sts = TS_CMD_FULL_SCAN;
- cmd.size = 0;
-
- if (spi_master_send_command(&cmd))
- goto master_err;
-
- encode_reset();
-
- if (fast_scan(scan_needed) != EC_SUCCESS)
- goto master_err;
-
- for (col = 0; col < COL_COUNT * 2; ++col) {
- if (col >= COL_COUNT) {
- enable_col(col - COL_COUNT, 1);
- STM32_PMSE_MCCR = mccr_list[col - COL_COUNT];
- }
-
- if (master_slave_sync(20) != EC_SUCCESS)
- goto master_err;
-
- last_dptr = dptr;
- dptr = buf[col & 1];
-
- if (GET_SCAN_NEEDED(col))
- scan_column(dptr + ROW_COUNT);
- else
- memset(dptr + ROW_COUNT, 0, ROW_COUNT);
-
- if (col > 0) {
- /* Flush the data from the slave for the last column */
- resp = spi_master_wait_response_done();
- if (resp == NULL)
- goto master_err;
- if (resp->size)
- memcpy(last_dptr, resp->data, ROW_COUNT);
- else
- memset(last_dptr, 0, ROW_COUNT);
- encode_add_column(last_dptr);
- }
-
- /* Start receiving data for the current column */
- if (spi_master_wait_response_async() != EC_SUCCESS)
- goto master_err;
-
- /* Disable the current column and discharge */
- if (col >= COL_COUNT) {
- enable_col(col - COL_COUNT, 0);
- STM32_PMSE_MCCR = 0;
- }
- discharge();
- }
-
- resp = spi_master_wait_response_done();
- if (resp == NULL)
- goto master_err;
- if (resp->size)
- memcpy(last_dptr, resp->data, ROW_COUNT);
- else
- memset(last_dptr, 0, ROW_COUNT);
- encode_add_column(last_dptr);
-
- master_slave_sync(20);
-
- debug_printf("Sampling took %d us\n", get_time().val - st.val);
- encode_dump_matrix();
-
- return EC_SUCCESS;
-master_err:
- spi_master_wait_response_done();
- if (col >= COL_COUNT)
- enable_col(col - COL_COUNT, 0);
- STM32_PMSE_MCCR = 0;
- return EC_ERROR_UNKNOWN;
-}
diff --git a/board/keyborg/touch_scan.h b/board/keyborg/touch_scan.h
deleted file mode 100644
index 88f41560b6..0000000000
--- a/board/keyborg/touch_scan.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Touch scanning module */
-
-#ifndef __BOARD_KEYBORG_TOUCH_SCAN_H
-#define __BOARD_KEYBORG_TOUCH_SCAN_H
-
-enum pin_type {
- PIN_ROW,
- PIN_COL,
- PIN_PD,
- PIN_Z,
-};
-
-/* 8-bit window */
-#define ADC_WINDOW_POS 2
-
-/* Threshold for each cell */
-#define THRESHOLD 35
-
-/* Threshold for entire column */
-#define COL_THRESHOLD 16
-
-/* The span width of active columns */
-#define COL_SPAN 5 /* Must not exceed 15 */
-
-/* ADC speed */
-#define ADC_SMPR_VAL 0x2 /* 13.5 cycles */
-#define ADC_SMPL_CYCLE_2 27
-#define ADC_QUNTZ_CYCLE_2 25 /* Quantization always takes 12.5 cycles */
-
-/* CPU clock is 4 times faster than ADC clock */
-#define ADC_SMPL_CPU_CYCLE (ADC_SMPL_CYCLE_2 * 2)
-
-struct ts_pin {
- uint8_t port_id; /* GPIO_A = 0, GPIO_B = 1, ... */
- uint8_t pin;
-};
-
-#define TS_GPIO_A 0
-#define TS_GPIO_B 1
-#define TS_GPIO_C 2
-#define TS_GPIO_D 3
-#define TS_GPIO_E 4
-#define TS_GPIO_F 5
-#define TS_GPIO_G 6
-#define TS_GPIO_H 7
-#define TS_GPIO_I 8
-
-extern const struct ts_pin row_pins[];
-extern const struct ts_pin col_pins[];
-
-#define ROW_COUNT 41
-#define COL_COUNT 60
-
-/* Initialize touch scan module */
-void touch_scan_init(void);
-
-/* Start scanning on the slave. This is called by SPI command handler. */
-void touch_scan_slave_start(void);
-
-/**
- * Initiate full matrix scan on the master. This also sends SPI command
- * to the slave.
- */
-int touch_scan_full_matrix(void);
-
-/* Configure touch scan module to interrupt on touch. */
-void touch_scan_enable_interrupt(void);
-
-/* Disable touch scan interrupt. */
-void touch_scan_disable_interrupt(void);
-
-#endif /* __BOARD_KEYBORG_TOUCH_SCAN_H */
diff --git a/board/link/Makefile b/board/link/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/link/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/link/board.c b/board/link/board.c
deleted file mode 100644
index 3895885877..0000000000
--- a/board/link/board.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* 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.
- */
-/* EC for Link board configuration */
-
-#include "adc.h"
-#include "adc_chip.h"
-#include "backlight.h"
-#include "chipset.h"
-#include "common.h"
-#include "driver/temp_sensor/tmp006.h"
-#include "extpower.h"
-#include "fan.h"
-#include "gpio.h"
-#include "i2c.h"
-#include "keyboard_scan.h"
-#include "lid_switch.h"
-#include "peci.h"
-#include "power.h"
-#include "power_button.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "registers.h"
-#include "switch.h"
-#include "temp_sensor.h"
-#include "temp_sensor_chip.h"
-#include "timer.h"
-#include "thermal.h"
-#include "util.h"
-
-#include "gpio_list.h"
-
-/* power signal list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {
- {GPIO_PGOOD_5VALW, 1, "PGOOD_5VALW"},
- {GPIO_PGOOD_1_5V_DDR, 1, "PGOOD_1_5V_DDR"},
- {GPIO_PGOOD_1_5V_PCH, 1, "PGOOD_1_5V_PCH"},
- {GPIO_PGOOD_1_8VS, 1, "PGOOD_1_8VS"},
- {GPIO_PGOOD_VCCP, 1, "PGOOD_VCCP"},
- {GPIO_PGOOD_VCCSA, 1, "PGOOD_VCCSA"},
- {GPIO_PGOOD_CPU_CORE, 1, "PGOOD_CPU_CORE"},
- {GPIO_PGOOD_VGFX_CORE, 1, "PGOOD_VGFX_CORE"},
- {GPIO_PCH_SLP_S3_L, 1, "SLP_S3#_DEASSERTED"},
- {GPIO_PCH_SLP_S4_L, 1, "SLP_S4#_DEASSERTED"},
- {GPIO_PCH_SLP_S5_L, 1, "SLP_S5#_DEASSERTED"},
- {GPIO_PCH_SLP_A_L, 1, "SLP_A#_DEASSERTED"},
- {GPIO_PCH_SLP_SUS_L, 1, "SLP_SUS#_DEASSERTED"},
- {GPIO_PCH_SLP_ME_CSW_DEV_L, 1, "SLP_ME#_DEASSERTED"},
-};
-BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
-
-/* ADC channels. Must be in the exactly same order as in enum adc_channel. */
-const struct adc_t adc_channels[] = {
- /* EC internal temperature is calculated by
- * 273 + (295 - 450 * ADC_VALUE / ADC_READ_MAX) / 2
- * = -225 * ADC_VALUE / ADC_READ_MAX + 420.5
- */
- {"ECTemp", LM4_ADC_SEQ0, -225, ADC_READ_MAX, 420,
- LM4_AIN_NONE, 0x0e /* TS0 | IE0 | END0 */, 0, 0},
-
- /* Charger current is mapped from 0~4000mA to 0~1.6V.
- * And ADC maps 0~3.3V to ADC_READ_MAX.
- */
- {"ChargerCurrent", LM4_ADC_SEQ1, 33 * 4000, ADC_READ_MAX * 16, 0,
- LM4_AIN(11), 0x06 /* IE0 | END0 */, LM4_GPIO_B, (1<<5)},
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {1, 0},
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-/* Physical fans. These are logically separate from pwm_channels. */
-const struct fan_t fans[] = {
- {.flags = FAN_USE_RPM_MODE,
- .rpm_min = 1500,
- .rpm_start = 1500,
- .rpm_max = 9300,
- .ch = 0,
- .pgood_gpio = GPIO_PGOOD_5VALW,
- .enable_gpio = -1,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(fans) == CONFIG_FANS);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"batt_chg", 0, 100},
- {"lightbar", 1, 400},
- {"thermal", 5, 100},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-#define TEMP_PCH_REG_ADDR ((0x41 << 1) | I2C_FLAG_BIG_ENDIAN)
-#define TEMP_CHARGER_REG_ADDR ((0x43 << 1) | I2C_FLAG_BIG_ENDIAN)
-#define TEMP_USB_REG_ADDR ((0x46 << 1) | I2C_FLAG_BIG_ENDIAN)
-#define TEMP_HINGE_REG_ADDR ((0x44 << 1) | I2C_FLAG_BIG_ENDIAN)
-
-#define TEMP_PCH_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_PCH_REG_ADDR)
-#define TEMP_CHARGER_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_CHARGER_REG_ADDR)
-#define TEMP_USB_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_USB_REG_ADDR)
-#define TEMP_HINGE_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_HINGE_REG_ADDR)
-
-/* Temperature sensors data; must be in same order as enum temp_sensor_id. */
-const struct temp_sensor_t temp_sensors[] = {
- {"I2C-USB C-Die", TEMP_SENSOR_TYPE_IGNORED, tmp006_get_val, 0, 7},
- {"I2C-USB C-Object", TEMP_SENSOR_TYPE_IGNORED, tmp006_get_val, 1, 7},
- {"I2C-PCH D-Die", TEMP_SENSOR_TYPE_BOARD, tmp006_get_val, 2, 7},
- {"I2C-PCH D-Object", TEMP_SENSOR_TYPE_CASE, tmp006_get_val, 3, 7},
- {"I2C-Hinge C-Die", TEMP_SENSOR_TYPE_IGNORED, tmp006_get_val, 4, 7},
- {"I2C-Hinge C-Object", TEMP_SENSOR_TYPE_IGNORED, tmp006_get_val, 5, 7},
- {"I2C-Charger D-Die", TEMP_SENSOR_TYPE_BOARD, tmp006_get_val, 6, 7},
- {"I2C-Charger D-Object", TEMP_SENSOR_TYPE_CASE, tmp006_get_val, 7, 7},
- {"ECInternal", TEMP_SENSOR_TYPE_BOARD, chip_temp_sensor_get_val, 0, 4},
- {"PECI", TEMP_SENSOR_TYPE_CPU, peci_temp_sensor_get_val, 0, 2},
-};
-BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
-
-/* Thermal limits for each temp sensor. All temps are in degrees K. Must be in
- * same order as enum temp_sensor_id. To always ignore any temp, use 0.
- */
-struct ec_thermal_config thermal_params[] = {
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- /* Only the AP affects the thermal limits and fan speed. */
- {{C_TO_K(100), C_TO_K(102), C_TO_K(104)}, C_TO_K(60), C_TO_K(90)},
-};
-BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
-
-const struct tmp006_t tmp006_sensors[TMP006_COUNT] = {
- {"USB C", TEMP_USB_ADDR},
- {"PCH D", TEMP_PCH_ADDR},
- {"Hinge C", TEMP_HINGE_ADDR},
- {"Charger D", TEMP_CHARGER_ADDR},
-};
-
-struct keyboard_scan_config keyscan_config = {
- .output_settle_us = 40,
- .debounce_down_us = 6 * MSEC,
- .debounce_up_us = 30 * MSEC,
- .scan_period_us = 1500,
- .min_post_scan_delay_us = 1000,
- .poll_timeout_us = SECOND,
- .actual_key_mask = {
- 0x14, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff,
- 0xa4, 0xff, 0xf6, 0x55, 0xfa, 0xc8 /* full set */
- },
-};
diff --git a/board/link/board.h b/board/link/board.h
deleted file mode 100644
index f180e138e4..0000000000
--- a/board/link/board.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/* 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.
- */
-
-/* Configuration for Link mainboard */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* Optional features */
-#define CONFIG_AP_HANG_DETECT
-#define CONFIG_BACKLIGHT_LID
-#define CONFIG_BACKLIGHT_REQ_GPIO GPIO_PCH_BKLTEN
-#define CONFIG_BATTERY_LINK
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BATTERY_OVERRIDE_PARAMS
-#define CONFIG_BOARD_VERSION
-#define CONFIG_CHARGER
-#define CONFIG_CHARGER_V1
-#define CONFIG_CHARGER_BQ24725
-#define CONFIG_CHIPSET_CAN_THROTTLE
-#define CONFIG_CHIPSET_IVYBRIDGE
-#define CONFIG_POWER_COMMON
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_FANS 1
-#define CONFIG_I2C_PASSTHRU_RESTRICTED
-#define CONFIG_KEYBOARD_BOARD_CONFIG
-#define CONFIG_KEYBOARD_PROTOCOL_8042
-#define CONFIG_LED_DRIVER_DS2413
-#define CONFIG_ONEWIRE
-#define CONFIG_PECI_TJMAX 105
-#define CONFIG_POWER_BUTTON
-#define CONFIG_POWER_BUTTON_X86
-#define CONFIG_PWM
-#define CONFIG_PWM_KBLIGHT
-#define CONFIG_SWITCH_DEDICATED_RECOVERY
-#define CONFIG_TEMP_SENSOR
-#define CONFIG_TEMP_SENSOR_POWER_GPIO GPIO_PGOOD_1_8VS
-#define CONFIG_TEMP_SENSOR_TMP006
-#define CONFIG_UART_HOST 1
-#define CONFIG_USB_PORT_POWER_SMART
-#define CONFIG_VBOOT_HASH
-#define CONFIG_WIRELESS
-#define CONFIG_WP_ACTIVE_HIGH
-
-#ifndef __ASSEMBLER__
-
-enum adc_channel {
- /* EC internal die temperature in degrees K. */
- ADC_CH_EC_TEMP = 0,
- /* Charger current in mA. */
- ADC_CH_CHARGER_CURRENT,
-
- ADC_CH_COUNT
-};
-
-enum pwm_channel {
- PWM_CH_KBLIGHT,
-
- /* Number of PWM channels */
- PWM_CH_COUNT
-};
-
-/* Charger module */
-#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 /* Input sensor resistor, mOhm */
-#define CONFIG_CHARGER_INPUT_CURRENT 4032 /* mA, based on Link HW design */
-#define CONFIG_CHARGER_CURRENT_LIMIT 3000 /* PL102 inductor 3.0A(3.8A) */
-
-/* I2C ports */
-#define I2C_PORT_BATTERY 0
-#define I2C_PORT_CHARGER 0 /* Note: proto0 used port 1 */
-#define I2C_PORT_THERMAL 5
-#define I2C_PORT_LIGHTBAR 1
-#define I2C_PORT_REGULATOR 0
-
-/* 13x8 keyboard scanner uses an entire GPIO bank for row inputs */
-#define KB_SCAN_ROW_IRQ LM4_IRQ_GPION
-#define KB_SCAN_ROW_GPIO LM4_GPIO_N
-
-/* Host connects to keyboard controller module via LPC */
-#define HOST_KB_BUS_LPC
-
-#include "gpio_signal.h"
-
-/* x86 signal definitions */
-enum x86_signal {
- X86_PGOOD_5VALW = 0,
- X86_PGOOD_1_5V_DDR,
- X86_PGOOD_1_5V_PCH,
- X86_PGOOD_1_8VS,
- X86_PGOOD_VCCP,
- X86_PGOOD_VCCSA,
- X86_PGOOD_CPU_CORE,
- X86_PGOOD_VGFX_CORE,
- X86_SLP_S3_DEASSERTED,
- X86_SLP_S4_DEASSERTED,
- X86_SLP_S5_DEASSERTED,
- X86_SLP_A_DEASSERTED,
- X86_SLP_SUS_DEASSERTED,
- X86_SLP_ME_DEASSERTED,
-
- /* Number of X86 signals */
- POWER_SIGNAL_COUNT
-};
-
-enum temp_sensor_id {
- /* TMP006 U20, die/object temperature near Mini-DP / USB connectors */
- TEMP_SENSOR_I2C_U20_DIE = 0,
- TEMP_SENSOR_I2C_U20_OBJECT,
- /* TMP006 U11, die/object temperature near PCH */
- TEMP_SENSOR_I2C_U11_DIE,
- TEMP_SENSOR_I2C_U11_OBJECT,
- /* TMP006 U27, die/object temperature near hinge */
- TEMP_SENSOR_I2C_U27_DIE,
- TEMP_SENSOR_I2C_U27_OBJECT,
- /* TMP006 U14, die/object temperature near battery charger */
- TEMP_SENSOR_I2C_U14_DIE,
- TEMP_SENSOR_I2C_U14_OBJECT,
- /* EC internal temperature sensor */
- TEMP_SENSOR_EC_INTERNAL,
- /* CPU die temperature via PECI */
- TEMP_SENSOR_CPU_PECI,
-
- TEMP_SENSOR_COUNT
-};
-
-/* The number of TMP006 sensor chips on the board. */
-#define TMP006_COUNT 4
-
-/* Wireless signals */
-#define WIRELESS_GPIO_WLAN GPIO_RADIO_ENABLE_WLAN
-#define WIRELESS_GPIO_BLUETOOTH GPIO_RADIO_ENABLE_BT
-#define WIRELESS_GPIO_WLAN_POWER GPIO_ENABLE_WLAN
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/link/build.mk b/board/link/build.mk
deleted file mode 100644
index 1843369ed4..0000000000
--- a/board/link/build.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- makefile -*-
-# 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.
-#
-# Board specific files build
-#
-
-# the IC is TI Stellaris LM4
-CHIP:=lm4
-
-board-y=board.o
diff --git a/board/link/ec.tasklist b/board/link/ec.tasklist
deleted file mode 100644
index 3b862f9323..0000000000
--- a/board/link/ec.tasklist
+++ /dev/null
@@ -1,28 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' is the name of the task
- * 'r' is the main routine of the task
- * 'd' is an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_NOTEST(LIGHTBAR, lightbar_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(POWERBTN, power_button_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/link/gpio.inc b/board/link/gpio.inc
deleted file mode 100644
index bd9b0f2317..0000000000
--- a/board/link/gpio.inc
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(POWER_BUTTON_L, PIN(K, 7), GPIO_INT_BOTH, power_button_interrupt) /* Power button */
-GPIO_INT(LID_OPEN, PIN(K, 5), GPIO_INT_BOTH, lid_interrupt) /* Lid switch */
-GPIO_INT(AC_PRESENT, PIN(H, 3), GPIO_INT_BOTH, extpower_interrupt) /* AC power present */
-GPIO_INT(PCH_BKLTEN, PIN(J, 3), GPIO_INT_BOTH, backlight_interrupt) /* Backlight enable signal from PCH */
-GPIO_INT(PCH_SLP_A_L, PIN(G, 5), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_A# signal from PCH */
-GPIO_INT(PCH_SLP_ME_CSW_DEV_L, PIN(G, 4), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_ME_CSW_DEV# signal from PCH */
-GPIO_INT(PCH_SLP_S3_L, PIN(J, 0), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_S3# signal from PCH */
-GPIO_INT(PCH_SLP_S4_L, PIN(J, 1), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_S4# signal from PCH */
-GPIO_INT(PCH_SLP_S5_L, PIN(J, 2), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_S5# signal from PCH */
-GPIO_INT(PCH_SLP_SUS_L, PIN(G, 3), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_SUS# signal from PCH */
-GPIO_INT(PCH_SUSWARN_L, PIN(G, 2), GPIO_INT_BOTH, power_interrupt) /* SUSWARN# signal from PCH */
-GPIO_INT(PGOOD_1_5V_DDR, PIN(K, 0), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on +1.5V_DDR */
-GPIO_INT(PGOOD_1_5V_PCH, PIN(K, 1), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on +1.5V_PCH */
-GPIO_INT(PGOOD_1_8VS, PIN(K, 3), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on +1.8VS */
-GPIO_INT(PGOOD_5VALW, PIN(H, 0), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on +5VALW */
-GPIO_INT(PGOOD_CPU_CORE, PIN(M, 3), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on +CPU_CORE */
-GPIO_INT(PGOOD_VCCP, PIN(K, 2), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on +VCCP */
-GPIO_INT(PGOOD_VCCSA, PIN(H, 1), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on +VCCSA */
-GPIO_INT(PGOOD_VGFX_CORE, PIN(D, 2), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on +VGFX_CORE */
-GPIO_INT(RECOVERY_L, PIN(H, 7), GPIO_INT_BOTH, switch_interrupt) /* Recovery signal from servo */
-GPIO_INT(WP, PIN(J, 4), GPIO_INT_BOTH, switch_interrupt) /* Write protect input */
-/* Other inputs */
-GPIO(THERMAL_DATA_READY_L, PIN(B, 4), GPIO_INPUT) /* Data ready from I2C thermal sensor */
-GPIO(BOARD_VERSION1, PIN(H, 6), GPIO_INPUT) /* Board version stuffing resistor 1 */
-GPIO(BOARD_VERSION2, PIN(L, 6), GPIO_INPUT) /* Board version stuffing resistor 2 */
-GPIO(BOARD_VERSION3, PIN(L, 7), GPIO_INPUT) /* Board version stuffing resistor 3 */
-GPIO(ONEWIRE, PIN(H, 2), GPIO_INPUT) /* One-wire bus to adapter LED */
-GPIO(USB1_STATUS_L, PIN(E, 7), GPIO_INPUT) /* USB charger port 1 status output */
-GPIO(USB2_STATUS_L, PIN(E, 1), GPIO_INPUT) /* USB charger port 2 status output */
-
-/* Outputs; all unasserted by default except for reset signals */
-GPIO(CPU_PROCHOT, PIN(F, 2), GPIO_OUT_LOW) /* Force CPU to think it's overheated */
-GPIO(ENABLE_1_5V_DDR, PIN(H, 5), GPIO_OUT_LOW) /* Enable +1.5V_DDR supply */
-GPIO(ENABLE_5VALW, PIN(K, 4), GPIO_OUT_HIGH) /* Enable +5V always on rail */
-GPIO(ENABLE_BACKLIGHT, PIN(H, 4), GPIO_OUT_LOW) /* Enable backlight power */
-GPIO(ENABLE_TOUCHPAD, PIN(C, 6), GPIO_OUT_LOW) /* Enable touchpad power */
-GPIO(ENABLE_VCORE, PIN(F, 7), GPIO_OUT_LOW) /* Enable +CPU_CORE and +VGFX_CORE */
-GPIO(ENABLE_VS, PIN(G, 6), GPIO_OUT_LOW) /* Enable VS power supplies */
-GPIO(ENABLE_WLAN, PIN(Q, 5), GPIO_OUT_LOW) /* Enable WLAN module power (+3VS_WLAN) */
-GPIO(ENTERING_RW, PIN(J, 5), GPIO_OUT_LOW) /* Indicate when EC is entering RW code */
-GPIO(LIGHTBAR_RESET_L, PIN(B, 1), GPIO_OUT_LOW) /* Reset lightbar controllers */
-GPIO(PCH_A20GATE, PIN(Q, 6), GPIO_OUT_LOW) /* A20GATE signal to PCH */
-GPIO(PCH_DPWROK, PIN(G, 0), GPIO_OUT_LOW) /* DPWROK signal to PCH */
-
-/*
- * HDA_SDO is technically an output, but we need to leave it as an
- * input until we drive it high. So can't use open-drain (HI_Z).
- */
-GPIO(PCH_HDA_SDO, PIN(G, 1), GPIO_INPUT) /* HDA_SDO signal to PCH; when high, ME ignores security descriptor */
-GPIO(PCH_WAKE_L, PIN(F, 0), GPIO_OUT_HIGH) /* Wake signal output to PCH */
-GPIO(PCH_NMI_L, PIN(M, 2), GPIO_OUT_HIGH) /* Non-maskable interrupt pin to PCH */
-GPIO(PCH_PWRBTN_L, PIN(G, 7), GPIO_OUT_HIGH) /* Power button output to PCH */
-GPIO(PCH_PWROK, PIN(F, 5), GPIO_OUT_LOW) /* PWROK / APWROK signals to PCH */
-GPIO(PCH_RCIN_L, PIN(Q, 7), GPIO_ODR_HIGH) /* RCIN# signal to PCH */
-GPIO(PCH_RSMRST_L, PIN(F, 1), GPIO_OUT_LOW) /* Reset PCH resume power plane logic */
-GPIO(PCH_RTCRST_L, PIN(F, 6), GPIO_ODR_HIGH) /* Reset PCH RTC well */
-GPIO(PCH_SMI_L, PIN(F, 4), GPIO_OUT_HIGH) /* System management interrupt to PCH */
-GPIO(PCH_SRTCRST_L, PIN(C, 7), GPIO_ODR_HIGH) /* Reset PCH ME RTC well */
-GPIO(PCH_SUSACK_L, PIN(F, 3), GPIO_OUT_HIGH) /* Acknowledge PCH SUSWARN# signal */
-GPIO(RADIO_ENABLE_WLAN, PIN(D, 0), GPIO_OUT_LOW) /* Enable WLAN radio */
-GPIO(RADIO_ENABLE_BT, PIN(D, 1), GPIO_OUT_LOW) /* Enable bluetooth radio */
-GPIO(SPI_CS_L, PIN(A, 3), GPIO_ODR_HIGH) /* SPI chip select */
-GPIO(TOUCHSCREEN_RESET_L, PIN(B, 0), GPIO_OUT_LOW) /* Reset touch screen */
-GPIO(USB1_CTL1, PIN(E, 2), GPIO_OUT_LOW) /* USB charger port 1 CTL1 output */
-GPIO(USB1_CTL2, PIN(E, 3), GPIO_OUT_LOW) /* USB charger port 1 CTL2 output */
-GPIO(USB1_CTL3, PIN(E, 4), GPIO_OUT_LOW) /* USB charger port 1 CTL3 output */
-GPIO(USB1_ENABLE, PIN(E, 5), GPIO_OUT_LOW) /* USB charger port 1 enable */
-GPIO(USB1_ILIM_SEL, PIN(E, 6), GPIO_OUT_LOW) /* USB charger port 1 ILIM_SEL output */
-GPIO(USB2_CTL1, PIN(D, 4), GPIO_OUT_LOW) /* USB charger port 2 CTL1 output */
-GPIO(USB2_CTL2, PIN(D, 5), GPIO_OUT_LOW) /* USB charger port 2 CTL2 output */
-GPIO(USB2_CTL3, PIN(D, 6), GPIO_OUT_LOW) /* USB charger port 2 CTL3 output */
-GPIO(USB2_ENABLE, PIN(D, 7), GPIO_OUT_LOW) /* USB charger port 2 enable */
-GPIO(USB2_ILIM_SEL, PIN(E, 0), GPIO_OUT_LOW) /* USB charger port 2 ILIM_SEL output */
-
-ALTERNATE(PIN_MASK(A, 0x03), 1, MODULE_UART, 0) /* UART0 */
-ALTERNATE(PIN_MASK(A, 0x40), 3, MODULE_I2C, 0) /* I2C1 SCL */
-ALTERNATE(PIN_MASK(A, 0x80), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C1 SDA */
-ALTERNATE(PIN_MASK(B, 0x04), 3, MODULE_I2C, 0) /* I2C0 SCL */
-ALTERNATE(PIN_MASK(B, 0x08), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C0 SDA */
-ALTERNATE(PIN_MASK(B, 0x40), 3, MODULE_I2C, 0) /* I2C5 SCL */
-ALTERNATE(PIN_MASK(B, 0x80), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C5 SDA */
-ALTERNATE(PIN_MASK(C, 0x30), 2, MODULE_UART, 0) /* UART1 */
-ALTERNATE(PIN_MASK(J, 0x40), 1, MODULE_PECI, 0) /* PECI Tx */
-ALTERNATE(PIN_MASK(J, 0x80), 0, MODULE_PECI, GPIO_ANALOG) /* PECI Rx */
-ALTERNATE(PIN_MASK(K, 0x40), 1, MODULE_PWM_KBLIGHT, 0) /* FAN0PWM1 */
-ALTERNATE(PIN_MASK(L, 0x3f), 15, MODULE_LPC, 0) /* LPC */
-ALTERNATE(PIN_MASK(M, 0x33), 15, MODULE_LPC, 0) /* LPC */
-ALTERNATE(PIN_MASK(M, 0xc0), 1, MODULE_PWM_FAN, 0) /* FAN0PWM0 */
diff --git a/board/link/userspace/README b/board/link/userspace/README
deleted file mode 100644
index 204b9a4522..0000000000
--- a/board/link/userspace/README
+++ /dev/null
@@ -1,3 +0,0 @@
-Sometimes we need to perform some run-time tweaks of the EC from the AP's
-userspace. This directory holds those tweaks. They're picked up by the
-ec-utils ebuild.
diff --git a/board/link/userspace/etc/init/ec.conf b/board/link/userspace/etc/init/ec.conf
deleted file mode 100644
index 738cb8b2b8..0000000000
--- a/board/link/userspace/etc/init/ec.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (c) 2012 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.
-
-description "Overrides lightbar params to tweak appearance"
-author "chromium-os-dev@chromium.org"
-
-start on startup
-
-script
- PARAMS=/usr/share/ec/lightbar_params.txt
- [ -f "$PARAMS" ] && ectool lightbar params "$PARAMS" >/dev/null 2>&1
-end script
diff --git a/board/link/userspace/usr/share/ec/lightbar_params.txt b/board/link/userspace/usr/share/ec/lightbar_params.txt
deleted file mode 100644
index fc845478b6..0000000000
--- a/board/link/userspace/usr/share/ec/lightbar_params.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-2500 # .google_ramp_up
-10000 # .google_ramp_down
-2000 # .s3s0_ramp_up
-45000 # .s0_tick_delay (battery)
-30000 # .s0_tick_delay (AC)
-5000 # .s0a_tick_delay (battery)
-3000 # .s0a_tick_delay (AC)
-2000 # .s0s3_ramp_down
-5000000 # .s3_sleep_for
-2500 # .s3_ramp_up
-10000 # .s3_ramp_down
-1 # .new_s0
-0x60 0x60 # .osc_min (battery, AC)
-0xd0 0xd0 # .osc_max (battery, AC)
-24 24 # .w_ofs (battery, AC)
-0xcc 0xff # .bright_bl_off_fixed (battery, AC)
-0xcc 0xff # .bright_bl_on_min (battery, AC)
-0xcc 0xff # .bright_bl_on_max (battery, AC)
-14 40 99 # .battery_threshold
-5 4 4 4 # .s0_idx[] (battery)
-4 4 4 4 # .s0_idx[] (AC)
-5 255 255 255 # .s3_idx[] (battery)
-255 255 255 255 # .s3_idx[] (AC)
-0x33 0x69 0xe8 # color[0]
-0xd5 0x0f 0x25 # color[1]
-0xee 0xb2 0x11 # color[2]
-0x00 0x99 0x25 # color[3]
-0x00 0x00 0xff # color[4]
-0xff 0x00 0x00 # color[5]
-0xff 0xff 0x00 # color[6]
-0x00 0xff 0x00 # color[7]
diff --git a/board/mccroskey/Makefile b/board/mccroskey/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/mccroskey/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/mccroskey/board.c b/board/mccroskey/board.c
deleted file mode 100644
index 40993923ce..0000000000
--- a/board/mccroskey/board.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* 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.
- */
-/* McCroskey board-specific configuration */
-
-#include "chipset.h"
-#include "common.h"
-#include "console.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "i2c.h"
-#include "keyboard_raw.h"
-#include "registers.h"
-#include "spi.h"
-#include "task.h"
-#include "timer.h"
-#include "util.h"
-
-#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-#define GPIO_KB_OUTPUT (GPIO_OUTPUT | GPIO_OPEN_DRAIN | GPIO_OUT_LOW)
-
-#define HARD_RESET_TIMEOUT_MS 5
-
-#include "gpio_list.h"
-
-void board_config_pre_init(void)
-{
- uint32_t val;
-
- /* Enable all GPIOs clocks.
- *
- * TODO(crosbug.com/p/23494): more fine-grained enabling for power
- * saving.
- */
- STM32_RCC_APB2ENR |= 0x1fd;
-
-#ifdef CONFIG_SPI
- /*
- * SPI1 on pins PA4-7 (alt. function push-pull, 10MHz).
- *
- * TODO(crosbug.com/p/23494): Connected device SPI freq is fxo/2 in
- * master mode, fxo/4 in slave mode. fxo ranges from 12-40MHz.
- */
- val = STM32_GPIO_CRL(GPIO_A) & ~0xffff0000;
- val |= 0x99990000;
- STM32_GPIO_CRL(GPIO_A) = val;
-#endif
-
- /* remap OSC_IN/OSC_OUT to PD0/PD1 */
- STM32_GPIO_AFIO_MAPR |= 1 << 15;
-
- /* use PB3 as a GPIO, so disable JTAG and keep only SWD */
- STM32_GPIO_AFIO_MAPR = (STM32_GPIO_AFIO_MAPR & ~(0x7 << 24))
- | (2 << 24);
-
- /* remap TIM2_CH2 to PB3 */
- STM32_GPIO_AFIO_MAPR = (STM32_GPIO_AFIO_MAPR & ~(0x3 << 8))
- | (1 << 8);
-
- /*
- * Set alternate function for USART1. For alt. function input
- * the port is configured in either floating or pull-up/down
- * input mode (ref. section 7.1.4 in datasheet RM0041):
- * PA9: Tx, alt. function output
- * PA10: Rx, input with pull-down
- *
- * note: see crosbug.com/p/12223 for more info
- */
- val = STM32_GPIO_CRH(GPIO_A) & ~0x00000ff0;
- val |= 0x00000890;
- STM32_GPIO_CRH(GPIO_A) = val;
-}
-
-/* GPIO configuration to be done after I2C module init */
-void board_i2c_post_init(int port)
-{
- uint32_t val;
-
- /* enable alt. function (open-drain) */
- if (port == STM32_I2C1_PORT) {
- /* I2C1 is on PB6-7 */
- val = STM32_GPIO_CRL(GPIO_B) & ~0xff000000;
- val |= 0xdd000000;
- STM32_GPIO_CRL(GPIO_B) = val;
- }
-}
diff --git a/board/mccroskey/board.h b/board/mccroskey/board.h
deleted file mode 100644
index f99f50d7ce..0000000000
--- a/board/mccroskey/board.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* 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.
- */
-
-/* McCroskey board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* 48 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 48000000
-
-/* Debug features */
-/* TODO(crosbug.com/p/23494): turn off extra I2C debugging when it works */
-#define CONFIG_I2C_DEBUG
-#undef CONFIG_TASK_PROFILING
-
-/* Features not present on this reference board */
-#undef CONFIG_LID_SWITCH
-
-/* Optional features */
-#define CONFIG_BOARD_PRE_INIT
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
-
-/*
- * TODO(crosbug.com/p/23494): Stop mode causes the UART to drop characters and
- * likely other bad side-effects. Disable for now.
- */
-#undef CONFIG_LOW_POWER_IDLE
-
-#ifndef __ASSEMBLER__
-
-/* Keyboard output ports */
-#define KB_OUT_PORT_LIST GPIO_C
-
-/* EC is I2C master */
-#define I2C_PORT_MASTER 0
-#define I2C_PORT_SLAVE 0 /* needed for DMAC macros (ugh) */
-#define GPIO_I2C2_SCL 0 /* unused, but must be defined anyway */
-#define GPIO_I2C2_SDA 0 /* unused, but must be defined anyway */
-
-/* Timer selection */
-#define TIM_CLOCK_MSB 3
-#define TIM_CLOCK_LSB 4
-#define TIM_WATCHDOG 1
-
-#include "gpio_signal.h"
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/mccroskey/build.mk b/board/mccroskey/build.mk
deleted file mode 100644
index b3956b1645..0000000000
--- a/board/mccroskey/build.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- makefile -*-
-# Copyright (c) 2012 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32F102R8
-CHIP:=stm32
-CHIP_FAMILY:=stm32f
-CHIP_VARIANT:=stm32f10x
-
-board-y=board.o
diff --git a/board/mccroskey/ec.tasklist b/board/mccroskey/ec.tasklist
deleted file mode 100644
index 2777d7484b..0000000000
--- a/board/mccroskey/ec.tasklist
+++ /dev/null
@@ -1,23 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, 360)
diff --git a/board/mccroskey/gpio.inc b/board/mccroskey/gpio.inc
deleted file mode 100644
index 71aff83c9a..0000000000
--- a/board/mccroskey/gpio.inc
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(KB_IN00, PIN(B, 8), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN01, PIN(B, 9), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN02, PIN(B, 10), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN03, PIN(B, 11), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN04, PIN(B, 12), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN05, PIN(B, 13), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN06, PIN(B, 14), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN07, PIN(B, 15), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-
-/* TODO(crosbug.com/p/23494): interrupt handler for power button */
-GPIO(KBD_PWR_BUTTON, PIN(B, 2), GPIO_INPUT)
-
-GPIO(OMZO_RDY_L, PIN(A, 0), GPIO_INPUT) /* PA0_WKUP */
-GPIO(OZMO_RST_L, PIN(A, 2), GPIO_ODR_HIGH)
-GPIO(VBUS_UP_DET, PIN(A, 3), GPIO_INPUT)
-GPIO(OZMO_REQ_L, PIN(A, 8), GPIO_INPUT)
-GPIO(CHARGE_ZERO, PIN(B, 0), GPIO_INPUT)
-GPIO(CHARGE_SHUNT, PIN(B, 1), GPIO_INPUT)
-GPIO(PMIC_INT_L, PIN(B, 5), GPIO_INPUT)
-
-/*
- * I2C pins should be configured as inputs until I2C module is
- * initialized. This will avoid driving the lines unintentionally.
- */
-GPIO(I2C1_SCL, PIN(B, 6), GPIO_INPUT)
-GPIO(I2C1_SDA, PIN(B, 7), GPIO_INPUT)
-
-GPIO(KB_OUT00, PIN(C, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT01, PIN(C, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT02, PIN(C, 2), GPIO_KB_OUTPUT)
-GPIO(KB_OUT03, PIN(C, 3), GPIO_KB_OUTPUT)
-GPIO(KB_OUT04, PIN(C, 4), GPIO_KB_OUTPUT)
-GPIO(KB_OUT05, PIN(C, 5), GPIO_KB_OUTPUT)
-GPIO(KB_OUT06, PIN(C, 6), GPIO_KB_OUTPUT)
-GPIO(KB_OUT07, PIN(C, 7), GPIO_KB_OUTPUT)
-GPIO(KB_OUT08, PIN(C, 8), GPIO_KB_OUTPUT)
-GPIO(KB_OUT09, PIN(C, 9), GPIO_KB_OUTPUT)
-GPIO(KB_OUT10, PIN(C, 10), GPIO_KB_OUTPUT)
-GPIO(KB_OUT11, PIN(C, 11), GPIO_KB_OUTPUT)
-GPIO(KB_OUT12, PIN(C, 12), GPIO_KB_OUTPUT)
-GPIO(USB_VBUS_CTRL, PIN(C, 13), GPIO_OUT_LOW)
-GPIO(HUB_RESET, PIN(C, 14), GPIO_ODR_HIGH)
-GPIO(WP_L, PIN(D, 2), GPIO_INPUT)
-
-/*
- * TODO(crosbug.com/p/23494): This will be an alternate function GPIO,
- * so remove it from here.
- */
-GPIO(BL_PWM, PIN(A, 1), GPIO_OUTPUT)
-
-/* Unimplemented signals which we need to emulate for now */
-UNIMPLEMENTED(EC_INT)
-UNIMPLEMENTED(ENTERING_RW)
-
-#if 0
-/* Other GPIOs (probably need to be set up below as alt. function) */
-GPIO(STM_USBDM, PIN(A, 11), GPIO_DEFAULT)
-GPIO(STM_USBDP, PIN(A, 12), GPIO_DEFAULT)
-GPIO(JTMS_SWDIO, PIN(A, 13), GPIO_DEFAULT)
-GPIO(JTCK_SWCLK, PIN(A, 14), GPIO_DEFAULT)
-GPIO(JTDI, PIN(A, 15), GPIO_DEFAULT)
-GPIO(JTDO, PIN(B, 3), GPIO_DEFAULT)
-GPIO(JNTRST, PIN(B, 4), GPIO_DEFAULT)
-GPIO(OSC32_OUT, PIN(C, 15), GPIO_DEFAULT)
-#endif
diff --git a/board/mighty/Makefile b/board/mighty/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/mighty/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/mighty/battery.c b/board/mighty/battery.c
deleted file mode 100644
index 02b491443f..0000000000
--- a/board/mighty/battery.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (c) 2012 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.
- *
- * Battery pack vendor provided charging profile
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-#include "console.h"
-#include "gpio.h"
-#include "host_command.h"
-#include "util.h"
-
-/* Shutdown mode parameter to write to manufacturer access register */
-#define SB_SHUTDOWN_DATA 0x0010
-
-static const struct battery_info info = {
- .voltage_max = 8400, /* mV */
- .voltage_normal = 7400,
- .voltage_min = 6000,
- .precharge_current = 256, /* mA */
- .start_charging_min_c = 0,
- .start_charging_max_c = 45,
- .charging_min_c = 0,
- .charging_max_c = 45,
- .discharging_min_c = 0,
- .discharging_max_c = 60,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-static int cutoff(void)
-{
- int rv;
-
- /* Ship mode command must be sent twice to take effect */
- rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-
- if (rv != EC_SUCCESS)
- return rv;
-
- return sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-}
-
-
-int board_cut_off_battery(void)
-{
- return cutoff();
-}
-
diff --git a/board/mighty/board.c b/board/mighty/board.c
deleted file mode 100644
index a91a25c6a4..0000000000
--- a/board/mighty/board.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Veyron board-specific configuration */
-
-#include "battery.h"
-#include "chipset.h"
-#include "common.h"
-#include "extpower.h"
-#include "gpio.h"
-#include "i2c.h"
-#include "keyboard_raw.h"
-#include "lid_switch.h"
-#include "power.h"
-#include "power_button.h"
-#include "power.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "registers.h"
-#include "spi.h"
-#include "task.h"
-#include "util.h"
-#include "timer.h"
-#include "charger.h"
-
-#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-#define GPIO_KB_OUTPUT GPIO_ODR_HIGH
-
-#include "gpio_list.h"
-
-
-/* power signal list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {
- {GPIO_SOC_POWER_GOOD, 1, "POWER_GOOD"},
- {GPIO_SUSPEND_L, 1, "SUSPEND#_ASSERTED"},
-};
-BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"master", I2C_PORT_MASTER, 100},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {STM32_TIM(2), STM32_TIM_CH(3),
- PWM_CONFIG_ACTIVE_LOW},
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-/**
- * Discharge battery when on AC power for factory test.
- */
-int board_discharge_on_ac(int enable)
-{
- return charger_discharge_on_ac(enable);
-}
-
-void board_config_pre_init(void)
-{
- /* enable SYSCFG clock */
- STM32_RCC_APB2ENR |= 1 << 0;
-
- /* Remap USART DMA to match the USART driver */
- /*
- * the DMA mapping is :
- * Chan 2 : TIM1_CH1
- * Chan 3 : SPI1_TX
- * Chan 4 : USART1_TX
- * Chan 5 : USART1_RX
- */
- STM32_SYSCFG_CFGR1 |= (1 << 9) | (1 << 10); /* Remap USART1 RX/TX DMA */
-}
diff --git a/board/mighty/board.h b/board/mighty/board.h
deleted file mode 100644
index bebfdc6b2b..0000000000
--- a/board/mighty/board.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Veyron board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* Optional features */
-#define CONFIG_AP_HANG_DETECT
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BOARD_PRE_INIT
-#define CONFIG_CHARGER
-#define CONFIG_CHARGER_BQ24715
-#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_V2
-#define CONFIG_CHIPSET_ROCKCHIP
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_FORCE_CONSOLE_RESUME
-#define CONFIG_HOST_COMMAND_STATUS
-#define CONFIG_I2C
-#define CONFIG_KEYBOARD_COL2_INVERTED
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
-#define CONFIG_LED_COMMON
-#define CONFIG_LOW_POWER_IDLE
-#define CONFIG_LOW_POWER_S0
-#define CONFIG_POWER_BUTTON
-#define CONFIG_POWER_BUTTON_ACTIVE_STATE 1
-#define CONFIG_POWER_COMMON
-#define CONFIG_PWM
-#define CONFIG_SPI
-#define CONFIG_STM_HWTIMER32
-#define CONFIG_UART_RX_DMA
-#define CONFIG_VBOOT_HASH
-#undef CONFIG_WATCHDOG_HELP
-
-#define CONFIG_HIBERNATE_WAKEUP_PINS (STM32_PWR_CSR_EWUP1 | STM32_PWR_CSR_EWUP6)
-
-#ifndef __ASSEMBLER__
-
-/* 48 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 48000000
-
-/* Keyboard output port list */
-#define KB_OUT_PORT_LIST GPIO_A, GPIO_B, GPIO_C
-
-/* Single I2C port, where the EC is the master. */
-#define I2C_PORT_MASTER 0
-#define I2C_PORT_BATTERY I2C_PORT_MASTER
-#define I2C_PORT_CHARGER I2C_PORT_MASTER
-
-/* Timer selection */
-#define TIM_CLOCK32 2
-#define TIM_WATCHDOG 4
-
-#include "gpio_signal.h"
-
-enum power_signal {
- RK_POWER_GOOD = 0,
- RK_SUSPEND_ASSERTED,
- /* Number of power signals */
- POWER_SIGNAL_COUNT
-};
-
-enum pwm_channel {
- PWM_CH_POWER_LED = 0,
- /* Number of PWM channels */
- PWM_CH_COUNT
-};
-
-/* Charger module */
-#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 /* Input sensor resistor, mOhm */
-/* Input current limit for 45W AC adapter:
- * 45W/19V*85%=2013mA, choose the closest charger setting = 2048mA
- */
-#define CONFIG_CHARGER_INPUT_CURRENT 2048 /* mA, based on Link HW design */
-#define CONFIG_CHARGER_CURRENT_LIMIT 3000 /* PL102 inductor 3.0A(3.8A) */
-
-/* Discharge battery when on AC power for factory test. */
-int board_discharge_on_ac(int enable);
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/mighty/build.mk b/board/mighty/build.mk
deleted file mode 100644
index a0f9570511..0000000000
--- a/board/mighty/build.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- makefile -*-
-# Copyright (c) 2014 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32F071RB
-CHIP:=stm32
-CHIP_FAMILY:=stm32f0
-CHIP_VARIANT:=stm32f07x
-
-board-y=board.o battery.o led.o
diff --git a/board/mighty/ec.tasklist b/board/mighty/ec.tasklist
deleted file mode 100644
index 318cfe2553..0000000000
--- a/board/mighty/ec.tasklist
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK(n, r, d, s) where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/mighty/gpio.inc b/board/mighty/gpio.inc
deleted file mode 100644
index 79b05dc73f..0000000000
--- a/board/mighty/gpio.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(POWER_BUTTON_L, PIN(B, 5), GPIO_INT_BOTH, power_button_interrupt) /* wk6 */ /* active high, the name is for compatibility with existing code */
-GPIO_INT(SOC_POWER_GOOD, PIN(A, 3), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(LID_OPEN, PIN(C, 13), GPIO_INT_BOTH, lid_interrupt)
-GPIO_INT(SUSPEND_L, PIN(C, 7), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SPI1_NSS, PIN(A, 4), GPIO_INT_BOTH, spi_event)
-GPIO_INT(AC_PRESENT, PIN(A, 8), GPIO_INT_BOTH | GPIO_PULL_UP, extpower_interrupt)
-
-/* Keyboard inputs */
-GPIO_INT(KB_IN00, PIN(C, 8), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN01, PIN(C, 9), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN02, PIN(C, 10), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN03, PIN(C, 11), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN04, PIN(C, 12), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN05, PIN(C, 14), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN06, PIN(C, 15), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN07, PIN(D, 2), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-
-/* Other inputs */
-GPIO(EC_WAKE, PIN(A, 0), GPIO_INPUT | GPIO_PULL_DOWN) /* wk1 */
-GPIO(WP_L, PIN(B, 4), GPIO_INPUT)
-
-/* Outputs */
-GPIO(BAT_LED0, PIN(B, 11), GPIO_OUT_LOW)
-GPIO(BAT_LED1, PIN(A, 11), GPIO_OUT_LOW)
-GPIO(EC_BL_OVERRIDE, PIN(F, 1), GPIO_OUT_LOW)
-GPIO(EC_INT, PIN(B, 9), GPIO_OUT_LOW)
-GPIO(ENTERING_RW, PIN(F, 0), GPIO_OUT_LOW)
-GPIO(I2C1_SCL, PIN(B, 6), GPIO_ODR_HIGH)
-GPIO(I2C1_SDA, PIN(B, 7), GPIO_ODR_HIGH)
-GPIO(KB_OUT00, PIN(B, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT01, PIN(B, 8), GPIO_KB_OUTPUT)
-GPIO(KB_OUT02, PIN(B, 12), GPIO_OUT_LOW) /* Inverted from silegro */
-GPIO(KB_OUT03, PIN(B, 13), GPIO_KB_OUTPUT)
-GPIO(KB_OUT04, PIN(B, 14), GPIO_KB_OUTPUT)
-GPIO(KB_OUT05, PIN(B, 15), GPIO_KB_OUTPUT)
-GPIO(KB_OUT06, PIN(C, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT07, PIN(C, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT08, PIN(C, 2), GPIO_KB_OUTPUT)
-GPIO(KB_OUT09, PIN(B, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT10, PIN(C, 5), GPIO_KB_OUTPUT)
-GPIO(KB_OUT11, PIN(C, 4), GPIO_KB_OUTPUT)
-GPIO(KB_OUT12, PIN(A, 13), GPIO_KB_OUTPUT)
-GPIO(POWER_LED, PIN(A, 2), GPIO_OUT_LOW)
-GPIO(PMIC_PWRON, PIN(A, 12), GPIO_OUT_LOW)
-GPIO(PMIC_RESET, PIN(B, 3), GPIO_OUT_LOW)
-GPIO(PMIC_SOURCE_PWREN, PIN(B, 10), GPIO_OUT_LOW)
-GPIO(PMIC_WARM_RESET_L, PIN(C, 3), GPIO_ODR_HIGH)
-
-ALTERNATE(PIN_MASK(A, 0x00f0), 0, MODULE_SPI, 0)
-ALTERNATE(PIN_MASK(A, 0x0600), 1, MODULE_UART, 0)
-ALTERNATE(PIN_MASK(B, 0x00c0), 1, MODULE_I2C, 0)
diff --git a/board/mighty/led.c b/board/mighty/led.c
deleted file mode 100644
index e96e96e7f2..0000000000
--- a/board/mighty/led.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Copyright (c) 2014 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.
- *
- * Battery LED and Power LED control for mighty
- */
-
-#include "gpio.h"
-#include "hooks.h"
-#include "battery.h"
-#include "charge_state.h"
-#include "chipset.h"
-#include "led_common.h"
-#include "util.h"
-
-const enum ec_led_id supported_led_ids[] = {
- EC_LED_ID_BATTERY_LED,
- EC_LED_ID_POWER_LED,
-};
-
-const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
-
-enum led_color {
- LED_GREEN = 0,
- LED_ORANGE,
- LED_COLOR_COUNT /* Number of colors, not a color itself */
-};
-
-static int bat_led_set(enum led_color color, int on)
-{
- switch (color) {
- case LED_GREEN:
- gpio_set_level(GPIO_BAT_LED1, on ? 0 : 1);
- break;
- case LED_ORANGE:
- gpio_set_level(GPIO_BAT_LED0, on ? 0 : 1);
- break;
- default:
- return EC_ERROR_UNKNOWN;
- }
- return EC_SUCCESS;
-}
-
-static int pwr_led_set(int on)
-{
- gpio_set_level(GPIO_POWER_LED, on ? 0 : 1);
- return EC_SUCCESS;
-}
-
-void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
-{
- /* Ignoring led_id as both leds support the same colors */
- brightness_range[EC_LED_COLOR_GREEN] = 1;
- brightness_range[EC_LED_COLOR_YELLOW] = 1;
-}
-
-int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
-{
- switch (led_id) {
- case EC_LED_ID_BATTERY_LED:
- if (brightness[EC_LED_COLOR_GREEN] != 0) {
- bat_led_set(LED_GREEN, 1);
- bat_led_set(LED_ORANGE, 0);
- } else if (brightness[EC_LED_COLOR_YELLOW] != 0) {
- bat_led_set(LED_GREEN, 1);
- bat_led_set(LED_ORANGE, 1);
- } else {
- bat_led_set(LED_GREEN, 0);
- bat_led_set(LED_ORANGE, 0);
- }
- break;
- case EC_LED_ID_POWER_LED:
- pwr_led_set(brightness[EC_LED_COLOR_BLUE]);
- break;
- default:
- return EC_ERROR_UNKNOWN;
-
- }
- return EC_SUCCESS;
-}
-
-static void mighty_led_set_power(void)
-{
- static int power_second;
-
- power_second++;
-
- /* PWR LED behavior:
- * Power on: Green
- * Suspend: Green in breeze mode ( 1 sec on/ 3 sec off)
- * Power off: OFF
- */
- if (chipset_in_state(CHIPSET_STATE_ANY_OFF))
- pwr_led_set(0);
- else if (chipset_in_state(CHIPSET_STATE_ON))
- pwr_led_set(1);
- else if (chipset_in_state(CHIPSET_STATE_SUSPEND))
- pwr_led_set((power_second & 3) ? 0 : 1);
-}
-
-
-static void mighty_led_set_battery(void)
-{
- static int battery_second;
-
- battery_second++;
-
- /* BAT LED behavior:
- * Fully charged / idle: Off
- * Under charging: Orange
- * Battery low (10%): Orange in breeze mode (1 sec on, 3 sec off)
- * Battery critical low (less than 3%) or abnormal battery
- * situation: Orange in blinking mode (1 sec on, 1 sec off)
- * Using battery or not connected to AC power: OFF
- */
- switch (charge_get_state()) {
- case PWR_STATE_CHARGE:
- bat_led_set(LED_ORANGE, 1);
- break;
- case PWR_STATE_CHARGE_NEAR_FULL:
- bat_led_set(LED_ORANGE, 1);
- break;
- case PWR_STATE_DISCHARGE:
- if (charge_get_percent() < 3)
- bat_led_set(LED_ORANGE, (battery_second & 1) ? 0 : 1);
- else if (charge_get_percent() < 10)
- bat_led_set(LED_ORANGE, (battery_second & 3) ? 0 : 1);
- else
- bat_led_set(LED_ORANGE, 0);
- break;
- case PWR_STATE_ERROR:
- bat_led_set(LED_ORANGE, (battery_second & 1) ? 0 : 1);
- break;
- case PWR_STATE_IDLE: /* External power connected in IDLE. */
- bat_led_set(LED_ORANGE, 0);
- break;
- default:
- /* Other states don't alter LED behavior */
- break;
- }
-}
-
-/** * Called by hook task every 1 sec */
-static void led_second(void)
-{
- if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED))
- mighty_led_set_power();
- if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED))
- mighty_led_set_battery();
-}
-DECLARE_HOOK(HOOK_SECOND, led_second, HOOK_PRIO_DEFAULT);
-
diff --git a/board/nyan/Makefile b/board/nyan/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/nyan/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/nyan/battery.c b/board/nyan/battery.c
deleted file mode 100644
index dc55f9ae41..0000000000
--- a/board/nyan/battery.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/* 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.
- *
- * Battery pack vendor provided charging profile
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-#include "gpio.h"
-#include "host_command.h"
-#include "util.h"
-#include "console.h"
-
-/* Console output macros */
-#define CPRINTS(format, args...) cprints(CC_CHARGER, format, ## args)
-
-/* These 2 defines are for cut_off command for 3S battery */
-#define SB_SHIP_MODE_ADDR 0x3a
-#define SB_SHIP_MODE_DATA 0xc574
-
-static struct battery_info *battery_info;
-static int support_cut_off;
-
-struct battery_device {
- char manuf[9];
- char device[9];
- int design_mv;
- struct battery_info *battery_info;
- int support_cut_off;
-};
-
-/*
- * Used for the case that battery cannot be detected, such as the pre-charge
- * case. In this case, we need to provide the battery with the enough voltage
- * (usually the highest voltage among batteries, but the smallest precharge
- * current). This should be as conservative as possible.
- */
-static struct battery_info info_precharge = {
- /*
- * Design voltage
- * max = 8.4V
- * normal = 7.4V
- * min = 6.0V
- */
- .voltage_max = 12600, /* the max voltage among batteries */
- .voltage_normal = 11100,
- .voltage_min = 9000,
-
- /* Pre-charge current: I <= 0.01C */
- .precharge_current = 64, /* mA, the min current among batteries */
-
- /*
- * Operational temperature range
- * 0 <= T_charge <= 50 deg C
- * -20 <= T_discharge <= 60 deg C
- */
- .start_charging_min_c = 0,
- .start_charging_max_c = 50,
- .charging_min_c = 0,
- .charging_max_c = 50,
- .discharging_min_c = 0,
- .discharging_max_c = 60,
-};
-
-static struct battery_info info_2s = {
- /*
- * Design voltage
- * max = 8.4V
- * normal = 7.4V
- * min = 6.0V
- */
- .voltage_max = 8400,
- .voltage_normal = 7400,
- .voltage_min = 6000,
-
- /* Pre-charge current: I <= 0.01C */
- .precharge_current = 64, /* mA */
-
- /*
- * Operational temperature range
- * 0 <= T_charge <= 50 deg C
- * -20 <= T_discharge <= 60 deg C
- */
- .start_charging_min_c = 0,
- .start_charging_max_c = 50,
- .charging_min_c = 0,
- .charging_max_c = 50,
- .discharging_min_c = -20,
- .discharging_max_c = 60,
-};
-
-static struct battery_info info_3s = {
-
- .voltage_max = 12600,
- .voltage_normal = 11100, /* Average of max & min */
- .voltage_min = 9000,
-
- /* Pre-charge values. */
- .precharge_current = 392, /* mA */
-
- .start_charging_min_c = 0,
- .start_charging_max_c = 60,
- .charging_min_c = 0,
- .charging_max_c = 60,
- .discharging_min_c = 0,
- .discharging_max_c = 50,
-};
-
-static const struct battery_device support_batteries[] = {
- {
- .manuf = "NVT",
- .device = "ARROW",
- .design_mv = 7400,
- .battery_info = &info_2s,
- .support_cut_off = 0,
- },
- {
- .manuf = "SANYO",
- .device = "AP13J3K",
- .design_mv = 11250,
- .battery_info = &info_3s,
- .support_cut_off = 1,
- },
- {
- .manuf = "SONYCorp",
- .device = "AP13J4K",
- .design_mv = 11400,
- .battery_info = &info_3s,
- .support_cut_off = 1,
- }
-};
-
-#ifdef CONFIG_BATTERY_OVERRIDE_PARAMS
-/*
- * The following parameters are for 2S battery.
- * There is no corresponding params for 3S battery.
- */
-enum {
- TEMP_RANGE_10,
- TEMP_RANGE_23,
- TEMP_RANGE_35,
- TEMP_RANGE_45,
- TEMP_RANGE_50,
- TEMP_RANGE_MAX
-};
-
-enum {
- VOLT_RANGE_7200,
- VOLT_RANGE_8000,
- VOLT_RANGE_8400,
- VOLT_RANGE_MAX
-};
-
-/*
- * Vendor provided charging method
- * temp : < 7.2V, 7.2V ~ 8.0V, 8.0V ~ 8.4V
- * - 0 ~ 10 : 0.8A 1.6A 0.8A
- * - 10 ~ 23 : 1.6A 4.0A 1.6A
- * - 23 ~ 35 : 4.0A 4.0A 4.0A
- * - 35 ~ 45 : 1.6A 4.0A 1.6A
- * - 45 ~ 50 : 0.8A 1.6A 0.8A
- */
-static const int const current_limit[TEMP_RANGE_MAX][VOLT_RANGE_MAX] = {
- { 800, 1600, 800},
- {1600, 4000, 1600},
- {4000, 4000, 4000},
- {1600, 4000, 1600},
- { 800, 1600, 800},
-};
-
-static inline void limit_value(int *val, int limit)
-{
- if (*val > limit)
- *val = limit;
-}
-
-void battery_override_params(struct batt_params *batt)
-{
- int *desired_current = &batt->desired_current;
- int temp_range, volt_range;
- int bat_temp_c = DECI_KELVIN_TO_CELSIUS(batt->temperature);
-
- if (battery_info == NULL)
- return;
-
- /* Return if the battery is not a 2S battery */
- if (battery_info->voltage_max != info_2s.voltage_max)
- return;
-
- /* Limit charging voltage */
- if (batt->desired_voltage > battery_info->voltage_max)
- batt->desired_voltage = battery_info->voltage_max;
-
- /* Don't charge if outside of allowable temperature range */
- if (bat_temp_c >= battery_info->charging_max_c ||
- bat_temp_c < battery_info->charging_min_c) {
- batt->desired_voltage = 0;
- batt->desired_current = 0;
- batt->flags &= ~BATT_FLAG_WANT_CHARGE;
- return;
- }
-
- if (bat_temp_c <= 10)
- temp_range = TEMP_RANGE_10;
- else if (bat_temp_c <= 23)
- temp_range = TEMP_RANGE_23;
- else if (bat_temp_c <= 35)
- temp_range = TEMP_RANGE_35;
- else if (bat_temp_c <= 45)
- temp_range = TEMP_RANGE_45;
- else
- temp_range = TEMP_RANGE_50;
-
- if (batt->voltage < 7200)
- volt_range = VOLT_RANGE_7200;
- else if (batt->voltage < 8000)
- volt_range = VOLT_RANGE_8000;
- else
- volt_range = VOLT_RANGE_8400;
-
- limit_value(desired_current, current_limit[temp_range][volt_range]);
-
- /* If battery wants current, give it at least the precharge current */
- if (*desired_current > 0 &&
- *desired_current < battery_info->precharge_current)
- *desired_current = battery_info->precharge_current;
-}
-#endif /* CONFIG_BATTERY_OVERRIDE_PARAMS */
-
-const struct battery_info *battery_get_info(void)
-{
- int i;
- char manuf[9];
- char device[9];
- int design_mv;
-
- if (battery_manufacturer_name(manuf, sizeof(manuf))) {
- CPRINTS("Failed to get MANUF name");
- return &info_precharge;
- }
-
- if (battery_device_name(device, sizeof(device))) {
- CPRINTS("Failed to get DEVICE name");
- return &info_precharge;
- }
- if (battery_design_voltage((int *)&design_mv)) {
- CPRINTS("Failed to get DESIGN_VOLTAGE");
- return &info_precharge;
- }
-
- for (i = 0; i < ARRAY_SIZE(support_batteries); ++i) {
- if ((strcasecmp(support_batteries[i].manuf, manuf) == 0) &&
- (strcasecmp(support_batteries[i].device, device) == 0) &&
- (support_batteries[i].design_mv == design_mv)) {
- CPRINTS("battery Manuf:%s, Device=%s, design=%u",
- manuf, device, design_mv);
- support_cut_off = support_batteries[i].support_cut_off;
- battery_info = support_batteries[i].battery_info;
- return battery_info;
- }
- }
-
- CPRINTS("un-recognized battery Manuf:%s, Device=%s",
- manuf, device);
- return &info_precharge;
-}
-
-int board_cut_off_battery(void)
-{
- if (support_cut_off)
- return sb_write(SB_SHIP_MODE_ADDR, SB_SHIP_MODE_DATA);
- else
- return EC_RES_INVALID_COMMAND;
-}
diff --git a/board/nyan/board.c b/board/nyan/board.c
deleted file mode 100644
index 4c246cc520..0000000000
--- a/board/nyan/board.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* 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.
- */
-/* Nyan board-specific configuration */
-
-#include "battery.h"
-#include "chipset.h"
-#include "common.h"
-#include "extpower.h"
-#include "gpio.h"
-#include "i2c.h"
-#include "keyboard_raw.h"
-#include "lid_switch.h"
-#include "power.h"
-#include "power_button.h"
-#include "power.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "registers.h"
-#include "spi.h"
-#include "task.h"
-#include "util.h"
-#include "timer.h"
-
-#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-#define GPIO_KB_OUTPUT GPIO_ODR_HIGH
-
-#include "gpio_list.h"
-
-/* power signal list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {
- {GPIO_SOC1V8_XPSHOLD, 1, "XPSHOLD"},
- {GPIO_SUSPEND_L, 0, "SUSPEND#_ASSERTED"},
-};
-BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"master", I2C_PORT_MASTER, 100, GPIO_I2C1_SCL, GPIO_I2C1_SDA},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {STM32_TIM(2), STM32_TIM_CH(3),
- PWM_CONFIG_ACTIVE_LOW, GPIO_LED_POWER_L},
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
diff --git a/board/nyan/board.h b/board/nyan/board.h
deleted file mode 100644
index 2cd61869af..0000000000
--- a/board/nyan/board.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* 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.
- */
-
-/* Nyan board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* Optional features */
-#define CONFIG_AP_HANG_DETECT
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_CHARGER
-#define CONFIG_CHARGER_V2
-#define CONFIG_CHARGER_BQ24725
-#define CONFIG_CHIPSET_TEGRA
-#undef CONFIG_CONSOLE_CMDHELP
-#define CONFIG_POWER_COMMON
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_HOST_COMMAND_STATUS
-#define CONFIG_I2C
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
-#define CONFIG_SPI
-#define CONFIG_PWM
-#define CONFIG_POWER_BUTTON
-#define CONFIG_VBOOT_HASH
-
-#ifndef __ASSEMBLER__
-
-/* Keyboard output port list */
-#define KB_OUT_PORT_LIST GPIO_A, GPIO_B, GPIO_C
-
-/* Single I2C port, where the EC is the master. */
-#define I2C_PORT_MASTER 0
-#define I2C_PORT_BATTERY I2C_PORT_MASTER
-#define I2C_PORT_CHARGER I2C_PORT_MASTER
-
-/* Timer selection */
-#define TIM_CLOCK_MSB 3
-#define TIM_CLOCK_LSB 9
-#define TIM_POWER_LED 2
-#define TIM_WATCHDOG 4
-
-#include "gpio_signal.h"
-
-enum power_signal {
- TEGRA_XPSHOLD = 0,
- TEGRA_SUSPEND_ASSERTED,
-
- /* Number of power signals */
- POWER_SIGNAL_COUNT
-};
-
-enum pwm_channel {
- PWM_CH_POWER_LED = 0,
- /* Number of PWM channels */
- PWM_CH_COUNT
-};
-
-/* Charger module */
-#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 /* Input sensor resistor, mOhm */
-#define CONFIG_CHARGER_INPUT_CURRENT 4032 /* mA, based on Link HW design */
-#define CONFIG_CHARGER_CURRENT_LIMIT 3000 /* PL102 inductor 3.0A(3.8A) */
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/nyan/build.mk b/board/nyan/build.mk
deleted file mode 100644
index c950c382d6..0000000000
--- a/board/nyan/build.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- makefile -*-
-# 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32L100RBT6
-CHIP:=stm32
-CHIP_FAMILY:=stm32l
-CHIP_VARIANT:=stm32l100
-
-board-y=board.o battery.o
diff --git a/board/nyan/ec.tasklist b/board/nyan/ec.tasklist
deleted file mode 100644
index a24ba18d28..0000000000
--- a/board/nyan/ec.tasklist
+++ /dev/null
@@ -1,24 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK(n, r, d, s) where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_NOTEST(POWERLED, power_led_task, NULL, 256) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/nyan/gpio.inc b/board/nyan/gpio.inc
deleted file mode 100644
index 31ed5e30b6..0000000000
--- a/board/nyan/gpio.inc
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(POWER_BUTTON_L, PIN(B, 5), GPIO_INT_BOTH, power_button_interrupt)
-GPIO_INT(SOC1V8_XPSHOLD, PIN(A, 3), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(LID_OPEN, PIN(C, 13), GPIO_INT_BOTH, lid_interrupt)
-GPIO_INT(SUSPEND_L, PIN(C, 7), GPIO_KB_INPUT, power_signal_interrupt)
-GPIO_INT(SPI1_NSS, PIN(A, 4), GPIO_INT_BOTH | GPIO_PULL_UP, spi_event)
-GPIO_INT(AC_PRESENT, PIN(A, 0), GPIO_INT_BOTH, extpower_interrupt)
-
-/* Keyboard inputs */
-GPIO_INT(KB_IN00, PIN(C, 8), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN01, PIN(C, 9), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN02, PIN(C, 10), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN03, PIN(C, 11), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN04, PIN(C, 12), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN05, PIN(C, 14), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN06, PIN(C, 15), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN07, PIN(D, 2), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-
-/* Other inputs */
-GPIO(WP_L, PIN(B, 4), GPIO_INPUT)
-
-/* Outputs */
-GPIO(AP_RESET_L, PIN(B, 3), GPIO_ODR_HIGH)
-GPIO(CHARGER_EN, PIN(B, 2), GPIO_OUT_LOW)
-GPIO(EC_INT, PIN(B, 9), GPIO_ODR_HIGH)
-GPIO(ENTERING_RW, PIN(H, 0), GPIO_OUT_LOW)
-GPIO(I2C1_SCL, PIN(B, 6), GPIO_ODR_HIGH)
-GPIO(I2C1_SDA, PIN(B, 7), GPIO_ODR_HIGH)
-GPIO(LED_POWER_L, PIN(A, 2), GPIO_OUT_HIGH) /* PWR_LED1 */
-GPIO(PMIC_PWRON_L, PIN(A, 12), GPIO_OUT_HIGH)
-GPIO(PMIC_RESET, PIN(A, 15), GPIO_OUT_LOW)
-GPIO(KB_OUT00, PIN(B, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT01, PIN(B, 8), GPIO_KB_OUTPUT)
-GPIO(KB_OUT02, PIN(B, 12), GPIO_KB_OUTPUT)
-GPIO(KB_OUT03, PIN(B, 13), GPIO_KB_OUTPUT)
-GPIO(KB_OUT04, PIN(B, 14), GPIO_KB_OUTPUT)
-GPIO(KB_OUT05, PIN(B, 15), GPIO_KB_OUTPUT)
-GPIO(KB_OUT06, PIN(C, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT07, PIN(C, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT08, PIN(C, 2), GPIO_KB_OUTPUT)
-GPIO(KB_OUT09, PIN(B, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT10, PIN(C, 5), GPIO_KB_OUTPUT)
-GPIO(KB_OUT11, PIN(C, 4), GPIO_KB_OUTPUT)
-GPIO(KB_OUT12, PIN(A, 13), GPIO_KB_OUTPUT)
-GPIO(PWR_LED0, PIN(B, 10), GPIO_OUT_LOW)
-GPIO(BAT_LED0, PIN(B, 11), GPIO_OUT_LOW)
-GPIO(BAT_LED1, PIN(A, 8), GPIO_OUT_LOW)
-GPIO(CHARGING, PIN(A, 11), GPIO_OUT_LOW)
-GPIO(EC_BL_OVERRIDE, PIN(H, 1), GPIO_ODR_HIGH)
-GPIO(PMIC_THERM_L, PIN(A, 1), GPIO_ODR_HIGH)
-GPIO(PMIC_WARM_RESET_L, PIN(C, 3), GPIO_ODR_HIGH)
-
-ALTERNATE(PIN_MASK(A, 0x00f0), GPIO_ALT_SPI, MODULE_SPI, GPIO_DEFAULT)
-ALTERNATE(PIN_MASK(A, 0x0600), GPIO_ALT_USART, MODULE_UART, GPIO_DEFAULT)
-ALTERNATE(PIN_MASK(B, 0x00c0), GPIO_ALT_I2C, MODULE_I2C, GPIO_DEFAULT)
diff --git a/board/peppy/Makefile b/board/peppy/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/peppy/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/peppy/battery.c b/board/peppy/battery.c
deleted file mode 100644
index a3c5dc0bc1..0000000000
--- a/board/peppy/battery.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* 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.
- *
- * Battery pack vendor provided charging profile
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-#include "gpio.h"
-#include "host_command.h"
-
-#define SB_SHIP_MODE_ADDR 0x3a
-#define SB_SHIP_MODE_DATA 0xc574
-
-/* Values for 54Wh 3UPF656790-1-T1001 battery */
-static const struct battery_info info = {
-
- .voltage_max = 12600,
- .voltage_normal = 11100, /* Average of max & min */
- .voltage_min = 9000,
-
- /* Pre-charge values. */
- .precharge_current = 392, /* mA */
-
- .start_charging_min_c = 0,
- .start_charging_max_c = 60,
- .charging_min_c = 0,
- .charging_max_c = 60,
- .discharging_min_c = 0,
- .discharging_max_c = 50,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-int board_cut_off_battery(void)
-{
- return sb_write(SB_SHIP_MODE_ADDR, SB_SHIP_MODE_DATA);
-}
diff --git a/board/peppy/board.c b/board/peppy/board.c
deleted file mode 100644
index 2ab34f5029..0000000000
--- a/board/peppy/board.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* 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.
- */
-/* EC for Peppy board configuration */
-
-#include "adc.h"
-#include "adc_chip.h"
-#include "backlight.h"
-#include "chipset.h"
-#include "common.h"
-#include "driver/temp_sensor/g781.h"
-#include "extpower.h"
-#include "fan.h"
-#include "gpio.h"
-#include "host_command.h"
-#include "i2c.h"
-#include "jtag.h"
-#include "keyboard_scan.h"
-#include "lid_switch.h"
-#include "peci.h"
-#include "power.h"
-#include "power_button.h"
-#include "registers.h"
-#include "switch.h"
-#include "temp_sensor.h"
-#include "temp_sensor_chip.h"
-#include "thermal.h"
-#include "timer.h"
-#include "uart.h"
-#include "util.h"
-
-#include "gpio_list.h"
-
-/* power signal list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {
- {GPIO_PP5000_PGOOD, 1, "PGOOD_PP5000"},
- {GPIO_PP1350_PGOOD, 1, "PGOOD_PP1350"},
- {GPIO_PP1050_PGOOD, 1, "PGOOD_PP1050"},
- {GPIO_VCORE_PGOOD, 1, "PGOOD_VCORE"},
- {GPIO_PCH_SLP_S0_L, 1, "SLP_S0#_DEASSERTED"},
- {GPIO_PCH_SLP_S3_L, 1, "SLP_S3#_DEASSERTED"},
- {GPIO_PCH_SLP_S5_L, 1, "SLP_S5#_DEASSERTED"},
- {GPIO_PCH_SLP_SUS_L, 1, "SLP_SUS#_DEASSERTED"},
-};
-BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
-
-/* ADC channels. Must be in the exactly same order as in enum adc_channel. */
-const struct adc_t adc_channels[] = {
- /* EC internal temperature is calculated by
- * 273 + (295 - 450 * ADC_VALUE / ADC_READ_MAX) / 2
- * = -225 * ADC_VALUE / ADC_READ_MAX + 420.5
- */
- {"ECTemp", LM4_ADC_SEQ0, -225, ADC_READ_MAX, 420,
- LM4_AIN_NONE, 0x0e /* TS0 | IE0 | END0 */, 0, 0},
-
- /* IOUT == ICMNT is on PE3/AIN0 */
- /* We have 0.01-ohm resistors, and IOUT is 20X the differential
- * voltage, so 1000mA ==> 200mV.
- * ADC returns 0x000-0xFFF, which maps to 0.0-3.3V (as configured).
- * mA = 1000 * ADC_VALUE / ADC_READ_MAX * 3300 / 200
- */
- {"ChargerCurrent", LM4_ADC_SEQ1, 33000, ADC_READ_MAX * 2, 0,
- LM4_AIN(0), 0x06 /* IE0 | END0 */, LM4_GPIO_E, (1<<3)},
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* Physical fans. These are logically separate from pwm_channels. */
-const struct fan_t fans[] = {
- {.flags = FAN_USE_RPM_MODE,
- .rpm_min = 1000,
- .rpm_start = 1000,
- .rpm_max = 5050,
- .ch = 2,
- .pgood_gpio = GPIO_PP5000_PGOOD,
- .enable_gpio = GPIO_PP5000_FAN_EN,
- },
-};
-BUILD_ASSERT(ARRAY_SIZE(fans) == CONFIG_FANS);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"batt_chg", 0, 100},
- {"thermal", 5, 100},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-/* Temperature sensors data; must be in same order as enum temp_sensor_id. */
-const struct temp_sensor_t temp_sensors[] = {
- {"PECI", TEMP_SENSOR_TYPE_CPU, peci_temp_sensor_get_val, 0, 2},
- {"ECInternal", TEMP_SENSOR_TYPE_BOARD, chip_temp_sensor_get_val, 0, 4},
- {"G781Internal", TEMP_SENSOR_TYPE_BOARD, g781_get_val,
- G781_IDX_INTERNAL, 4},
- {"G781External", TEMP_SENSOR_TYPE_BOARD, g781_get_val,
- G781_IDX_EXTERNAL, 4},
-};
-BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
-
-/* Thermal limits for each temp sensor. All temps are in degrees K. Must be in
- * same order as enum temp_sensor_id. To always ignore any temp, use 0.
- */
-struct ec_thermal_config thermal_params[] = {
- /* Only the AP affects the thermal limits and fan speed. */
- {{C_TO_K(95), C_TO_K(97), C_TO_K(99)}, C_TO_K(55), C_TO_K(85)},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
-};
-BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
-
-struct keyboard_scan_config keyscan_config = {
- .output_settle_us = 40,
- .debounce_down_us = 6 * MSEC,
- .debounce_up_us = 30 * MSEC,
- .scan_period_us = 1500,
- .min_post_scan_delay_us = 1000,
- .poll_timeout_us = SECOND,
- .actual_key_mask = {
- 0x14, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff,
- 0xa4, 0xff, 0xf6, 0x55, 0xfa, 0xca /* full set */
- },
-};
-
-/**
- * Discharge battery when on AC power for factory test.
- */
-int board_discharge_on_ac(int enable)
-{
- if (enable)
- gpio_set_level(GPIO_CHARGE_L, 1);
- else
- gpio_set_level(GPIO_CHARGE_L, 0);
- return EC_SUCCESS;
-}
diff --git a/board/peppy/board.h b/board/peppy/board.h
deleted file mode 100644
index 683aa82da1..0000000000
--- a/board/peppy/board.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* 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.
- */
-
-/* Configuration for Peppy mainboard */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* Optional features */
-#define CONFIG_BACKLIGHT_LID
-#define CONFIG_BACKLIGHT_REQ_GPIO GPIO_PCH_BKLTEN
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_BATTERY_PRESENT_GPIO GPIO_BAT_PRESENT_L
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BOARD_VERSION
-#define CONFIG_CHARGER
-#define CONFIG_CHARGER_V1
-#define CONFIG_CHARGER_BQ24707A
-#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHIPSET_CAN_THROTTLE
-#define CONFIG_CHIPSET_HASWELL
-#define CONFIG_POWER_COMMON
-#define CONFIG_POWER_SHUTDOWN_PAUSE_IN_S5
-#define CONFIG_CMD_GSV
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_FANS 1
-#define CONFIG_KEYBOARD_BOARD_CONFIG
-#define CONFIG_KEYBOARD_PROTOCOL_8042
-#define CONFIG_LED_COMMON
-#define CONFIG_LOW_POWER_IDLE
-#define CONFIG_PECI_TJMAX 100
-#define CONFIG_POWER_BUTTON
-#define CONFIG_POWER_BUTTON_X86
-#define CONFIG_SWITCH_DEDICATED_RECOVERY
-#define CONFIG_TEMP_SENSOR
-#define CONFIG_TEMP_SENSOR_G781
-#define CONFIG_TEMP_SENSOR_POWER_GPIO GPIO_PP3300_DX_EN
-#define CONFIG_UART_HOST 2
-#define CONFIG_USB_PORT_POWER_DUMB
-#define CONFIG_VBOOT_HASH
-#define CONFIG_WIRELESS
-
-#ifndef __ASSEMBLER__
-
-/* I2C ports */
-#define I2C_PORT_BATTERY 0
-#define I2C_PORT_CHARGER 0
-#define I2C_PORT_THERMAL 5
-
-/* 13x8 keyboard scanner uses an entire GPIO bank for row inputs */
-#define KB_SCAN_ROW_IRQ LM4_IRQ_GPIOK
-#define KB_SCAN_ROW_GPIO LM4_GPIO_K
-
-/* Host connects to keyboard controller module via LPC */
-#define HOST_KB_BUS_LPC
-
-/* USB ports */
-#define USB_PORT_COUNT 2
-
-#include "gpio_signal.h"
-
-/* power signal definitions */
-enum power_signal {
- X86_PGOOD_PP5000 = 0,
- X86_PGOOD_PP1350,
- X86_PGOOD_PP1050,
- X86_PGOOD_VCORE,
- X86_SLP_S0_DEASSERTED,
- X86_SLP_S3_DEASSERTED,
- X86_SLP_S5_DEASSERTED,
- X86_SLP_SUS_DEASSERTED,
-
- /* Number of X86 signals */
- POWER_SIGNAL_COUNT
-};
-
-/* Charger module */
-#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* Input sensor resistor, mOhm */
-#define CONFIG_CHARGER_INPUT_CURRENT 3078 /* mA, 90% of power supply rating */
-
-enum adc_channel {
- /* EC internal die temperature in degrees K. */
- ADC_CH_EC_TEMP = 0,
-
- /* Charger current in mA. */
- ADC_CH_CHARGER_CURRENT,
-
- ADC_CH_COUNT
-};
-
-enum temp_sensor_id {
- /* CPU die temperature via PECI */
- TEMP_SENSOR_CPU_PECI = 0,
- /* EC internal temperature sensor */
- TEMP_SENSOR_EC_INTERNAL,
- /* G781 internal and external sensors */
- TEMP_SENSOR_I2C_G781_INTERNAL,
- TEMP_SENSOR_I2C_G781_EXTERNAL,
-
- TEMP_SENSOR_COUNT
-};
-
-/* Wireless signals */
-#define WIRELESS_GPIO_WLAN GPIO_WLAN_OFF_L
-#define WIRELESS_GPIO_WWAN GPIO_PP3300_LTE_EN
-#define WIRELESS_GPIO_WLAN_POWER GPIO_PP3300_WLAN_EN
-
-/* Discharge battery when on AC power for factory test. */
-int board_discharge_on_ac(int enable);
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/peppy/build.mk b/board/peppy/build.mk
deleted file mode 100644
index 2eb0db0bc6..0000000000
--- a/board/peppy/build.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- makefile -*-
-# 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.
-#
-# Board specific files build
-#
-
-# the IC is TI Stellaris LM4
-CHIP:=lm4
-
-board-y=board.o battery.o led.o
diff --git a/board/peppy/ec.tasklist b/board/peppy/ec.tasklist
deleted file mode 100644
index d193e6e7b2..0000000000
--- a/board/peppy/ec.tasklist
+++ /dev/null
@@ -1,27 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' is the name of the task
- * 'r' is the main routine of the task
- * 'd' is an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(POWERBTN, power_button_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/peppy/gpio.inc b/board/peppy/gpio.inc
deleted file mode 100644
index 0cbd553a5a..0000000000
--- a/board/peppy/gpio.inc
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(POWER_BUTTON_L, PIN(A, 2), GPIO_INT_BOTH_DSLEEP, power_button_interrupt) /* Power button */
-GPIO_INT(LID_OPEN, PIN(A, 3), GPIO_INT_BOTH_DSLEEP, lid_interrupt) /* Lid switch */
-GPIO_INT(AC_PRESENT, PIN(H, 3), GPIO_INT_BOTH_DSLEEP, extpower_interrupt) /* AC power present */
-GPIO_INT(PCH_BKLTEN, PIN(M, 3), GPIO_INT_BOTH, backlight_interrupt) /* Backlight enable signal from PCH */
-GPIO_INT(PCH_SLP_S0_L, PIN(G, 6), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_S0# signal from PCH */
-GPIO_INT(PCH_SLP_S3_L, PIN(G, 7), GPIO_INT_BOTH_DSLEEP, power_signal_interrupt) /* SLP_S3# signal from PCH */
-GPIO_INT(PCH_SLP_S5_L, PIN(H, 1), GPIO_INT_BOTH_DSLEEP, power_signal_interrupt) /* SLP_S5# signal from PCH */
-GPIO_INT(PCH_SLP_SUS_L, PIN(G, 3), GPIO_INT_BOTH, power_signal_interrupt) /* SLP_SUS# signal from PCH */
-GPIO_INT(PP1050_PGOOD, PIN(H, 4), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 1.05V */
-GPIO_INT(PP1350_PGOOD, PIN(H, 6), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 1.35V (DRAM) */
-GPIO_INT(PP5000_PGOOD, PIN(N, 0), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 5V */
-GPIO_INT(VCORE_PGOOD, PIN(C, 6), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on core VR */
-GPIO_INT(PCH_EDP_VDD_EN, PIN(J, 1), GPIO_INT_BOTH, power_interrupt) /* PCH wants EDP enabled */
-GPIO_INT(RECOVERY_L, PIN(A, 5), GPIO_PULL_UP | GPIO_INT_BOTH, switch_interrupt) /* Recovery signal from servo */
-GPIO_INT(WP_L, PIN(A, 4), GPIO_INT_BOTH, switch_interrupt) /* Write protect input */
-GPIO_INT(JTAG_TCK, PIN(C, 0), GPIO_DEFAULT, jtag_interrupt) /* JTAG clock input */
-GPIO_INT(UART0_RX, PIN(A, 0), GPIO_PULL_UP | GPIO_INT_BOTH_DSLEEP, uart_deepsleep_interrupt) /* UART0 RX input */
-
-/* Other inputs */
-GPIO(FAN_ALERT_L, PIN(B, 0), GPIO_INPUT) /* From thermal sensor */
-GPIO(PCH_SUSWARN_L, PIN(G, 2), GPIO_INT_BOTH) /* SUSWARN# signal from PCH */
-GPIO(USB1_OC_L, PIN(E, 7), GPIO_INPUT) /* USB port overcurrent warning */
-GPIO(USB2_OC_L, PIN(E, 0), GPIO_INPUT) /* USB port overcurrent warning */
-GPIO(BOARD_VERSION1, PIN(Q, 5), GPIO_INPUT) /* Board version stuffing resistor 1 */
-GPIO(BOARD_VERSION2, PIN(Q, 6), GPIO_INPUT) /* Board version stuffing resistor 2 */
-GPIO(BOARD_VERSION3, PIN(Q, 7), GPIO_INPUT) /* Board version stuffing resistor 3 */
-GPIO(CPU_PGOOD, PIN(C, 4), GPIO_INPUT) /* Power good to the CPU */
-GPIO(BAT_PRESENT_L, PIN(B, 4), GPIO_INPUT) /* Battery present. Repurposed BAT_TEMP */
-
-/* Outputs; all unasserted by default except for reset signals */
-GPIO(CPU_PROCHOT, PIN(B, 1), GPIO_OUT_LOW) /* Force CPU to think it's overheated */
-GPIO(PP1350_EN, PIN(H, 5), GPIO_OUT_LOW) /* Enable 1.35V supply */
-GPIO(PP3300_DX_EN, PIN(J, 2), GPIO_OUT_LOW) /* Enable power to lots of peripherals */
-GPIO(PP3300_LTE_EN, PIN(D, 2), GPIO_OUT_LOW) /* Enable LTE radio */
-GPIO(PP3300_WLAN_EN, PIN(J, 0), GPIO_OUT_LOW) /* Enable WiFi power */
-GPIO(SUSP_VR_EN, PIN(C, 7), GPIO_OUT_LOW) /* Enable 1.05V regulator */
-GPIO(VCORE_EN, PIN(C, 5), GPIO_OUT_LOW) /* Stuffing option - not connected */
-GPIO(PP5000_EN, PIN(H, 7), GPIO_OUT_LOW) /* Enable 5V supply */
-GPIO(PP5000_FAN_EN, PIN(J, 3), GPIO_OUT_LOW) /* Enable fan power rail */
-GPIO(SYS_PWROK, PIN(H, 2), GPIO_OUT_LOW) /* EC thinks everything is up and ready */
-GPIO(WLAN_OFF_L, PIN(J, 4), GPIO_OUT_LOW) /* Disable WiFi radio */
-GPIO(CHARGE_L, PIN(E, 6), GPIO_OUT_LOW) /* Allow battery to charge when on AC */
-
-GPIO(ENABLE_BACKLIGHT, PIN(M, 7), GPIO_OUT_LOW) /* Enable backlight power */
-GPIO(ENABLE_TOUCHPAD, PIN(N, 1), GPIO_OUT_LOW) /* Enable touchpad power */
-GPIO(ENTERING_RW, PIN(D, 3), GPIO_OUT_LOW) /* Indicate when EC is entering RW code */
-GPIO(PCH_DPWROK, PIN(G, 0), GPIO_OUT_LOW) /* Indicate when VccDSW is good */
-
-/*
- * HDA_SDO is technically an output, but we need to leave it as an
- * input until we drive it high. So can't use open-drain (HI_Z).
- */
-GPIO(PCH_HDA_SDO, PIN(G, 1), GPIO_INPUT) /* HDA_SDO signal to PCH; when high, ME ignores security descriptor */
-GPIO(PCH_WAKE_L, PIN(F, 0), GPIO_OUT_HIGH) /* Wake signal from EC to PCH */
-GPIO(PCH_NMI_L, PIN(F, 2), GPIO_OUT_HIGH) /* Non-maskable interrupt pin to PCH */
-GPIO(PCH_PWRBTN_L, PIN(H, 0), GPIO_OUT_HIGH) /* Power button output to PCH */
-GPIO(PCH_PWROK, PIN(F, 5), GPIO_OUT_LOW) /* PWROK / APWROK signals to PCH */
-
-/*
- * PL6 is one of 4 pins on the EC which can't be used in open-drain
- * mode. To work around this PCH_RCIN_L is set to an input. It will
- * only be set to an output when it needs to be driven to 0.
- */
-GPIO(PCH_RCIN_L, PIN(L, 6), GPIO_INPUT) /* RCIN# line to PCH (for 8042 emulation) */
-GPIO(PCH_RSMRST_L, PIN(F, 1), GPIO_OUT_LOW) /* Reset PCH resume power plane logic */
-GPIO(PCH_SMI_L, PIN(F, 4), GPIO_ODR_HIGH) /* System management interrupt to PCH */
-GPIO(TOUCHSCREEN_RESET_L, PIN(N, 7), GPIO_OUT_LOW) /* Reset touch screen */
-GPIO(EC_EDP_VDD_EN, PIN(J, 5), GPIO_OUT_LOW) /* Enable EDP (passthru from PCH) */
-
-GPIO(LPC_CLKRUN_L, PIN(M, 2), GPIO_ODR_HIGH) /* Dunno. Probably important, though. */
-GPIO(USB1_ENABLE, PIN(E, 4), GPIO_OUT_LOW) /* USB port 1 output power enable */
-GPIO(USB2_ENABLE, PIN(D, 5), GPIO_OUT_LOW) /* USB port 2 output power enable */
-
-GPIO(PCH_SUSACK_L, PIN(F, 3), GPIO_OUT_HIGH) /* Acknowledge PCH SUSWARN# signal */
-GPIO(PCH_RTCRST_L, PIN(F, 6), GPIO_ODR_HIGH) /* Not supposed to be here */
-GPIO(PCH_SRTCRST_L, PIN(F, 7), GPIO_ODR_HIGH) /* Not supposed to be here */
-
-GPIO(BAT_LED0_L, PIN(D, 0), GPIO_ODR_HIGH) /* Battery charging LED - blue */
-GPIO(BAT_LED1_L, PIN(N, 4), GPIO_ODR_HIGH) /* Battery charging LED - orange */
-GPIO(PWR_LED0_L, PIN(D, 1), GPIO_ODR_HIGH) /* Power LED - blue */
-GPIO(PWR_LED1_L, PIN(N, 6), GPIO_ODR_HIGH) /* Power LED - orange */
-
-ALTERNATE(PIN_MASK(A, 0x03), 1, MODULE_UART, GPIO_PULL_UP) /* UART0 */
-ALTERNATE(PIN_MASK(B, 0x04), 3, MODULE_I2C, 0) /* I2C0 SCL */
-ALTERNATE(PIN_MASK(B, 0x08), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C0 SDA */
-ALTERNATE(PIN_MASK(B, 0x40), 3, MODULE_I2C, 0) /* I2C5 SCL */
-ALTERNATE(PIN_MASK(B, 0x80), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C5 SDA */
-ALTERNATE(PIN_MASK(G, 0x30), 1, MODULE_UART, 0) /* UART2 */
-ALTERNATE(PIN_MASK(J, 0x40), 1, MODULE_PECI, 0) /* PECI Tx */
-ALTERNATE(PIN_MASK(J, 0x80), 0, MODULE_PECI, GPIO_ANALOG) /* PECI Rx */
-ALTERNATE(PIN_MASK(L, 0x3f), 15, MODULE_LPC, 0) /* LPC */
-ALTERNATE(PIN_MASK(M, 0x33), 15, MODULE_LPC, 0) /* LPC */
-ALTERNATE(PIN_MASK(N, 0x0c), 1, MODULE_PWM_FAN, 0) /* FAN0PWM2 */
diff --git a/board/peppy/led.c b/board/peppy/led.c
deleted file mode 100644
index ffdcdb8359..0000000000
--- a/board/peppy/led.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/* 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.
- *
- * Power and battery LED control for Peppy.
- */
-
-#include "battery.h"
-#include "charge_state.h"
-#include "chipset.h"
-#include "ec_commands.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "host_command.h"
-#include "led_common.h"
-#include "util.h"
-
-#define LED_TOTAL_TICKS 16
-#define LED_ON_TICKS 4
-
-enum led_color {
- LED_OFF = 0,
- LED_BLUE,
- LED_AMBER,
- LED_PINK,
-
- LED_COLOR_COUNT /* Number of colors, not a color itself */
-};
-
-const enum ec_led_id supported_led_ids[] = {
- EC_LED_ID_POWER_LED, EC_LED_ID_BATTERY_LED};
-
-const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
-
-static int peppy_led_set_gpio(enum led_color color,
- enum gpio_signal gpio_led_blue_l,
- enum gpio_signal gpio_led_amber_l)
-{
- switch (color) {
- case LED_OFF:
- gpio_set_level(gpio_led_blue_l, 1);
- gpio_set_level(gpio_led_amber_l, 1);
- break;
- case LED_BLUE:
- gpio_set_level(gpio_led_blue_l, 0);
- gpio_set_level(gpio_led_amber_l, 1);
- break;
- case LED_AMBER:
- gpio_set_level(gpio_led_blue_l, 1);
- gpio_set_level(gpio_led_amber_l, 0);
- break;
- case LED_PINK:
- gpio_set_level(gpio_led_blue_l, 0);
- gpio_set_level(gpio_led_amber_l, 0);
- break;
- default:
- return EC_ERROR_UNKNOWN;
- }
- return EC_SUCCESS;
-}
-
-static int peppy_led_set_color_battery(enum led_color color)
-{
- return peppy_led_set_gpio(color, GPIO_BAT_LED0_L, GPIO_BAT_LED1_L);
-}
-
-static int peppy_led_set_color_power(enum led_color color)
-{
- return peppy_led_set_gpio(color, GPIO_PWR_LED0_L, GPIO_PWR_LED1_L);
-}
-
-static int peppy_led_set_color(enum ec_led_id led_id, enum led_color color)
-{
- int rv;
-
- led_auto_control(led_id, 0);
- switch (led_id) {
- case EC_LED_ID_BATTERY_LED:
- rv = peppy_led_set_color_battery(color);
- break;
- case EC_LED_ID_POWER_LED:
- rv = peppy_led_set_color_power(color);
- break;
- default:
- return EC_ERROR_UNKNOWN;
- }
- return rv;
-}
-
-int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
-{
- if (brightness[EC_LED_COLOR_BLUE] != 0 &&
- brightness[EC_LED_COLOR_YELLOW] != 0)
- peppy_led_set_color(led_id, LED_PINK);
- else if (brightness[EC_LED_COLOR_BLUE] != 0)
- peppy_led_set_color(led_id, LED_BLUE);
- else if (brightness[EC_LED_COLOR_YELLOW] != 0)
- peppy_led_set_color(led_id, LED_AMBER);
- else
- peppy_led_set_color(led_id, LED_OFF);
-
- return EC_SUCCESS;
-}
-
-void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
-{
- /* Ignoring led_id as both leds support the same colors */
- brightness_range[EC_LED_COLOR_BLUE] = 1;
- brightness_range[EC_LED_COLOR_YELLOW] = 1;
-}
-
-static void peppy_led_set_power(void)
-{
- static int power_ticks;
- static int previous_state_suspend;
-
- power_ticks++;
-
- if (chipset_in_state(CHIPSET_STATE_SUSPEND)) {
- /* Reset ticks if entering suspend so LED turns amber
- * as soon as possible. */
- if (!previous_state_suspend)
- power_ticks = 0;
-
- /* Blink once every four seconds. */
- peppy_led_set_color_power(
- (power_ticks % LED_TOTAL_TICKS < LED_ON_TICKS) ?
- LED_AMBER : LED_OFF);
-
- previous_state_suspend = 1;
- return;
- }
-
- previous_state_suspend = 0;
-
- if (chipset_in_state(CHIPSET_STATE_ANY_OFF))
- peppy_led_set_color_power(LED_OFF);
- else if (chipset_in_state(CHIPSET_STATE_ON))
- peppy_led_set_color_power(LED_BLUE);
-}
-
-static void peppy_led_set_battery(void)
-{
- static int battery_ticks;
- uint32_t chflags = charge_get_flags();
-
- battery_ticks++;
-
- switch (charge_get_state()) {
- case PWR_STATE_CHARGE:
- peppy_led_set_color_battery(LED_AMBER);
- break;
- case PWR_STATE_CHARGE_NEAR_FULL:
- peppy_led_set_color_battery(LED_BLUE);
- break;
- case PWR_STATE_DISCHARGE:
- peppy_led_set_color_battery(LED_OFF);
- break;
- case PWR_STATE_ERROR:
- peppy_led_set_color_battery(
- (battery_ticks % LED_TOTAL_TICKS < LED_ON_TICKS) ?
- LED_AMBER : LED_OFF);
- break;
- case PWR_STATE_IDLE: /* External power connected in IDLE. */
- if (chflags & CHARGE_FLAG_FORCE_IDLE)
- peppy_led_set_color_battery(
- (battery_ticks & 0x4) ? LED_BLUE : LED_OFF);
- else
- peppy_led_set_color_battery(LED_BLUE);
- break;
- default:
- /* Other states don't alter LED behavior */
- break;
- }
-}
-
-/* Called by hook task every 250mSec */
-static void led_tick(void)
-{
- if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED))
- peppy_led_set_power();
-
- if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED))
- peppy_led_set_battery();
-}
-DECLARE_HOOK(HOOK_TICK, led_tick, HOOK_PRIO_DEFAULT);
diff --git a/board/snow/Makefile b/board/snow/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/snow/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/snow/board.c b/board/snow/board.c
deleted file mode 100644
index c356378fb1..0000000000
--- a/board/snow/board.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/* 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.
- */
-/* Snow board-specific configuration */
-
-#include "battery.h"
-#include "board_config.h"
-#include "chipset.h"
-#include "common.h"
-#include "console.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "i2c.h"
-#include "keyboard_raw.h"
-#include "lid_switch.h"
-#include "pmu_tpschrome.h"
-#include "power.h"
-#include "power_led.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "registers.h"
-#include "spi.h"
-#include "task.h"
-#include "timer.h"
-#include "util.h"
-
-#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-#define GPIO_KB_OUTPUT GPIO_ODR_HIGH
-
-#define INT_BOTH_FLOATING (GPIO_INPUT | GPIO_INT_BOTH)
-#define INT_BOTH_PULL_UP (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-
-#include "gpio_list.h"
-
-/* Battery temperature ranges in degrees C */
-static const struct battery_info info = {
- .start_charging_min_c = 0,
- .start_charging_max_c = 45,
- .charging_min_c = 0,
- .charging_max_c = 60,
- .discharging_min_c = 0,
- .discharging_max_c = 100,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"master", I2C_PORT_MASTER, 100, GPIO_I2C1_SCL, GPIO_I2C1_SDA},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {STM32_TIM(2), STM32_TIM_CH(2),
- PWM_CONFIG_ACTIVE_LOW, GPIO_LED_POWER_L},
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-void board_config_pre_init(void)
-{
- uint32_t val;
-
- /* Enable all GPIOs clocks */
- STM32_RCC_APB2ENR |= 0x1fd;
-
- /* remap OSC_IN/OSC_OUT to PD0/PD1 */
- STM32_GPIO_AFIO_MAPR |= 1 << 15;
-
- /* use PB3 as a GPIO, so disable JTAG and keep only SWD */
- STM32_GPIO_AFIO_MAPR = (STM32_GPIO_AFIO_MAPR & ~(0x7 << 24))
- | (2 << 24);
-
- /* remap TIM2_CH2 to PB3 */
- STM32_GPIO_AFIO_MAPR = (STM32_GPIO_AFIO_MAPR & ~(0x3 << 8))
- | (1 << 8);
-
- /*
- * Set alternate function for USART1. For alt. function input
- * the port is configured in either floating or pull-up/down
- * input mode (ref. section 7.1.4 in datasheet RM0041):
- * PA9: Tx, alt. function output
- * PA10: Rx, input with pull-down
- *
- * note: see crosbug.com/p/12223 for more info
- */
- val = STM32_GPIO_CRH(GPIO_A) & ~0x00000ff0;
- val |= 0x00000890;
- STM32_GPIO_CRH(GPIO_A) = val;
-
- /* EC_INT is output, open-drain */
- val = STM32_GPIO_CRH(GPIO_B) & ~0xf0;
- val |= 0x50;
- STM32_GPIO_CRH(GPIO_B) = val;
- /* put GPIO in Hi-Z state */
- gpio_set_level(GPIO_EC_INT, 1);
-}
-
-/* GPIO configuration to be done after I2C module init */
-void board_i2c_post_init(int port)
-{
- uint32_t val;
-
- /* enable alt. function (open-drain) */
- if (port == STM32_I2C1_PORT) {
- /* I2C1 is on PB6-7 */
- val = STM32_GPIO_CRL(GPIO_B) & ~0xff000000;
- val |= 0xdd000000;
- STM32_GPIO_CRL(GPIO_B) = val;
- } else if (port == STM32_I2C2_PORT) {
- /* I2C2 is on PB10-11 */
- val = STM32_GPIO_CRH(GPIO_B) & ~0x0000ff00;
- val |= 0x0000dd00;
- STM32_GPIO_CRH(GPIO_B) = val;
- }
-}
-
-void keyboard_suppress_noise(void)
-{
- /* notify audio codec of keypress for noise suppression */
- gpio_set_level(GPIO_CODEC_INT, 0);
- gpio_set_level(GPIO_CODEC_INT, 1);
-}
-
-static void board_startup_hook(void)
-{
- gpio_set_flags(GPIO_SUSPEND_L, INT_BOTH_PULL_UP);
-}
-DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_startup_hook, HOOK_PRIO_DEFAULT);
-
-static void board_shutdown_hook(void)
-{
- /* Disable pull-up on SUSPEND_L during shutdown to prevent leakage */
- gpio_set_flags(GPIO_SUSPEND_L, INT_BOTH_FLOATING);
-}
-DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_shutdown_hook, HOOK_PRIO_DEFAULT);
-
-int pmu_board_init(void)
-{
- int ver, failure = 0;
-
- /* Set fast charging timeout to 6 hours*/
- if (!failure)
- failure = pmu_set_fastcharge(TIMEOUT_6HRS);
- /* Enable external gpio CHARGER_EN control */
- if (!failure)
- failure = pmu_enable_ext_control(1);
- /* Disable force charging */
- if (!failure)
- failure = pmu_enable_charger(0);
-
- /* Set NOITERM bit */
- if (!failure)
- failure = pmu_low_current_charging(1);
-
- /*
- * High temperature charging
- * termination voltage: 2.1V
- * termination current: 100%
- */
- if (!failure)
- failure = pmu_set_term_voltage(RANGE_T34, TERM_V2100);
- if (!failure)
- failure = pmu_set_term_current(RANGE_T34, TERM_I1000);
- /*
- * Standard temperature charging
- * termination voltage: 2.1V
- * termination current: 100%
- */
- if (!failure)
- failure = pmu_set_term_voltage(RANGE_T23, TERM_V2100);
- if (!failure)
- failure = pmu_set_term_current(RANGE_T23, TERM_I1000);
-
- /*
- * Ignore TPSCHROME NTC reading in T40. This is snow board specific
- * setting. Check:
- * http://crosbug.com/p/12221
- * http://crosbug.com/p/13171
- */
- if (!failure)
- failure = pmu_set_term_voltage(RANGE_T40, TERM_V2100);
- if (!failure)
- failure = pmu_set_term_current(RANGE_T40, TERM_I1000);
-
- /* Workaround init values before ES3 */
- if (pmu_version(&ver) || ver < 3) {
- /* Termination current: 75% */
- if (!failure)
- failure = pmu_set_term_current(RANGE_T34, TERM_I0750);
- if (!failure)
- failure = pmu_set_term_current(RANGE_T23, TERM_I0750);
- if (!failure)
- failure = pmu_set_term_current(RANGE_T40, TERM_I0750);
- }
-
- return failure ? EC_ERROR_UNKNOWN : EC_SUCCESS;
-}
diff --git a/board/snow/board.h b/board/snow/board.h
deleted file mode 100644
index 499f4d4d11..0000000000
--- a/board/snow/board.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* 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.
- */
-
-/* Snow board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* 16 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 16000000
-
-/* Debug features */
-#undef CONFIG_TASK_PROFILING
-
-/* Optional features */
-#define CONFIG_BATTERY_BQ20Z453
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BOARD_PRE_INIT
-#define CONFIG_CHARGER_TPS65090
-#define CONFIG_CHIPSET_GAIA
-#define CONFIG_CMD_PMU
-#define CONFIG_EXTPOWER_SNOW
-#define CONFIG_HOST_COMMAND_STATUS
-#define CONFIG_I2C
-#define CONFIG_I2C_ARBITRATION
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
-#define CONFIG_KEYBOARD_SUPPRESS_NOISE
-#define CONFIG_PMU_HARD_RESET
-#define CONFIG_PMU_TPS65090
-#define CONFIG_PWM
-#define CONFIG_VBOOT_HASH
-
-/* use STOP mode when we have nothing to do */
-#define CONFIG_LOW_POWER_IDLE
-
-#ifndef __ASSEMBLER__
-
-/* Keyboard output ports */
-#define KB_OUT_PORT_LIST GPIO_B, GPIO_C
-
-/* Charging */
-#define I2C_PORT_MASTER 1
-#define I2C_PORT_BATTERY I2C_PORT_MASTER
-#define I2C_PORT_CHARGER I2C_PORT_MASTER
-#define I2C_PORT_SLAVE 1
-
-#define GPIO_AP_CLAIM GPIO_SPI1_NSS /* AP claims bus */
-#define GPIO_EC_CLAIM GPIO_SPI1_MISO /* EC claims bus */
-
-/* Timer selection */
-#define TIM_CLOCK_MSB 3
-#define TIM_CLOCK_LSB 4
-#define TIM_POWER_LED 2
-#define TIM_WATCHDOG 1
-
-#include "gpio_signal.h"
-
-enum pwm_channel {
- PWM_CH_POWER_LED = 0,
- /* Number of PWM channels */
- PWM_CH_COUNT
-};
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/snow/build.mk b/board/snow/build.mk
deleted file mode 100644
index 84db0e5304..0000000000
--- a/board/snow/build.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- makefile -*-
-# Copyright (c) 2012 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32F100RB
-CHIP:=stm32
-CHIP_FAMILY:=stm32f
-CHIP_VARIANT:=stm32f100
-
-board-y=board.o
diff --git a/board/snow/ec.tasklist b/board/snow/ec.tasklist
deleted file mode 100644
index e9c4bdd269..0000000000
--- a/board/snow/ec.tasklist
+++ /dev/null
@@ -1,26 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_NOTEST(POWERLED, power_led_task, NULL, 256) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, 360)
diff --git a/board/snow/gpio.inc b/board/snow/gpio.inc
deleted file mode 100644
index 359530bf81..0000000000
--- a/board/snow/gpio.inc
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(KB_PWR_ON_L, PIN(B, 5), GPIO_INT_BOTH, power_signal_interrupt) /* Keyboard power button */
-GPIO_INT(PP1800_LDO2, PIN(A, 1), GPIO_INT_BOTH, power_signal_interrupt) /* LDO2 is ON (end of PMIC sequence) */
-GPIO_INT(SOC1V8_XPSHOLD, PIN(A, 3), GPIO_INT_BOTH, power_signal_interrupt) /* App Processor ON */
-GPIO_INT(CHARGER_INT_L, PIN(C, 4), GPIO_INT_FALLING, pmu_irq_handler)
-GPIO_INT(LID_OPEN, PIN(C, 13), GPIO_INT_BOTH, lid_interrupt) /* LID switch detection */
-GPIO_INT(SUSPEND_L, PIN(A, 7), INT_BOTH_FLOATING, power_signal_interrupt) /* AP suspend/resume state */
-GPIO_INT(SPI1_NSS, PIN(A, 4), GPIO_DEFAULT, spi_event)
-
-/* Keyboard inputs */
-GPIO_INT(KB_IN00, PIN(C, 8), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN01, PIN(C, 9), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN02, PIN(C, 10), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN03, PIN(C, 11), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN04, PIN(C, 12), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN05, PIN(C, 14), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN06, PIN(C, 15), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN07, PIN(D, 2), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-
-
-/* Other inputs */
-GPIO(AC_PWRBTN_L, PIN(A, 0), GPIO_INT_BOTH)
-GPIO(WP_L, PIN(B, 4), GPIO_INPUT) /* Write protection pin (low active) */
-
-/*
- * I2C pins should be configured as inputs until I2C module is
- * initialized. This will avoid driving the lines unintentionally.
- */
-GPIO(I2C1_SCL, PIN(B, 6), GPIO_INPUT)
-GPIO(I2C1_SDA, PIN(B, 7), GPIO_INPUT)
-GPIO(I2C2_SCL, PIN(B, 10), GPIO_INPUT)
-GPIO(I2C2_SDA, PIN(B, 11), GPIO_INPUT)
-
-/* Outputs */
-GPIO(AC_STATUS, PIN(A, 5), GPIO_DEFAULT)
-GPIO(SPI1_MISO, PIN(A, 6), GPIO_DEFAULT)
-GPIO(EN_PP1350, PIN(A, 2), GPIO_OUT_LOW) /* DDR 1.35v rail enable */
-GPIO(EN_PP5000, PIN(A, 11), GPIO_OUT_LOW) /* 5.0v rail enable */
-GPIO(EN_PP3300, PIN(A, 8), GPIO_OUT_LOW) /* 3.3v rail enable */
-GPIO(PMIC_PWRON_L,PIN(A, 12), GPIO_OUT_HIGH) /* 5v rail ready */
-GPIO(PMIC_RESET, PIN(A, 15), GPIO_OUT_LOW) /* Force hard reset of the pmic */
-
-/* EC is R/W mode for the kbc mux */
-GPIO(ENTERING_RW, PIN(D, 0), GPIO_OUT_LOW)
-GPIO(CHARGER_EN, PIN(B, 2), GPIO_OUT_LOW)
-GPIO(EC_INT, PIN(B, 9), GPIO_ODR_HIGH)
-
-/* To audio codec (KB noise cancellation) */
-GPIO(CODEC_INT, PIN(D, 1), GPIO_ODR_HIGH)
-GPIO(LED_POWER_L, PIN(B, 3), GPIO_INPUT) /* Keyboard power LED */
-GPIO(KB_OUT00, PIN(B, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT01, PIN(B, 8), GPIO_KB_OUTPUT)
-GPIO(KB_OUT02, PIN(B, 12), GPIO_KB_OUTPUT)
-GPIO(KB_OUT03, PIN(B, 13), GPIO_KB_OUTPUT)
-GPIO(KB_OUT04, PIN(B, 14), GPIO_KB_OUTPUT)
-GPIO(KB_OUT05, PIN(B, 15), GPIO_KB_OUTPUT)
-GPIO(KB_OUT06, PIN(C, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT07, PIN(C, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT08, PIN(C, 2), GPIO_KB_OUTPUT)
-GPIO(KB_OUT09, PIN(B, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT10, PIN(C, 5), GPIO_KB_OUTPUT)
-GPIO(KB_OUT11, PIN(C, 6), GPIO_KB_OUTPUT)
-GPIO(KB_OUT12, PIN(C, 7), GPIO_KB_OUTPUT)
diff --git a/board/speedy/Makefile b/board/speedy/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/speedy/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/speedy/battery.c b/board/speedy/battery.c
deleted file mode 100644
index 02b491443f..0000000000
--- a/board/speedy/battery.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (c) 2012 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.
- *
- * Battery pack vendor provided charging profile
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-#include "console.h"
-#include "gpio.h"
-#include "host_command.h"
-#include "util.h"
-
-/* Shutdown mode parameter to write to manufacturer access register */
-#define SB_SHUTDOWN_DATA 0x0010
-
-static const struct battery_info info = {
- .voltage_max = 8400, /* mV */
- .voltage_normal = 7400,
- .voltage_min = 6000,
- .precharge_current = 256, /* mA */
- .start_charging_min_c = 0,
- .start_charging_max_c = 45,
- .charging_min_c = 0,
- .charging_max_c = 45,
- .discharging_min_c = 0,
- .discharging_max_c = 60,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-static int cutoff(void)
-{
- int rv;
-
- /* Ship mode command must be sent twice to take effect */
- rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-
- if (rv != EC_SUCCESS)
- return rv;
-
- return sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-}
-
-
-int board_cut_off_battery(void)
-{
- return cutoff();
-}
-
diff --git a/board/speedy/board.c b/board/speedy/board.c
deleted file mode 100644
index a91a25c6a4..0000000000
--- a/board/speedy/board.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-/* Veyron board-specific configuration */
-
-#include "battery.h"
-#include "chipset.h"
-#include "common.h"
-#include "extpower.h"
-#include "gpio.h"
-#include "i2c.h"
-#include "keyboard_raw.h"
-#include "lid_switch.h"
-#include "power.h"
-#include "power_button.h"
-#include "power.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "registers.h"
-#include "spi.h"
-#include "task.h"
-#include "util.h"
-#include "timer.h"
-#include "charger.h"
-
-#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-#define GPIO_KB_OUTPUT GPIO_ODR_HIGH
-
-#include "gpio_list.h"
-
-
-/* power signal list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {
- {GPIO_SOC_POWER_GOOD, 1, "POWER_GOOD"},
- {GPIO_SUSPEND_L, 1, "SUSPEND#_ASSERTED"},
-};
-BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"master", I2C_PORT_MASTER, 100},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {STM32_TIM(2), STM32_TIM_CH(3),
- PWM_CONFIG_ACTIVE_LOW},
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-/**
- * Discharge battery when on AC power for factory test.
- */
-int board_discharge_on_ac(int enable)
-{
- return charger_discharge_on_ac(enable);
-}
-
-void board_config_pre_init(void)
-{
- /* enable SYSCFG clock */
- STM32_RCC_APB2ENR |= 1 << 0;
-
- /* Remap USART DMA to match the USART driver */
- /*
- * the DMA mapping is :
- * Chan 2 : TIM1_CH1
- * Chan 3 : SPI1_TX
- * Chan 4 : USART1_TX
- * Chan 5 : USART1_RX
- */
- STM32_SYSCFG_CFGR1 |= (1 << 9) | (1 << 10); /* Remap USART1 RX/TX DMA */
-}
diff --git a/board/speedy/board.h b/board/speedy/board.h
deleted file mode 100644
index bebfdc6b2b..0000000000
--- a/board/speedy/board.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/* Veyron board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* Optional features */
-#define CONFIG_AP_HANG_DETECT
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BOARD_PRE_INIT
-#define CONFIG_CHARGER
-#define CONFIG_CHARGER_BQ24715
-#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_V2
-#define CONFIG_CHIPSET_ROCKCHIP
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_FORCE_CONSOLE_RESUME
-#define CONFIG_HOST_COMMAND_STATUS
-#define CONFIG_I2C
-#define CONFIG_KEYBOARD_COL2_INVERTED
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
-#define CONFIG_LED_COMMON
-#define CONFIG_LOW_POWER_IDLE
-#define CONFIG_LOW_POWER_S0
-#define CONFIG_POWER_BUTTON
-#define CONFIG_POWER_BUTTON_ACTIVE_STATE 1
-#define CONFIG_POWER_COMMON
-#define CONFIG_PWM
-#define CONFIG_SPI
-#define CONFIG_STM_HWTIMER32
-#define CONFIG_UART_RX_DMA
-#define CONFIG_VBOOT_HASH
-#undef CONFIG_WATCHDOG_HELP
-
-#define CONFIG_HIBERNATE_WAKEUP_PINS (STM32_PWR_CSR_EWUP1 | STM32_PWR_CSR_EWUP6)
-
-#ifndef __ASSEMBLER__
-
-/* 48 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 48000000
-
-/* Keyboard output port list */
-#define KB_OUT_PORT_LIST GPIO_A, GPIO_B, GPIO_C
-
-/* Single I2C port, where the EC is the master. */
-#define I2C_PORT_MASTER 0
-#define I2C_PORT_BATTERY I2C_PORT_MASTER
-#define I2C_PORT_CHARGER I2C_PORT_MASTER
-
-/* Timer selection */
-#define TIM_CLOCK32 2
-#define TIM_WATCHDOG 4
-
-#include "gpio_signal.h"
-
-enum power_signal {
- RK_POWER_GOOD = 0,
- RK_SUSPEND_ASSERTED,
- /* Number of power signals */
- POWER_SIGNAL_COUNT
-};
-
-enum pwm_channel {
- PWM_CH_POWER_LED = 0,
- /* Number of PWM channels */
- PWM_CH_COUNT
-};
-
-/* Charger module */
-#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 /* Input sensor resistor, mOhm */
-/* Input current limit for 45W AC adapter:
- * 45W/19V*85%=2013mA, choose the closest charger setting = 2048mA
- */
-#define CONFIG_CHARGER_INPUT_CURRENT 2048 /* mA, based on Link HW design */
-#define CONFIG_CHARGER_CURRENT_LIMIT 3000 /* PL102 inductor 3.0A(3.8A) */
-
-/* Discharge battery when on AC power for factory test. */
-int board_discharge_on_ac(int enable);
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/speedy/build.mk b/board/speedy/build.mk
deleted file mode 100644
index a0f9570511..0000000000
--- a/board/speedy/build.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- makefile -*-
-# Copyright (c) 2014 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32F071RB
-CHIP:=stm32
-CHIP_FAMILY:=stm32f0
-CHIP_VARIANT:=stm32f07x
-
-board-y=board.o battery.o led.o
diff --git a/board/speedy/ec.tasklist b/board/speedy/ec.tasklist
deleted file mode 100644
index 318cfe2553..0000000000
--- a/board/speedy/ec.tasklist
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (c) 2014 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK(n, r, d, s) where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/speedy/gpio.inc b/board/speedy/gpio.inc
deleted file mode 100644
index 79b05dc73f..0000000000
--- a/board/speedy/gpio.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(POWER_BUTTON_L, PIN(B, 5), GPIO_INT_BOTH, power_button_interrupt) /* wk6 */ /* active high, the name is for compatibility with existing code */
-GPIO_INT(SOC_POWER_GOOD, PIN(A, 3), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(LID_OPEN, PIN(C, 13), GPIO_INT_BOTH, lid_interrupt)
-GPIO_INT(SUSPEND_L, PIN(C, 7), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(SPI1_NSS, PIN(A, 4), GPIO_INT_BOTH, spi_event)
-GPIO_INT(AC_PRESENT, PIN(A, 8), GPIO_INT_BOTH | GPIO_PULL_UP, extpower_interrupt)
-
-/* Keyboard inputs */
-GPIO_INT(KB_IN00, PIN(C, 8), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN01, PIN(C, 9), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN02, PIN(C, 10), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN03, PIN(C, 11), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN04, PIN(C, 12), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN05, PIN(C, 14), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN06, PIN(C, 15), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN07, PIN(D, 2), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-
-/* Other inputs */
-GPIO(EC_WAKE, PIN(A, 0), GPIO_INPUT | GPIO_PULL_DOWN) /* wk1 */
-GPIO(WP_L, PIN(B, 4), GPIO_INPUT)
-
-/* Outputs */
-GPIO(BAT_LED0, PIN(B, 11), GPIO_OUT_LOW)
-GPIO(BAT_LED1, PIN(A, 11), GPIO_OUT_LOW)
-GPIO(EC_BL_OVERRIDE, PIN(F, 1), GPIO_OUT_LOW)
-GPIO(EC_INT, PIN(B, 9), GPIO_OUT_LOW)
-GPIO(ENTERING_RW, PIN(F, 0), GPIO_OUT_LOW)
-GPIO(I2C1_SCL, PIN(B, 6), GPIO_ODR_HIGH)
-GPIO(I2C1_SDA, PIN(B, 7), GPIO_ODR_HIGH)
-GPIO(KB_OUT00, PIN(B, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT01, PIN(B, 8), GPIO_KB_OUTPUT)
-GPIO(KB_OUT02, PIN(B, 12), GPIO_OUT_LOW) /* Inverted from silegro */
-GPIO(KB_OUT03, PIN(B, 13), GPIO_KB_OUTPUT)
-GPIO(KB_OUT04, PIN(B, 14), GPIO_KB_OUTPUT)
-GPIO(KB_OUT05, PIN(B, 15), GPIO_KB_OUTPUT)
-GPIO(KB_OUT06, PIN(C, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT07, PIN(C, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT08, PIN(C, 2), GPIO_KB_OUTPUT)
-GPIO(KB_OUT09, PIN(B, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT10, PIN(C, 5), GPIO_KB_OUTPUT)
-GPIO(KB_OUT11, PIN(C, 4), GPIO_KB_OUTPUT)
-GPIO(KB_OUT12, PIN(A, 13), GPIO_KB_OUTPUT)
-GPIO(POWER_LED, PIN(A, 2), GPIO_OUT_LOW)
-GPIO(PMIC_PWRON, PIN(A, 12), GPIO_OUT_LOW)
-GPIO(PMIC_RESET, PIN(B, 3), GPIO_OUT_LOW)
-GPIO(PMIC_SOURCE_PWREN, PIN(B, 10), GPIO_OUT_LOW)
-GPIO(PMIC_WARM_RESET_L, PIN(C, 3), GPIO_ODR_HIGH)
-
-ALTERNATE(PIN_MASK(A, 0x00f0), 0, MODULE_SPI, 0)
-ALTERNATE(PIN_MASK(A, 0x0600), 1, MODULE_UART, 0)
-ALTERNATE(PIN_MASK(B, 0x00c0), 1, MODULE_I2C, 0)
diff --git a/board/speedy/led.c b/board/speedy/led.c
deleted file mode 100644
index 30fceaaa3d..0000000000
--- a/board/speedy/led.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Copyright (c) 2014 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.
- *
- * Battery LED and Power LED control for speedy
- */
-
-#include "gpio.h"
-#include "hooks.h"
-#include "battery.h"
-#include "charge_state.h"
-#include "chipset.h"
-#include "led_common.h"
-#include "util.h"
-
-const enum ec_led_id supported_led_ids[] = {
- EC_LED_ID_BATTERY_LED,
- EC_LED_ID_POWER_LED,
-};
-
-const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
-
-enum led_color {
- LED_GREEN = 0,
- LED_ORANGE,
- LED_COLOR_COUNT /* Number of colors, not a color itself */
-};
-
-static int bat_led_set(enum led_color color, int on)
-{
- switch (color) {
- case LED_GREEN:
- gpio_set_level(GPIO_BAT_LED1, on ? 0 : 1);
- break;
- case LED_ORANGE:
- gpio_set_level(GPIO_BAT_LED0, on ? 0 : 1);
- break;
- default:
- return EC_ERROR_UNKNOWN;
- }
- return EC_SUCCESS;
-}
-
-static int pwr_led_set(int on)
-{
- gpio_set_level(GPIO_POWER_LED, on ? 0 : 1);
- return EC_SUCCESS;
-}
-
-void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
-{
- /* Ignoring led_id as both leds support the same colors */
- brightness_range[EC_LED_COLOR_GREEN] = 1;
- brightness_range[EC_LED_COLOR_YELLOW] = 1;
-}
-
-int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
-{
- switch (led_id) {
- case EC_LED_ID_BATTERY_LED:
- if (brightness[EC_LED_COLOR_GREEN] != 0) {
- bat_led_set(LED_GREEN, 1);
- bat_led_set(LED_ORANGE, 0);
- } else if (brightness[EC_LED_COLOR_YELLOW] != 0) {
- bat_led_set(LED_GREEN, 1);
- bat_led_set(LED_ORANGE, 1);
- } else {
- bat_led_set(LED_GREEN, 0);
- bat_led_set(LED_ORANGE, 0);
- }
- break;
- case EC_LED_ID_POWER_LED:
- pwr_led_set(brightness[EC_LED_COLOR_BLUE]);
- break;
- default:
- return EC_ERROR_UNKNOWN;
-
- }
- return EC_SUCCESS;
-}
-
-static void speedy_led_set_power(void)
-{
- static int power_second;
-
- power_second++;
-
- /* PWR LED behavior:
- * Power on: Green
- * Suspend: Green in breeze mode ( 1 sec on/ 3 sec off)
- * Power off: OFF
- */
- if (chipset_in_state(CHIPSET_STATE_ANY_OFF))
- pwr_led_set(0);
- else if (chipset_in_state(CHIPSET_STATE_ON))
- pwr_led_set(1);
- else if (chipset_in_state(CHIPSET_STATE_SUSPEND))
- pwr_led_set((power_second & 3) ? 0 : 1);
-}
-
-
-static void speedy_led_set_battery(void)
-{
- static int battery_second;
-
- battery_second++;
-
- /* BAT LED behavior:
- * Fully charged / idle: Off
- * Under charging: Orange
- * Battery low (10%): Orange in breeze mode (1 sec on, 3 sec off)
- * Battery critical low (less than 3%) or abnormal battery
- * situation: Orange in blinking mode (1 sec on, 1 sec off)
- * Using battery or not connected to AC power: OFF
- */
- switch (charge_get_state()) {
- case PWR_STATE_CHARGE:
- bat_led_set(LED_ORANGE, 1);
- break;
- case PWR_STATE_CHARGE_NEAR_FULL:
- bat_led_set(LED_ORANGE, 1);
- break;
- case PWR_STATE_DISCHARGE:
- if (charge_get_percent() < 3)
- bat_led_set(LED_ORANGE, (battery_second & 1) ? 0 : 1);
- else if (charge_get_percent() < 10)
- bat_led_set(LED_ORANGE, (battery_second & 3) ? 0 : 1);
- else
- bat_led_set(LED_ORANGE, 0);
- break;
- case PWR_STATE_ERROR:
- bat_led_set(LED_ORANGE, (battery_second & 1) ? 0 : 1);
- break;
- case PWR_STATE_IDLE: /* External power connected in IDLE. */
- bat_led_set(LED_ORANGE, 0);
- break;
- default:
- /* Other states don't alter LED behavior */
- break;
- }
-}
-
-/** * Called by hook task every 1 sec */
-static void led_second(void)
-{
- if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED))
- speedy_led_set_power();
- if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED))
- speedy_led_set_battery();
-}
-DECLARE_HOOK(HOOK_SECOND, led_second, HOOK_PRIO_DEFAULT);
-
diff --git a/board/spring/Makefile b/board/spring/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/spring/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/spring/battery.c b/board/spring/battery.c
deleted file mode 100644
index 246552786e..0000000000
--- a/board/spring/battery.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* 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.
- *
- * Smart battery driver for Spring.
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-
-/* Shutdown mode parameter to write to manufacturer access register */
-#define SB_SHUTDOWN_DATA 0x0010
-
-/* Battery temperature ranges in degrees C */
-static const struct battery_info info = {
- .start_charging_min_c = 5,
- .start_charging_max_c = 45,
- .charging_min_c = 5,
- .charging_max_c = 60,
- .discharging_min_c = 0,
- .discharging_max_c = 100,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-int board_cut_off_battery(void)
-{
- int rv;
-
- /* Ship mode command must be sent twice to take effect */
- rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-
- if (rv != EC_SUCCESS)
- return rv;
-
- return sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-}
diff --git a/board/spring/board.c b/board/spring/board.c
deleted file mode 100644
index b501574cd1..0000000000
--- a/board/spring/board.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* 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.
- */
-/* Spring board-specific configuration */
-
-#include "adc.h"
-#include "adc_chip.h"
-#include "board_config.h"
-#include "chipset.h"
-#include "common.h"
-#include "console.h"
-#include "extpower.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "host_command.h"
-#include "i2c.h"
-#include "keyboard_raw.h"
-#include "lid_switch.h"
-#include "pmu_tpschrome.h"
-#include "power.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "registers.h"
-#include "timer.h"
-#include "util.h"
-
-#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-#define GPIO_KB_OUTPUT GPIO_ODR_HIGH
-
-#define INT_BOTH_FLOATING (GPIO_INPUT | GPIO_INT_BOTH)
-#define INT_BOTH_PULL_UP (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
-
-#include "gpio_list.h"
-
-/* ADC channels */
-const struct adc_t adc_channels[] = {
- /*
- * VBUS voltage sense pin.
- * Sense pin 3.3V is converted to 4096. Accounting for the 2x
- * voltage divider, the conversion factor is 6600mV/4096.
- */
- [ADC_CH_USB_VBUS_SNS] = {"USB_VBUS_SNS", 6600, 4096, 0, STM32_AIN(5)},
- /* Micro USB D+ sense pin. Converted to mV (3300mV/4096). */
- [ADC_CH_USB_DP_SNS] = {"USB_DP_SNS", 3300, 4096, 0, STM32_AIN(2)},
- /* Micro USB D- sense pin. Converted to mV (3300mV/4096). */
- [ADC_CH_USB_DN_SNS] = {"USB_DN_SNS", 3300, 4096, 0, STM32_AIN(4)},
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {STM32_TIM(3), STM32_TIM_CH(1), 0, GPIO_ILIM},
-};
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"master", I2C_PORT_MASTER, 100, GPIO_I2C1_SCL, GPIO_I2C1_SDA},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-void board_config_pre_init(void)
-{
- uint32_t val;
-
- /* Enable all GPIOs clocks */
- STM32_RCC_APB2ENR |= 0x1fd;
-
- /* remap OSC_IN/OSC_OUT to PD0/PD1 */
- STM32_GPIO_AFIO_MAPR |= 1 << 15;
-
- /*
- * use PA13, PA14, PA15, PB3, PB4 as a GPIO,
- * so disable JTAG and SWD
- */
- STM32_GPIO_AFIO_MAPR = (STM32_GPIO_AFIO_MAPR & ~(0x7 << 24))
- | (4 << 24);
-
- /* remap TIM3_CH1 to PB4 */
- STM32_GPIO_AFIO_MAPR = (STM32_GPIO_AFIO_MAPR & ~(0x3 << 10))
- | (2 << 10);
-
- /* Analog input for ADC pins (PA2, PA4, PA5) */
- STM32_GPIO_CRL(GPIO_A) &= ~0x00ff0f00;
-
- /*
- * Set alternate function for USART1. For alt. function input
- * the port is configured in either floating or pull-up/down
- * input mode (ref. section 7.1.4 in datasheet RM0041):
- * PA9: Tx, alt. function output
- * PA10: Rx, input with pull-down
- *
- * note: see crosbug.com/p/12223 for more info
- */
- val = STM32_GPIO_CRH(GPIO_A) & ~0x00000ff0;
- val |= 0x00000890;
- STM32_GPIO_CRH(GPIO_A) = val;
-
- /* EC_INT is output, open-drain */
- val = STM32_GPIO_CRH(GPIO_B) & ~0xf0;
- val |= 0x50;
- STM32_GPIO_CRH(GPIO_B) = val;
- /* put GPIO in Hi-Z state */
- gpio_set_level(GPIO_EC_INT, 1);
-}
-
-/* GPIO configuration to be done after I2C module init */
-void board_i2c_post_init(int port)
-{
- uint32_t val;
-
- /* enable alt. function (open-drain) */
- if (port == STM32_I2C1_PORT) {
- /* I2C1 is on PB6-7 */
- val = STM32_GPIO_CRL(GPIO_B) & ~0xff000000;
- val |= 0xdd000000;
- STM32_GPIO_CRL(GPIO_B) = val;
- } else if (port == STM32_I2C2_PORT) {
- /* I2C2 is on PB10-11 */
- val = STM32_GPIO_CRH(GPIO_B) & ~0x0000ff00;
- val |= 0x0000dd00;
- STM32_GPIO_CRH(GPIO_B) = val;
- }
-}
-
-static void board_startup_hook(void)
-{
- gpio_set_flags(GPIO_SUSPEND_L, INT_BOTH_PULL_UP);
-
-#ifdef CONFIG_PMU_FORCE_FET
- /* Enable lcd panel power */
- pmu_enable_fet(FET_LCD_PANEL, 1, NULL);
- /* Enable backlight power */
- pmu_enable_fet(FET_BACKLIGHT, 1, NULL);
-#endif /* CONFIG_PMU_FORCE_FET */
-}
-DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_startup_hook, HOOK_PRIO_DEFAULT);
-
-static void board_shutdown_hook(void)
-{
-#ifdef CONFIG_PMU_FORCE_FET
- /* Power off backlight power */
- pmu_enable_fet(FET_BACKLIGHT, 0, NULL);
- /* Power off lcd panel */
- pmu_enable_fet(FET_LCD_PANEL, 0, NULL);
-#endif /* CONFIG_PMU_FORCE_FET */
-
- /* Disable pull-up on SUSPEND_L during shutdown to prevent leakage */
- gpio_set_flags(GPIO_SUSPEND_L, INT_BOTH_FLOATING);
-}
-DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_shutdown_hook, HOOK_PRIO_DEFAULT);
-
-int pmu_board_init(void)
-{
- int failure = 0;
-
- /*
- * Adjust charging parameters to match the expectations
- * of the hardware fixing the cap ringing on DVT+ machines.
- */
- failure |= pmu_set_term_current(RANGE_T01, TERM_I0875);
- failure |= pmu_set_term_current(RANGE_T12, TERM_I0875);
- failure |= pmu_set_term_current(RANGE_T23, TERM_I0875);
- failure |= pmu_set_term_current(RANGE_T34, TERM_I0875);
- failure |= pmu_set_term_current(RANGE_T40, TERM_I1000);
- failure |= pmu_set_term_voltage(RANGE_T01, TERM_V2100);
- failure |= pmu_set_term_voltage(RANGE_T12, TERM_V2100);
- failure |= pmu_set_term_voltage(RANGE_T23, TERM_V2100);
- failure |= pmu_set_term_voltage(RANGE_T34, TERM_V2100);
- failure |= pmu_set_term_voltage(RANGE_T40, TERM_V2100);
-
- /* Set fast charging timeout to 6 hours*/
- if (!failure)
- failure = pmu_set_fastcharge(TIMEOUT_6HRS);
- /* Enable external gpio CHARGER_EN control */
- if (!failure)
- failure = pmu_enable_ext_control(1);
- /* Disable force charging */
- if (!failure)
- failure = pmu_enable_charger(0);
-
- /* Set NOITERM bit */
- if (!failure)
- failure = pmu_low_current_charging(1);
-
- return failure ? EC_ERROR_UNKNOWN : EC_SUCCESS;
-}
diff --git a/board/spring/board.h b/board/spring/board.h
deleted file mode 100644
index 4424817679..0000000000
--- a/board/spring/board.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* 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.
- */
-
-/* Spring board configuration */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* 16 MHz SYSCLK clock frequency */
-#define CPU_CLOCK 16000000
-
-
-/* Debug features */
-#undef CONFIG_TASK_PROFILING
-
-/* Optional features */
-#define CONFIG_ADC
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BOARD_PRE_INIT
-#define CONFIG_CHARGER_TPS65090
-#define CONFIG_CHIPSET_GAIA
-#define CONFIG_CMD_BATDEBUG
-#define CONFIG_CMD_ILIM
-#define CONFIG_CMD_PMU
-#define CONFIG_CONSOLE_RESTRICTED_INPUT
-#define CONFIG_EXTPOWER_SPRING
-#define CONFIG_HOST_COMMAND_STATUS
-#define CONFIG_I2C
-#define CONFIG_I2C_PASSTHROUGH
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
-#define CONFIG_LOW_POWER_IDLE /* Use STOP mode when we have nothing to do */
-#define CONFIG_LED_DRIVER_LP5562
-#define CONFIG_PMU_HARD_RESET
-#define CONFIG_PMU_TPS65090
-#define CONFIG_PWM
-#define CONFIG_USB_SWITCH_TSU6721
-#define CONFIG_VBOOT_HASH
-
-#ifndef __ASSEMBLER__
-
-/* Keyboard output port list */
-#define KB_OUT_PORT_LIST GPIO_B, GPIO_C
-
-/* Charging */
-#define I2C_PORT_MASTER 0
-#define I2C_PORT_BATTERY I2C_PORT_MASTER
-#define I2C_PORT_CHARGER I2C_PORT_MASTER
-#define I2C_PORT_SLAVE 1
-
-/* Low battery threshold. In mAh. */
-#define BATTERY_AP_OFF_LEVEL 1
-
-/* Timer selection */
-#define TIM_CLOCK_MSB 2
-#define TIM_CLOCK_LSB 4
-#define TIM_WATCHDOG 1
-
-/* ADC signal */
-enum adc_channel {
- ADC_CH_USB_VBUS_SNS = 0,
- ADC_CH_USB_DP_SNS,
- ADC_CH_USB_DN_SNS,
- /* Number of ADC channels */
- ADC_CH_COUNT
-};
-
-/* PWM signal */
-enum pwm_channel {
- PWM_CH_ILIM = 0,
- /* Number of PWM channels */
- PWM_CH_COUNT
-};
-
-#include "gpio_signal.h"
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/spring/build.mk b/board/spring/build.mk
deleted file mode 100644
index 2d3d6770db..0000000000
--- a/board/spring/build.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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.
-#
-# Board specific files build
-
-# the IC is STmicro STM32F100RB
-CHIP:=stm32
-CHIP_FAMILY:=stm32f
-CHIP_VARIANT:=stm32f100
-
-board-y=board.o battery.o led.o
diff --git a/board/spring/ec.tasklist b/board/spring/ec.tasklist
deleted file mode 100644
index f96ee6e387..0000000000
--- a/board/spring/ec.tasklist
+++ /dev/null
@@ -1,25 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, 320)
diff --git a/board/spring/gpio.inc b/board/spring/gpio.inc
deleted file mode 100644
index cb7c2b7e94..0000000000
--- a/board/spring/gpio.inc
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-/* Keyboard power button */
-GPIO_INT(KB_PWR_ON_L, PIN(B, 5), GPIO_INT_BOTH, power_signal_interrupt)
-GPIO_INT(PP1800_LDO2, PIN(A, 1), GPIO_INT_BOTH, power_signal_interrupt) /* LDO2 is ON (end of PMIC sequence) */
-GPIO_INT(SOC1V8_XPSHOLD, PIN(A, 3), GPIO_INT_BOTH, power_signal_interrupt) /* App Processor ON */
-GPIO_INT(CHARGER_INT_L, PIN(C, 4), GPIO_INT_FALLING, pmu_irq_handler)
-GPIO_INT(LID_OPEN, PIN(C, 13), GPIO_INT_BOTH, lid_interrupt) /* LID switch detection */
-GPIO_INT(SUSPEND_L, PIN(A, 7), INT_BOTH_FLOATING, power_signal_interrupt) /* AP suspend/resume state */
-
-/* Keyboard inputs */
-GPIO_INT(KB_IN00, PIN(C, 8), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN01, PIN(C, 9), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN02, PIN(C, 10), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN03, PIN(C, 11), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN04, PIN(C, 12), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN05, PIN(C, 14), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN06, PIN(C, 15), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(KB_IN07, PIN(D, 2), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
-GPIO_INT(USB_CHG_INT, PIN(A, 6), GPIO_INT_FALLING, extpower_interrupt)
-
-/* Other inputs */
-GPIO(BCHGR_VACG, PIN(A, 0), GPIO_INT_BOTH) /* AC good on TPSChrome */
-GPIO(WP_L, PIN(A, 13), GPIO_INPUT) /* Write protection pin (low active) */
-
-/*
- * I2C pins should be configured as inputs until I2C module is
- * initialized. This will avoid driving the lines unintentionally.
- */
-GPIO(I2C1_SCL, PIN(B, 6), GPIO_INPUT)
-GPIO(I2C1_SDA, PIN(B, 7), GPIO_INPUT)
-GPIO(I2C2_SCL, PIN(B, 10), GPIO_INPUT)
-GPIO(I2C2_SDA, PIN(B, 11), GPIO_INPUT)
-
-/* Outputs */
-GPIO(EN_PP1350, PIN(A, 14), GPIO_OUT_LOW) /* DDR 1.35v rail enable */
-GPIO(EN_PP5000, PIN(A, 11), GPIO_OUT_LOW) /* 5.0v rail enable */
-GPIO(EN_PP3300, PIN(A, 8), GPIO_OUT_LOW) /* 3.3v rail enable */
-GPIO(PMIC_PWRON_L,PIN(A, 12), GPIO_OUT_HIGH) /* 5v rail ready */
-GPIO(PMIC_RESET, PIN(A, 15), GPIO_OUT_LOW) /* Force hard reset of the pmic */
-GPIO(ENTERING_RW, PIN(D, 0), GPIO_OUT_LOW) /* EC is R/W mode for the kbc mux */
-GPIO(CHARGER_EN, PIN(B, 2), GPIO_OUT_LOW)
-GPIO(EC_INT, PIN(B, 9), GPIO_ODR_HIGH)
-GPIO(ID_MUX, PIN(D, 1), GPIO_OUT_LOW)
-GPIO(KB_OUT00, PIN(B, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT01, PIN(B, 8), GPIO_KB_OUTPUT)
-GPIO(KB_OUT02, PIN(B, 12), GPIO_KB_OUTPUT)
-GPIO(KB_OUT03, PIN(B, 13), GPIO_KB_OUTPUT)
-GPIO(KB_OUT04, PIN(B, 14), GPIO_KB_OUTPUT)
-GPIO(KB_OUT05, PIN(B, 15), GPIO_KB_OUTPUT)
-GPIO(KB_OUT06, PIN(C, 0), GPIO_KB_OUTPUT)
-GPIO(KB_OUT07, PIN(C, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT08, PIN(C, 2), GPIO_KB_OUTPUT)
-GPIO(KB_OUT09, PIN(B, 1), GPIO_KB_OUTPUT)
-GPIO(KB_OUT10, PIN(C, 5), GPIO_KB_OUTPUT)
-GPIO(KB_OUT11, PIN(C, 6), GPIO_KB_OUTPUT)
-GPIO(KB_OUT12, PIN(C, 7), GPIO_KB_OUTPUT)
-GPIO(BOOST_EN, PIN(B, 3), GPIO_OUT_HIGH)
-GPIO(ILIM, PIN(B, 4), GPIO_OUT_LOW)
diff --git a/board/spring/led.c b/board/spring/led.c
deleted file mode 100644
index cbb1fd9ab9..0000000000
--- a/board/spring/led.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/* 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.
- *
- * Battery LED state machine to drive RGB LED on LP5562
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-#include "common.h"
-#include "driver/led/lp5562.h"
-#include "extpower.h"
-#include "hooks.h"
-#include "host_command.h"
-#include "pmu_tpschrome.h"
-#include "timer.h"
-#include "util.h"
-
-#define GREEN_LED_THRESHOLD 94
-
-/* Minimal interval between changing LED color to green and yellow. */
-#define LED_WAIT_INTERVAL (15 * SECOND)
-
-/* We use yellow LED instead of blue LED. Re-map colors here. */
-#define LED_COLOR_NONE LP5562_COLOR_NONE
-#define LED_COLOR_GREEN LP5562_COLOR_GREEN(0x10)
-#define LED_COLOR_YELLOW LP5562_COLOR_BLUE(0x40)
-#define LED_COLOR_RED LP5562_COLOR_RED(0x80)
-
-/* LED states */
-enum led_state_t {
- LED_STATE_SOLID_RED,
- LED_STATE_SOLID_GREEN,
- LED_STATE_SOLID_YELLOW,
-
- /* Not an actual state */
- LED_STATE_OFF,
-
- /* Used to force next LED color update */
- LED_STATE_INVALID,
-};
-
-static enum led_state_t last_state = LED_STATE_OFF;
-static int led_auto_control = 1;
-
-static int set_led_color(enum led_state_t state)
-{
- int rv = EC_SUCCESS;
-
- if (!led_auto_control || state == last_state)
- return EC_SUCCESS;
-
- switch (state) {
- case LED_STATE_SOLID_RED:
- rv = lp5562_set_color(LED_COLOR_RED);
- break;
- case LED_STATE_SOLID_GREEN:
- rv = lp5562_set_color(LED_COLOR_GREEN);
- break;
- case LED_STATE_SOLID_YELLOW:
- rv = lp5562_set_color(LED_COLOR_YELLOW);
- break;
- default:
- break;
- }
-
- if (rv == EC_SUCCESS)
- last_state = state;
- else
- last_state = LED_STATE_INVALID;
- return rv;
-}
-
-/**
- * Directly read state of charge (0-100) of battery.
- */
-static int battery_state_of_charge(int *percent)
-{
- return sb_read(SB_RELATIVE_STATE_OF_CHARGE, percent);
-}
-
-/*****************************************************************************/
-/* Host commands */
-
-static int led_command_control(struct host_cmd_handler_args *args)
-{
- const struct ec_params_led_control *p = args->params;
- struct ec_response_led_control *r = args->response;
- int i;
- uint8_t clipped[EC_LED_COLOR_COUNT];
-
- /* Only support battery LED control */
- if (p->led_id != EC_LED_ID_BATTERY_LED)
- return EC_RES_INVALID_PARAM;
-
- if (p->flags & EC_LED_FLAGS_AUTO) {
- if (!extpower_is_present())
- lp5562_poweroff();
- last_state = LED_STATE_OFF;
- led_auto_control = 1;
- } else if (!(p->flags & EC_LED_FLAGS_QUERY)) {
- for (i = 0; i < EC_LED_COLOR_COUNT; ++i)
- clipped[i] = MIN(p->brightness[i], 0x80);
- led_auto_control = 0;
- if (!extpower_is_present())
- lp5562_poweron();
- if (lp5562_set_color((clipped[EC_LED_COLOR_RED] << 16) +
- (clipped[EC_LED_COLOR_GREEN] << 8) +
- clipped[EC_LED_COLOR_YELLOW]))
- return EC_RES_ERROR;
- }
-
- r->brightness_range[EC_LED_COLOR_RED] = 0x80;
- r->brightness_range[EC_LED_COLOR_GREEN] = 0x80;
- r->brightness_range[EC_LED_COLOR_BLUE] = 0x0;
- r->brightness_range[EC_LED_COLOR_YELLOW] = 0x80;
- r->brightness_range[EC_LED_COLOR_WHITE] = 0x0;
- args->response_size = sizeof(struct ec_response_led_control);
-
- return EC_RES_SUCCESS;
-}
-DECLARE_HOST_COMMAND(EC_CMD_LED_CONTROL,
- led_command_control,
- EC_VER_MASK(1));
-
-/*****************************************************************************/
-/* Hooks */
-
-static void battery_led_update(void)
-{
- int rv;
- int state_of_charge;
- enum led_state_t state = LED_STATE_OFF;
-
- /* Current states and next states */
- static int led_power = -1;
- int new_led_power;
-
- /*
- * The time before which we should not change LED
- * color between green and yellow.
- */
- static timestamp_t led_update_deadline = {.val = 0};
-
- /* Determine LED power */
- new_led_power = extpower_is_present();
- if (new_led_power != led_power) {
- if (new_led_power) {
- rv = lp5562_poweron();
- } else {
- rv = lp5562_poweroff();
- set_led_color(LED_STATE_OFF);
- led_update_deadline.val = 0;
- }
- if (!rv)
- led_power = new_led_power;
- }
- if (!new_led_power)
- return;
-
- /*
- * LED power is controlled by accessory detection. We only
- * set color here.
- */
- switch (charge_get_state()) {
- case ST_IDLE0:
- case ST_BAD_COND:
- case ST_PRE_CHARGING:
- state = LED_STATE_SOLID_YELLOW;
- break;
- case ST_IDLE:
- case ST_DISCHARGING:
- case ST_CHARGING:
- if (battery_state_of_charge(&state_of_charge)) {
- /* Cannot talk to the battery. Set LED to red. */
- state = LED_STATE_SOLID_RED;
- break;
- }
-
- if (state_of_charge < GREEN_LED_THRESHOLD)
- state = LED_STATE_SOLID_YELLOW;
- else
- state = LED_STATE_SOLID_GREEN;
- break;
- case ST_CHARGING_ERROR:
- state = LED_STATE_SOLID_RED;
- break;
- }
-
- if (state == LED_STATE_SOLID_GREEN ||
- state == LED_STATE_SOLID_YELLOW) {
- if (!timestamp_expired(led_update_deadline, NULL))
- return;
- led_update_deadline.val =
- get_time().val + LED_WAIT_INTERVAL;
- } else {
- led_update_deadline.val = 0;
- }
-
- set_led_color(state);
-}
-DECLARE_HOOK(HOOK_SECOND, battery_led_update, HOOK_PRIO_DEFAULT);
diff --git a/board/squawks/Makefile b/board/squawks/Makefile
deleted file mode 120000
index 94aaae2c4d..0000000000
--- a/board/squawks/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../Makefile \ No newline at end of file
diff --git a/board/squawks/battery.c b/board/squawks/battery.c
deleted file mode 100644
index 518bb48e9b..0000000000
--- a/board/squawks/battery.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (c) 2012 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.
- *
- * Battery pack vendor provided charging profile
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-
-/* Shutdown mode parameter to write to manufacturer access register */
-#define SB_SHUTDOWN_DATA 0x0010
-
-/* 3S1P battery */
-static const struct battery_info info = {
- .voltage_max = 12600, /* mV */
- .voltage_normal = 10800,
- .voltage_min = 8250,
- /*
- * Precharge current max is 400 mA, but 384 mA is as close to that
- * as the charger can get without going over.
- */
- .precharge_current = 384, /* mA */
- .start_charging_min_c = 10,
- .start_charging_max_c = 45,
- .charging_min_c = 10,
- .charging_max_c = 45,
- .discharging_min_c = -20,
- .discharging_max_c = 60,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-int board_cut_off_battery(void)
-{
- int rv;
-
- /* Ship mode command must be sent twice to take effect */
- rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-
- if (rv != EC_SUCCESS)
- return rv;
-
- return sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
-}
diff --git a/board/squawks/board.c b/board/squawks/board.c
deleted file mode 100644
index 292dc31ee6..0000000000
--- a/board/squawks/board.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* 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.
- */
-/* EC for Squawks board configuration */
-
-#include "adc.h"
-#include "adc_chip.h"
-#include "backlight.h"
-#include "charge_state.h"
-#include "charger.h"
-#include "common.h"
-#include "driver/temp_sensor/tmp432.h"
-#include "extpower.h"
-#include "gpio.h"
-#include "host_command.h"
-#include "i2c.h"
-#include "jtag.h"
-#include "keyboard_scan.h"
-#include "lid_switch.h"
-#include "peci.h"
-#include "power.h"
-#include "power_button.h"
-#include "pwm.h"
-#include "pwm_chip.h"
-#include "registers.h"
-#include "switch.h"
-#include "temp_sensor.h"
-#include "temp_sensor_chip.h"
-#include "thermal.h"
-#include "timer.h"
-#include "uart.h"
-#include "util.h"
-
-#include "gpio_list.h"
-
-/* power signal list. Must match order of enum power_signal. */
-const struct power_signal_info power_signal_list[] = {
- {GPIO_PP1050_PGOOD, 1, "PGOOD_PP1050"},
- {GPIO_PP3300_PCH_PGOOD, 1, "PGOOD_PP3300_PCH"},
- {GPIO_PP5000_PGOOD, 1, "PGOOD_PP5000"},
- {GPIO_S5_PGOOD, 1, "PGOOD_S5"},
- {GPIO_VCORE_PGOOD, 1, "PGOOD_VCORE"},
- {GPIO_PP1000_S0IX_PGOOD, 1, "PGOOD_PP1000_S0IX"},
- {GPIO_PCH_SLP_S3_L, 1, "SLP_S3#_DEASSERTED"},
- {GPIO_PCH_SLP_S4_L, 1, "SLP_S4#_DEASSERTED"},
-#ifdef CONFIG_CHIPSET_DEBUG
- {GPIO_PCH_SLP_SX_L, 1, "SLP_SX#_DEASSERTED"},
- {GPIO_PCH_SUS_STAT_L, 0, "SUS_STAT#_ASSERTED"},
- {GPIO_PCH_SUSPWRDNACK, 1, "SUSPWRDNACK_ASSERTED"},
-#endif
-};
-BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
-
-/* ADC channels. Must be in the exactly same order as in enum adc_channel. */
-const struct adc_t adc_channels[] = {
- /* EC internal temperature is calculated by
- * 273 + (295 - 450 * ADC_VALUE / ADC_READ_MAX) / 2
- * = -225 * ADC_VALUE / ADC_READ_MAX + 420.5
- */
- {"ECTemp", LM4_ADC_SEQ0, -225, ADC_READ_MAX, 420,
- LM4_AIN_NONE, 0x0e /* TS0 | IE0 | END0 */, 0, 0},
-
- /* IOUT == ICMNT is on PE3/AIN0 */
- /* We have 0.01-ohm resistors, and IOUT is 40X the differential
- * voltage, so 1000mA ==> 400mV.
- * ADC returns 0x000-0xFFF, which maps to 0.0-3.3V (as configured).
- * mA = 1000 * ADC_VALUE / ADC_READ_MAX * 3300 / 400
- */
- {"ChargerCurrent", LM4_ADC_SEQ1, 33000, ADC_READ_MAX * 4, 0,
- LM4_AIN(0), 0x06 /* IE0 | END0 */, LM4_GPIO_E, (1<<3)},
-};
-BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
-
-/* PWM channels. Must be in the exactly same order as in enum pwm_channel. */
-const struct pwm_t pwm_channels[] = {
- {4, PWM_CONFIG_ACTIVE_LOW},
- {3, PWM_CONFIG_ACTIVE_LOW},
- {0, PWM_CONFIG_ACTIVE_LOW},
-};
-
-BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-
-/* I2C ports */
-const struct i2c_port_t i2c_ports[] = {
- {"batt_chg", 0, 100},
- {"thermal", 5, 100},
-};
-const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
-
-/*
- * Temperature sensors data; must be in same order as enum temp_sensor_id.
- * Sensor index and name must match those present in coreboot:
- * src/mainboard/google/${board}/acpi/dptf.asl
- */
-const struct temp_sensor_t temp_sensors[] = {
- {"ECInternal", TEMP_SENSOR_TYPE_BOARD, chip_temp_sensor_get_val, 0, 4},
- {"TMP432_Internal", TEMP_SENSOR_TYPE_BOARD, tmp432_get_val,
- TMP432_IDX_LOCAL, 4},
- {"TMP432_Power_top", TEMP_SENSOR_TYPE_BOARD, tmp432_get_val,
- TMP432_IDX_REMOTE1, 4},
- {"TMP432_CPU_bottom", TEMP_SENSOR_TYPE_BOARD, tmp432_get_val,
- TMP432_IDX_REMOTE2, 4},
- {"Battery", TEMP_SENSOR_TYPE_BATTERY, charge_temp_sensor_get_val, 0, 4},
-};
-BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
-
-/* Thermal limits for each temp sensor. All temps are in degrees K. Must be in
- * same order as enum temp_sensor_id. To always ignore any temp, use 0.
- */
-struct ec_thermal_config thermal_params[] = {
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
- {{0, 0, 0}, 0, 0},
-};
-BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
-
-/**
- * Discharge battery when on AC power for factory test.
- */
-int board_discharge_on_ac(int enable)
-{
- return charger_discharge_on_ac(enable);
-}
diff --git a/board/squawks/board.h b/board/squawks/board.h
deleted file mode 100644
index 7bc3fecec4..0000000000
--- a/board/squawks/board.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* 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.
- */
-
-/* Configuration for Rambi mainboard */
-
-#ifndef __BOARD_H
-#define __BOARD_H
-
-/* Optional features */
-#define CONFIG_AP_HANG_DETECT
-#define CONFIG_BACKLIGHT_LID
-#define CONFIG_BATTERY_CUT_OFF
-#define CONFIG_BATTERY_SMART
-#define CONFIG_BOARD_VERSION
-#define CONFIG_CHARGER
-#define CONFIG_CHARGER_V1
-#define CONFIG_CHARGER_BQ24715
-#define CONFIG_CHARGER_DISCHARGE_ON_AC
-#define CONFIG_CHARGER_INPUT_CURRENT 1575 /* 90% of 1.725A adapter @ 19V */
-#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
-#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* Input senso resistor, mOhm */
-#define CONFIG_CHIPSET_BAYTRAIL
-#define CONFIG_CHIPSET_CAN_THROTTLE
-#define CONFIG_POWER_COMMON
-#define CONFIG_POWER_SHUTDOWN_PAUSE_IN_S5
-#define CONFIG_CMD_GSV
-#define CONFIG_EXTPOWER_GPIO
-#define CONFIG_I2C_PASSTHRU_RESTRICTED
-#define CONFIG_KEYBOARD_COL2_INVERTED
-#define CONFIG_KEYBOARD_IRQ_GPIO GPIO_KBD_IRQ_L
-#define CONFIG_KEYBOARD_PROTOCOL_8042
-#define CONFIG_LED_COMMON
-#define CONFIG_LOW_POWER_IDLE
-#undef CONFIG_PECI
-#define CONFIG_POWER_BUTTON
-#define CONFIG_POWER_BUTTON_X86
-#define CONFIG_PWM
-#define CONFIG_SCI_GPIO GPIO_PCH_SCI_L
-#define CONFIG_TEMP_SENSOR
-#define CONFIG_TEMP_SENSOR_TMP432
-#define CONFIG_USB_PORT_POWER_IN_S3
-#define CONFIG_USB_PORT_POWER_SMART
-#define CONFIG_USB_PORT_POWER_SMART_SIMPLE
-#define CONFIG_VBOOT_HASH
-#define CONFIG_WIRELESS
-#define CONFIG_WIRELESS_SUSPEND \
- (EC_WIRELESS_SWITCH_WLAN | EC_WIRELESS_SWITCH_WLAN_POWER)
-
-#ifndef __ASSEMBLER__
-
-/* I2C ports */
-#define I2C_PORT_BATTERY 0
-#define I2C_PORT_CHARGER 0
-#define I2C_PORT_THERMAL 5
-
-/* 13x8 keyboard scanner uses an entire GPIO bank for row inputs */
-#define KB_SCAN_ROW_IRQ LM4_IRQ_GPIOK
-#define KB_SCAN_ROW_GPIO LM4_GPIO_K
-
-/* Host connects to keyboard controller module via LPC */
-#define HOST_KB_BUS_LPC
-
-/* USB ports */
-#define USB_PORT_COUNT 2
-
-/* Wireless signals */
-#define WIRELESS_GPIO_WLAN GPIO_WLAN_OFF_L
-#define WIRELESS_GPIO_WWAN GPIO_PP3300_LTE_EN
-#define WIRELESS_GPIO_WLAN_POWER GPIO_PP3300_WLAN_EN
-
-#include "gpio_signal.h"
-
-/* power signal definitions */
-enum power_signal {
- X86_PGOOD_PP1050 = 0,
- X86_PGOOD_PP3300_PCH,
- X86_PGOOD_PP5000,
- X86_PGOOD_S5,
- X86_PGOOD_VCORE,
- X86_PGOOD_PP1000_S0IX,
- X86_SLP_S3_DEASSERTED,
- X86_SLP_S4_DEASSERTED,
-#ifdef CONFIG_CHIPSET_DEBUG
- X86_SLP_SX_DEASSERTED,
- X86_SUS_STAT_ASSERTED,
- X86_SUSPWRDNACK_ASSERTED,
-#endif
-
- /* Number of X86 signals */
- POWER_SIGNAL_COUNT
-};
-
-enum adc_channel {
- /* EC internal die temperature in degrees K. */
- ADC_CH_EC_TEMP = 0,
-
- /* Charger current in mA. */
- ADC_CH_CHARGER_CURRENT,
-
- ADC_CH_COUNT
-};
-
-enum pwm_channel {
- PWM_CH_LED_BATTERY_GREEN,
- PWM_CH_LED_BATTERY_ORANGE,
- PWM_CH_LED_POWER_GREEN,
-
- /* Number of PWM channels */
- PWM_CH_COUNT
-};
-
-enum temp_sensor_id {
- /* EC internal temperature sensor */
- TEMP_SENSOR_EC_INTERNAL = 0,
-
- /* TMP432 local and remote sensors */
- TEMP_SENSOR_I2C_TMP432_LOCAL,
- TEMP_SENSOR_I2C_TMP432_REMOTE1,
- TEMP_SENSOR_I2C_TMP432_REMOTE2,
-
- /* Battery temperature sensor */
- TEMP_SENSOR_BATTERY,
-
- TEMP_SENSOR_COUNT
-};
-
-/* Discharge battery when on AC power for factory test. */
-int board_discharge_on_ac(int enable);
-
-#endif /* !__ASSEMBLER__ */
-
-#endif /* __BOARD_H */
diff --git a/board/squawks/build.mk b/board/squawks/build.mk
deleted file mode 100644
index f771f4f0ec..0000000000
--- a/board/squawks/build.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- makefile -*-
-# 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.
-#
-# Board specific files build
-#
-
-# the IC is TI Stellaris LM4
-CHIP:=lm4
-
-board-y=battery.o board.o led.o
diff --git a/board/squawks/ec.tasklist b/board/squawks/ec.tasklist
deleted file mode 100644
index 8b4485818f..0000000000
--- a/board/squawks/ec.tasklist
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
- * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
- * where :
- * 'n' is the name of the task
- * 'r' is the main routine of the task
- * 'd' is an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(CHARGER, charger_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(CHIPSET, chipset_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_ALWAYS(POWERBTN, power_button_task, NULL, TASK_STACK_SIZE) \
- TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/squawks/gpio.inc b/board/squawks/gpio.inc
deleted file mode 100644
index ada4e5080f..0000000000
--- a/board/squawks/gpio.inc
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- mode:c -*-
- *
- * Copyright (c) 2014 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.
- */
-
-/* Inputs with interrupt handlers are first for efficiency */
-GPIO_INT(POWER_BUTTON_L, PIN(A, 2), GPIO_INT_BOTH_DSLEEP, power_button_interrupt) /* Power button */
-GPIO_INT(LID_OPEN, PIN(A, 3), GPIO_INT_BOTH_DSLEEP, lid_interrupt) /* Lid switch */
-GPIO_INT(AC_PRESENT, PIN(H, 3), GPIO_INT_BOTH_DSLEEP, extpower_interrupt) /* AC power present */
-GPIO_INT(PCH_SLP_S3_L, PIN(G, 7), GPIO_INT_BOTH_DSLEEP | GPIO_PULL_UP, power_signal_interrupt) /* SLP_S3# signal from PCH */
-GPIO_INT(PCH_SLP_S4_L, PIN(H, 1), GPIO_INT_BOTH_DSLEEP | GPIO_PULL_UP, power_signal_interrupt) /* SLP_S4# signal from PCH */
-GPIO_INT(PP1050_PGOOD, PIN(H, 4), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 1.05V */
-GPIO_INT(PP3300_PCH_PGOOD, PIN(C, 4), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 3.3V (PCH supply) */
-GPIO_INT(PP5000_PGOOD, PIN(N, 0), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on 5V */
-GPIO_INT(S5_PGOOD, PIN(G, 0), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on S5 supplies */
-GPIO_INT(VCORE_PGOOD, PIN(C, 6), GPIO_INT_BOTH, power_signal_interrupt) /* Power good on core VR */
-GPIO_INT(WP_L, PIN(A, 4), GPIO_INT_BOTH, switch_interrupt) /* Write protect input */
-GPIO_INT(JTAG_TCK, PIN(C, 0), GPIO_DEFAULT, jtag_interrupt) /* JTAG clock input */
-GPIO_INT(UART0_RX, PIN(A, 0), GPIO_INT_BOTH_DSLEEP | GPIO_PULL_UP, uart_deepsleep_interrupt) /* UART0 RX input */
-
-/* Other inputs */
-GPIO(BOARD_VERSION1, PIN(Q, 5), GPIO_INPUT) /* Board version stuffing resistor 1 */
-GPIO(BOARD_VERSION2, PIN(Q, 6), GPIO_INPUT) /* Board version stuffing resistor 2 */
-GPIO(BOARD_VERSION3, PIN(Q, 7), GPIO_INPUT) /* Board version stuffing resistor 3 */
-
-#ifdef CONFIG_CHIPSET_DEBUG
-GPIO(PCH_SLP_SX_L, PIN(G, 3), GPIO_INPUT | GPIO_PULL_UP) /* SLP_S0IX# signal from PCH */
-GPIO(PCH_SUS_STAT_L, PIN(G, 6), GPIO_INPUT | GPIO_PULL_UP) /* SUS_STAT# signal from PCH */
-GPIO(PCH_SUSPWRDNACK, PIN(G, 2), GPIO_INPUT | GPIO_PULL_UP) /* SUSPWRDNACK signal from PCH */
-#endif
-
-GPIO(PP1000_S0IX_PGOOD, PIN(H, 6), GPIO_INPUT) /* Power good on 1.00V (S0iX supplies) */
-GPIO(USB1_OC_L, PIN(E, 7), GPIO_INPUT) /* USB port overcurrent warning */
-GPIO(USB2_OC_L, PIN(E, 0), GPIO_INPUT) /* USB port overcurrent warning */
-
-/* Outputs; all unasserted by default except for reset signals */
-GPIO(CPU_PROCHOT, PIN(B, 5), GPIO_OUT_LOW) /* Force CPU to think it's overheated */
-GPIO(ENABLE_BACKLIGHT, PIN(M, 7), GPIO_ODR_HIGH) /* Enable backlight power */
-GPIO(ENABLE_TOUCHPAD, PIN(N, 1), GPIO_OUT_LOW) /* Enable touchpad power */
-GPIO(ENTERING_RW, PIN(D, 6), GPIO_OUT_LOW) /* Indicate when EC is entering RW code */
-GPIO(LPC_CLKRUN_L, PIN(M, 2), GPIO_ODR_HIGH) /* Request that PCH drive LPC clock */
-GPIO(PCH_CORE_PWROK, PIN(F, 5), GPIO_OUT_LOW) /* Indicate core well power is stable */
-GPIO(PCH_PWRBTN_L, PIN(H, 0), GPIO_ODR_HIGH) /* Power button output to PCH */
-GPIO(PCH_RCIN_L, PIN(F, 3), GPIO_ODR_HIGH) /* Reset line to PCH (for 8042 emulation) */
-GPIO(PCH_RSMRST_L, PIN(F, 1), GPIO_OUT_LOW) /* Reset PCH resume power plane logic */
-GPIO(PCH_SMI_L, PIN(F, 4), GPIO_ODR_HIGH) /* System management interrupt to PCH */
-GPIO(PCH_SOC_OVERRIDE, PIN(G, 1), GPIO_OUT_LOW) /* SOC override signal to PCH; when high, ME ignores security descriptor */
-GPIO(PCH_SYS_PWROK, PIN(J, 1), GPIO_OUT_LOW) /* EC thinks everything is up and ready */
-GPIO(PCH_WAKE_L, PIN(F, 0), GPIO_ODR_HIGH) /* Wake signal from EC to PCH */
-GPIO(PP1350_EN, PIN(H, 5), GPIO_OUT_LOW) /* Enable 1.35V supply */
-GPIO(PP3300_DX_EN, PIN(J, 2), GPIO_OUT_LOW) /* Enable power to lots of peripherals */
-GPIO(PP3300_LTE_EN, PIN(D, 4), GPIO_OUT_LOW) /* Enable LTE radio */
-GPIO(PP3300_WLAN_EN, PIN(J, 0), GPIO_OUT_LOW) /* Enable WiFi power */
-GPIO(PP5000_EN, PIN(H, 7), GPIO_OUT_LOW) /* Enable 5V supply */
-GPIO(PPSX_EN, PIN(L, 6), GPIO_OUT_LOW) /* Enable PP1350_PCH_SX, PP1000_PCH_SX */
-GPIO(SUSP_VR_EN, PIN(C, 7), GPIO_OUT_LOW) /* Enable 1.05V regulator */
-GPIO(TOUCHSCREEN_RESET_L, PIN(N, 7), GPIO_OUT_LOW) /* Reset touch screen */
-GPIO(USB_CTL1, PIN(E, 6), GPIO_OUT_LOW) /* USB control signal 1 to both ports */
-GPIO(USB_ILIM_SEL, PIN(E, 5), GPIO_OUT_LOW) /* USB current limit to both ports */
-GPIO(USB1_ENABLE, PIN(E, 4), GPIO_OUT_LOW) /* USB port 1 output power enable */
-GPIO(USB2_ENABLE, PIN(D, 5), GPIO_OUT_LOW) /* USB port 2 output power enable */
-GPIO(VCORE_EN, PIN(C, 5), GPIO_OUT_LOW) /* Enable core power supplies */
-GPIO(WLAN_OFF_L, PIN(J, 4), GPIO_OUT_LOW) /* Disable WiFi radio */
-GPIO(PCH_SCI_L, PIN(M, 1), GPIO_ODR_HIGH) /* Assert SCI to PCH */
-GPIO(KBD_IRQ_L, PIN(M, 3), GPIO_ODR_HIGH) /* Negative edge triggered irq. */
-
-ALTERNATE(PIN_MASK(A, 0x03), 1, MODULE_UART, 0) /* UART0 */
-ALTERNATE(PIN_MASK(B, 0x04), 3, MODULE_I2C, 0) /* I2C0 SCL */
-ALTERNATE(PIN_MASK(B, 0x08), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C0 SDA */
-ALTERNATE(PIN_MASK(B, 0x40), 3, MODULE_I2C, 0) /* I2C5 SCL */
-ALTERNATE(PIN_MASK(B, 0x80), 3, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C5 SDA */
-ALTERNATE(PIN_MASK(D, 0x0f), 2, MODULE_SPI, 0) /* SPI1 */
-ALTERNATE(PIN_MASK(L, 0x3f), 15, MODULE_LPC, 0) /* LPC */
-ALTERNATE(PIN_MASK(M, 0x21), 15, MODULE_LPC, 0) /* LPC */
-ALTERNATE(PIN_MASK(N, 0x50), 1, MODULE_PWM_LED, GPIO_OPEN_DRAIN) /* FAN0PWM 3&4 */
-ALTERNATE(PIN_MASK(M, 0x40), 1, MODULE_PWM_LED, GPIO_OPEN_DRAIN) /* FAN0PWM0 */
diff --git a/board/squawks/led.c b/board/squawks/led.c
deleted file mode 100644
index 970ca89306..0000000000
--- a/board/squawks/led.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* 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.
- *
- * Battery LED control for Rambi
- */
-
-#include "charge_state.h"
-#include "chipset.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "led_common.h"
-#include "lid_switch.h"
-#include "pwm.h"
-#include "util.h"
-
-const enum ec_led_id supported_led_ids[] = {
- EC_LED_ID_BATTERY_LED, EC_LED_ID_POWER_LED};
-const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
-
-enum led_color {
- LED_OFF = 0,
- LED_ORANGE,
- LED_GREEN,
-};
-
-/**
- * Set battery LED color
- *
- * @param color Enumerated color value
- */
-static void set_battery_led_color(enum led_color color)
-{
- pwm_set_duty(PWM_CH_LED_BATTERY_ORANGE, color == LED_ORANGE ? 100 : 0);
- pwm_set_duty(PWM_CH_LED_BATTERY_GREEN, color == LED_GREEN ? 100 : 0);
-}
-
-void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
-{
- if (led_id == EC_LED_ID_POWER_LED) {
- brightness_range[EC_LED_COLOR_GREEN] = 100;
- } else {
- brightness_range[EC_LED_COLOR_RED] = 100;
- brightness_range[EC_LED_COLOR_GREEN] = 100;
- }
-}
-
-int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
-{
- if (led_id == EC_LED_ID_POWER_LED) {
- pwm_set_duty(PWM_CH_LED_POWER_GREEN,
- brightness[EC_LED_COLOR_GREEN]);
- } else {
- pwm_set_duty(PWM_CH_LED_BATTERY_ORANGE,
- brightness[EC_LED_COLOR_RED]);
- pwm_set_duty(PWM_CH_LED_BATTERY_GREEN,
- brightness[EC_LED_COLOR_GREEN]);
- }
- return EC_SUCCESS;
-}
-
-static void led_init(void)
-{
- /* Configure GPIOs */
- gpio_config_module(MODULE_PWM_LED, 1);
-
- /*
- * Enable PWMs and set to 0% duty cycle. If they're disabled, the LM4
- * seems to ground the pins instead of letting them float.
- */
- pwm_enable(PWM_CH_LED_BATTERY_ORANGE, 1);
- pwm_enable(PWM_CH_LED_BATTERY_GREEN, 1);
- pwm_enable(PWM_CH_LED_POWER_GREEN, 1);
- pwm_set_duty(PWM_CH_LED_POWER_GREEN, 0);
- set_battery_led_color(LED_OFF);
-}
-DECLARE_HOOK(HOOK_INIT, led_init, HOOK_PRIO_DEFAULT);
-
-/**
- * Return new duty cycle for power LED (0-100).
- */
-static int new_power_led_brightness(void)
-{
- static unsigned ticks;
- static int suspended_prev;
-
- int suspended = chipset_in_state(CHIPSET_STATE_SUSPEND);
-
- /* If we're just suspending now, reset ticks so LED changes quickly */
- if (suspended && !suspended_prev)
- ticks = 0;
- else
- ticks++;
-
- suspended_prev = suspended;
-
- /* If lid is closed, LED is off in all chipset states */
- if (!lid_is_open())
- return 0;
-
- /* If chipset is on, LED is on */
- if (chipset_in_state(CHIPSET_STATE_ON))
- return 100;
-
- /* If chipset isn't on or suspended, it's off; LED is off */
- if (!chipset_in_state(CHIPSET_STATE_SUSPEND))
- return 0;
-
- /* Suspended. Blink with 25% duty cycle, 2 sec period */
- return (ticks % 8 < 2) ? 100 : 0;
-}
-
-/**
- * Return new color for battery LED.
- */
-static enum led_color new_battery_led_color(void)
-{
- static unsigned ticks;
-
- int chstate = charge_get_state();
-
- ticks++;
-
- /* If charging error, blink orange, 50% duty cycle, 0.5 sec period */
- if (chstate == PWR_STATE_ERROR)
- return (ticks & 0x1) ? LED_ORANGE : LED_OFF;
-
- /* If charge-force-idle, blink green, 50% duty cycle, 2 sec period */
- if (chstate == PWR_STATE_IDLE &&
- (charge_get_flags() & CHARGE_FLAG_FORCE_IDLE))
- return (ticks & 0x4) ? LED_GREEN : LED_OFF;
-
- /*
- * If the system is charging, orange; green if 95% or over.
- * Subtract 5% to compensate for how the UI reports charge remaining.
- */
- if (chstate == PWR_STATE_CHARGE)
- return charge_get_percent() < 90 ? LED_ORANGE : LED_GREEN;
-
- /* If AC connected and fully charged (or close to it), solid green */
- if (chstate == PWR_STATE_CHARGE_NEAR_FULL ||
- chstate == PWR_STATE_IDLE) {
- return LED_GREEN;
- }
-
- /*
- * Otherwise, discharging; flash orange if 10% or less power, 50%
- * duty cycle, 2 sec period. Adding 4% bias to compensate for how
- * the UI reports charge remaining.
- */
- if (charge_get_percent() < 14)
- return (ticks & 0x4) ? LED_ORANGE : LED_OFF;
-
- /* Discharging and greater than 10% power, so off */
- return LED_OFF;
-}
-
-/**
- * Called by hook task every 250 ms
- */
-static void led_tick(void)
-{
- if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED))
- pwm_set_duty(PWM_CH_LED_POWER_GREEN,
- new_power_led_brightness());
-
- if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED))
- set_battery_led_color(new_battery_led_color());
-}
-DECLARE_HOOK(HOOK_TICK, led_tick, HOOK_PRIO_DEFAULT);
diff --git a/test/build.mk b/test/build.mk
index e2652d4270..5addad174f 100644
--- a/test/build.mk
+++ b/test/build.mk
@@ -11,8 +11,6 @@ test-list-y=pingpong timer_calib timer_dos timer_jump mutex utils
test-list-$(BOARD_BDS)+=
test-list-$(BOARD_PIT)+=kb_scan stress
-test-list-$(BOARD_SNOW)+=kb_scan stress
-test-list-$(BOARD_SPRING)+=kb_scan stress
# Samus has board-specific chipset code, and the tests don't
# compile with it. Disable them for now.
@@ -38,7 +36,7 @@ test-list-$(BOARD_OAK_PD)=
# Emulator tests
test-list-host=mutex pingpong utils kb_scan kb_mkbp lid_sw power_button hooks
test-list-host+=thermal flash queue kb_8042 extpwr_gpio console_edit system
-test-list-host+=sbs_charging adapter host_command thermal_falco led_spring
+test-list-host+=sbs_charging adapter host_command
test-list-host+=bklight_lid bklight_passthru interrupt timer_dos button
test-list-host+=motion_lid math_util sbs_charging_v2 battery_get_params_smart
test-list-host+=lightbar inductive_charging usb_pd fan charge_manager
@@ -62,7 +60,6 @@ interrupt-scale=10
kb_8042-y=kb_8042.o
kb_mkbp-y=kb_mkbp.o
kb_scan-y=kb_scan.o
-led_spring-y=led_spring.o led_spring_impl.o
lid_sw-y=lid_sw.o
math_util-y=math_util.o
motion_lid-y=motion_lid.o
@@ -76,7 +73,6 @@ sbs_charging_v2-y=sbs_charging_v2.o
stress-y=stress.o
system-y=system.o
thermal-y=thermal.o
-thermal_falco-y=thermal_falco.o
timer_calib-y=timer_calib.o
timer_dos-y=timer_dos.o
usb_pd-y=usb_pd.o
diff --git a/test/led_spring.c b/test/led_spring.c
deleted file mode 100644
index e1170a7992..0000000000
--- a/test/led_spring.c
+++ /dev/null
@@ -1,270 +0,0 @@
-/* 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.
- *
- * Test lid switch.
- */
-
-#include "battery_smart.h"
-#include "common.h"
-#include "console.h"
-#include "driver/led/lp5562.h"
-#include "host_command.h"
-#include "pmu_tpschrome.h"
-#include "test_util.h"
-#include "timer.h"
-#include "util.h"
-
-#define LP5562_I2C_ADDR (0x30 << 1)
-#define LP5562_NUM_WATCH_REG 0x71
-static uint8_t lp5562_reg[LP5562_NUM_WATCH_REG];
-
-#define LED_COLOR_NONE LP5562_COLOR_NONE
-#define LED_COLOR_GREEN LP5562_COLOR_GREEN(0x10)
-#define LED_COLOR_YELLOW LP5562_COLOR_BLUE(0x40)
-#define LED_COLOR_RED LP5562_COLOR_RED(0x80)
-
-static enum charging_state mock_charge_state = ST_IDLE;
-static int lp5562_failed_i2c_reg = -1;
-static const char * const state_names[] = CHARGE_STATE_NAME_TABLE;
-
-/*****************************************************************************/
-/* Mock functions */
-
-static void set_ac(int ac)
-{
- gpio_set_level(GPIO_AC_PRESENT, ac);
- ccprintf("[%T TEST AC = %d]\n", ac);
-}
-
-enum charging_state charge_get_state(void)
-{
- return mock_charge_state;
-}
-
-static void set_charge_state(enum charging_state s)
-{
- mock_charge_state = s;
- ccprintf("[%T TEST Charge state = %s]\n", state_names[s]);
-}
-
-static void set_battery_soc(int soc)
-{
- sb_write(SB_RELATIVE_STATE_OF_CHARGE, soc);
- sb_write(SB_ABSOLUTE_STATE_OF_CHARGE, soc);
-}
-
-/*****************************************************************************/
-/* Test utilities */
-
-static int lp5562_i2c_write8(int port, int slave_addr, int offset, int data)
-{
- if (port != I2C_PORT_MASTER || slave_addr != LP5562_I2C_ADDR)
- return EC_ERROR_INVAL;
- if (offset == lp5562_failed_i2c_reg)
- return EC_ERROR_UNKNOWN;
- if (offset < LP5562_NUM_WATCH_REG)
- lp5562_reg[offset] = data;
- return EC_SUCCESS;
-}
-DECLARE_TEST_I2C_WRITE8(lp5562_i2c_write8);
-
-static int lp5562_get_color(void)
-{
- return lp5562_reg[LP5562_REG_B_PWM] |
- (lp5562_reg[LP5562_REG_G_PWM] << 8) |
- (lp5562_reg[LP5562_REG_R_PWM] << 16);
-}
-
-static int lp5562_powered(void)
-{
- return lp5562_reg[LP5562_REG_ENABLE] & 0x40;
-}
-
-static int lp5562_in_pwm_mode(void)
-{
- return lp5562_reg[LP5562_REG_LED_MAP] == 0;
-}
-
-static int verify_color(int expected_color)
-{
- int actual = lp5562_get_color();
-
- if (expected_color == LED_COLOR_NONE)
- return !lp5562_powered();
- if (!lp5562_powered())
- return 0;
- if (!lp5562_in_pwm_mode())
- return 0;
-
- ccprintf("[%T LED color = 0x%06x]\n", actual);
-
- return actual == expected_color;
-}
-
-/*****************************************************************************/
-/* Tests */
-
-static int test_led_power(void)
-{
- /* Check LED is off */
- TEST_ASSERT(!lp5562_powered());
-
- /* Plug in AC, and LED should turn on within a second */
- set_ac(1);
- msleep(1500);
- TEST_ASSERT(lp5562_powered());
-
- /* Change state while AC is on. LED should keep on */
- set_charge_state(ST_CHARGING_ERROR);
- msleep(1500);
- TEST_ASSERT(lp5562_powered());
-
- /* Unplug AC. LED should turn off */
- set_ac(0);
- msleep(1500);
- TEST_ASSERT(!lp5562_powered());
-
- /* Plug AC again. LED should turn on */
- set_ac(1);
- msleep(1500);
- TEST_ASSERT(lp5562_powered());
-
- return EC_SUCCESS;
-}
-
-static int test_led_color(void)
-{
- /* IDLE0 */
- set_ac(1);
- set_charge_state(ST_IDLE0);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
-
- /* BAD_COND*/
- set_charge_state(ST_BAD_COND);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
-
- /* PRE_CHARGING */
- set_charge_state(ST_PRE_CHARGING);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
-
- /* IDLE */
- set_charge_state(ST_IDLE);
- set_battery_soc(50);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
- set_battery_soc(99);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_GREEN));
-
- /* DISCHARGING */
- set_charge_state(ST_DISCHARGING);
- set_battery_soc(50);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
- set_battery_soc(99);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_GREEN));
-
- /* CHARGING */
- set_charge_state(ST_CHARGING);
- set_battery_soc(50);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
- set_battery_soc(99);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_GREEN));
-
- /* CHARGING_ERROR */
- set_charge_state(ST_CHARGING_ERROR);
- msleep(1500);
- TEST_ASSERT(verify_color(LED_COLOR_RED));
-
- return EC_SUCCESS;
-}
-
-static int test_green_yellow(void)
-{
- /* Make LED green */
- set_ac(1);
- set_charge_state(ST_CHARGING);
- set_battery_soc(95);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_GREEN));
-
- /* Make it yellow now */
- set_battery_soc(90);
- msleep(1500);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
-
- /* Shouldn't change from yellow to green in 15 seconds */
- set_battery_soc(95);
- msleep(13000);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
-
- /* After 15 seconds, it should turn green */
- msleep(3000);
- TEST_ASSERT(verify_color(LED_COLOR_GREEN));
-
- /* Shouldn't change from green to yellow in 15 seconds */
- set_charge_state(ST_BAD_COND);
- msleep(12000);
- TEST_ASSERT(verify_color(LED_COLOR_GREEN));
-
- /* After 15 seconds, it should turn yellow */
- msleep(4000);
- TEST_ASSERT(verify_color(LED_COLOR_YELLOW));
-
- return EC_SUCCESS;
-}
-
-static int test_bad_i2c(void)
-{
- /* Make LED green */
- set_ac(1);
- set_charge_state(ST_DISCHARGING);
- set_battery_soc(95);
- msleep(30000);
- TEST_ASSERT(verify_color(LED_COLOR_GREEN));
-
- /* Make it red, but fail the I2C write to green PWM register */
- lp5562_failed_i2c_reg = LP5562_REG_G_PWM;
- set_charge_state(ST_CHARGING_ERROR);
- msleep(3000);
- TEST_ASSERT(!verify_color(LED_COLOR_RED));
-
- /* I2C works again. LED should turn red */
- lp5562_failed_i2c_reg = -1;
- msleep(1500);
- TEST_ASSERT(verify_color(LED_COLOR_RED));
-
- /* Make it green, but I2C fails again */
- lp5562_failed_i2c_reg = LP5562_REG_R_PWM;
- set_charge_state(ST_DISCHARGING);
- msleep(1500);
- TEST_ASSERT(!verify_color(LED_COLOR_GREEN));
- TEST_ASSERT(!verify_color(LED_COLOR_RED));
-
- /* I2C works now, but LED turns red at the same time */
- lp5562_failed_i2c_reg = -1;
- set_charge_state(ST_CHARGING_ERROR);
- msleep(1500);
- TEST_ASSERT(verify_color(LED_COLOR_RED));
-
- return EC_SUCCESS;
-}
-
-void run_test(void)
-{
- test_reset();
-
- RUN_TEST(test_led_power);
- RUN_TEST(test_led_color);
- RUN_TEST(test_green_yellow);
- RUN_TEST(test_bad_i2c);
-
- test_print_result();
-}
diff --git a/test/led_spring.tasklist b/test/led_spring.tasklist
deleted file mode 100644
index 26cfc53453..0000000000
--- a/test/led_spring.tasklist
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_TEST(n, r, d, s) where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TEST_TASK_LIST /* No test task */
diff --git a/test/led_spring_impl.c b/test/led_spring_impl.c
deleted file mode 120000
index 25fcf73a27..0000000000
--- a/test/led_spring_impl.c
+++ /dev/null
@@ -1 +0,0 @@
-../board/spring/led.c \ No newline at end of file
diff --git a/test/thermal_falco.c b/test/thermal_falco.c
deleted file mode 100644
index 885dcfcdfb..0000000000
--- a/test/thermal_falco.c
+++ /dev/null
@@ -1,874 +0,0 @@
-/* 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.
- *
- * Test thermal engine.
- */
-
-#include "battery.h"
-#include "battery_smart.h"
-#include "chipset.h"
-#include "common.h"
-#include "console.h"
-#include "extpower.h"
-#include "extpower_falco.h"
-#include "fan.h"
-#include "hooks.h"
-#include "host_command.h"
-#include "printf.h"
-#include "temp_sensor.h"
-#include "test_util.h"
-#include "thermal.h"
-#include "throttle_ap.h"
-#include "timer.h"
-#include "util.h"
-
-/* Normally private stuff from the modules we're going to test */
-#include "thermal_falco_externs.h"
-
-
-/*****************************************************************************/
-/* Exported data */
-
-struct ec_thermal_config thermal_params[TEMP_SENSOR_COUNT];
-
-/* The tests below make some assumptions. */
-BUILD_ASSERT(TEMP_SENSOR_COUNT == 4);
-BUILD_ASSERT(EC_TEMP_THRESH_COUNT == 3);
-
-/*****************************************************************************/
-/* Mock functions */
-
-static int mock_temp[TEMP_SENSOR_COUNT];
-static int host_throttled;
-static int cpu_throttled;
-static int cpu_shutdown;
-static int fan_pct;
-static int no_temps_read;
-static int mock_id;
-static int mock_ac;
-static int mock_charger_current;
-static int mock_battery_discharge_current;
-
-/* constants to match against throttling sources */
-static const int t_s_therm = (1 << THROTTLE_SRC_THERMAL);
-static const int t_s_power = (1 << THROTTLE_SRC_POWER);
-static const int t_s_both = ((1 << THROTTLE_SRC_THERMAL) |
- (1 << THROTTLE_SRC_POWER));
-
-int dummy_temp_get_val(int idx, int *temp_ptr)
-{
- if (mock_temp[idx] >= 0) {
- *temp_ptr = mock_temp[idx];
- return EC_SUCCESS;
- }
-
- return EC_ERROR_NOT_POWERED;
-}
-
-void chipset_force_shutdown(void)
-{
- cpu_shutdown = 1;
-}
-
-void chipset_throttle_cpu(int throttled)
-{
- cpu_throttled = throttled;
-}
-
-void host_throttle_cpu(int throttled)
-{
- host_throttled = throttled;
-}
-
-void fan_set_percent_needed(int fan, int pct)
-{
- fan_pct = pct;
-}
-
-void smi_sensor_failure_warning(void)
-{
- no_temps_read = 1;
-}
-
-static void change_ac(int val)
-{
- mock_ac = val;
- extpower_interrupt(GPIO_AC_PRESENT);
- sleep(1);
-}
-
-int gpio_get_level(enum gpio_signal signal)
-{
- if (signal == GPIO_AC_PRESENT)
- return mock_ac;
- return 0;
-}
-
-int adc_read_channel(enum adc_channel ch)
-{
- switch (ch) {
- case ADC_AC_ADAPTER_ID_VOLTAGE:
- return mock_id;
- case ADC_CH_CHARGER_CURRENT:
- return mock_charger_current;
- default:
- break;
- }
-
- return 0;
-}
-
-/*****************************************************************************/
-/* Test utilities */
-
-static void set_temps(int t0, int t1, int t2, int t3)
-{
- mock_temp[0] = t0;
- mock_temp[1] = t1;
- mock_temp[2] = t2;
- mock_temp[3] = t3;
-}
-
-static void all_temps(int t)
-{
- set_temps(t, t, t, t);
-}
-
-static void reset_mock_battery(void)
-{
- const struct battery_info *bat_info = battery_get_info();
-
- /* 50% of charge */
- sb_write(SB_RELATIVE_STATE_OF_CHARGE, 50);
- sb_write(SB_ABSOLUTE_STATE_OF_CHARGE, 50);
- /* 25 degree Celsius */
- sb_write(SB_TEMPERATURE, 250 + 2731);
- /* Normal voltage */
- sb_write(SB_VOLTAGE, bat_info->voltage_normal);
- sb_write(SB_CHARGING_VOLTAGE, bat_info->voltage_max);
- sb_write(SB_CHARGING_CURRENT, 4000);
- /* Discharging at 100mAh */
- sb_write(SB_CURRENT, -100);
-}
-DECLARE_HOOK(HOOK_INIT, reset_mock_battery, HOOK_PRIO_DEFAULT);
-
-static void mock_batt(int cur)
-{
- sb_write(SB_CURRENT, -cur); /* discharge current is neg here */
-}
-
-static void reset_mocks(void)
-{
- /* Ignore all sensors */
- memset(thermal_params, 0, sizeof(thermal_params));
-
- /* All sensors report error anyway */
- set_temps(-1, -1 , -1, -1);
-
- /* Reset expectations */
- host_throttled = 0;
- cpu_throttled = 0;
- cpu_shutdown = 0;
- fan_pct = 0;
- no_temps_read = 0;
-
- /* other mocked inputs */
- mock_id = 0;
- mock_ac = 0;
- mock_charger_current = 0;
- mock_battery_discharge_current = 0;
-}
-
-/*****************************************************************************/
-/* Tests */
-
-static int test_init_val(void)
-{
- reset_mocks();
- sleep(2);
-
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
- TEST_ASSERT(fan_pct == 0);
- TEST_ASSERT(no_temps_read);
-
- sleep(2);
-
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
- TEST_ASSERT(fan_pct == 0);
- TEST_ASSERT(no_temps_read);
-
- return EC_SUCCESS;
-}
-
-static int test_sensors_can_be_read(void)
-{
- reset_mocks();
- mock_temp[2] = 100;
-
- sleep(2);
-
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
- TEST_ASSERT(fan_pct == 0);
- TEST_ASSERT(no_temps_read == 0);
-
- return EC_SUCCESS;
-}
-
-
-static int test_one_fan(void)
-{
- reset_mocks();
- thermal_params[2].temp_fan_off = 100;
- thermal_params[2].temp_fan_max = 200;
-
- all_temps(50);
- sleep(2);
- TEST_ASSERT(fan_pct == 0);
-
- all_temps(100);
- sleep(2);
- TEST_ASSERT(fan_pct == 0);
-
- all_temps(101);
- sleep(2);
- TEST_ASSERT(fan_pct == 1);
-
- all_temps(130);
- sleep(2);
- TEST_ASSERT(fan_pct == 30);
-
- all_temps(150);
- sleep(2);
- TEST_ASSERT(fan_pct == 50);
-
- all_temps(170);
- sleep(2);
- TEST_ASSERT(fan_pct == 70);
-
- all_temps(200);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- all_temps(300);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- return EC_SUCCESS;
-}
-
-static int test_two_fans(void)
-{
- reset_mocks();
-
- thermal_params[1].temp_fan_off = 120;
- thermal_params[1].temp_fan_max = 160;
- thermal_params[2].temp_fan_off = 100;
- thermal_params[2].temp_fan_max = 200;
-
- all_temps(50);
- sleep(2);
- TEST_ASSERT(fan_pct == 0);
-
- all_temps(100);
- sleep(2);
- TEST_ASSERT(fan_pct == 0);
-
- all_temps(101);
- sleep(2);
- TEST_ASSERT(fan_pct == 1);
-
- all_temps(130);
- sleep(2);
- /* fan 2 is still higher */
- TEST_ASSERT(fan_pct == 30);
-
- all_temps(150);
- sleep(2);
- /* now fan 1 is higher: 150 = 75% of [120-160] */
- TEST_ASSERT(fan_pct == 75);
-
- all_temps(170);
- sleep(2);
- /* fan 1 is maxed now */
- TEST_ASSERT(fan_pct == 100);
-
- all_temps(200);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- all_temps(300);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- return EC_SUCCESS;
-}
-
-static int test_all_fans(void)
-{
- reset_mocks();
-
- thermal_params[0].temp_fan_off = 20;
- thermal_params[0].temp_fan_max = 60;
- thermal_params[1].temp_fan_off = 120;
- thermal_params[1].temp_fan_max = 160;
- thermal_params[2].temp_fan_off = 100;
- thermal_params[2].temp_fan_max = 200;
- thermal_params[3].temp_fan_off = 300;
- thermal_params[3].temp_fan_max = 500;
-
- set_temps(1, 1, 1, 1);
- sleep(2);
- TEST_ASSERT(fan_pct == 0);
-
- /* Each sensor has its own range */
- set_temps(40, 0, 0, 0);
- sleep(2);
- TEST_ASSERT(fan_pct == 50);
-
- set_temps(0, 140, 0, 0);
- sleep(2);
- TEST_ASSERT(fan_pct == 50);
-
- set_temps(0, 0, 150, 0);
- sleep(2);
- TEST_ASSERT(fan_pct == 50);
-
- set_temps(0, 0, 0, 400);
- sleep(2);
- TEST_ASSERT(fan_pct == 50);
-
- set_temps(60, 0, 0, 0);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- set_temps(0, 160, 0, 0);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- set_temps(0, 0, 200, 0);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- set_temps(0, 0, 0, 500);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- /* But sensor 0 needs the most cooling */
- all_temps(20);
- sleep(2);
- TEST_ASSERT(fan_pct == 0);
-
- all_temps(21);
- sleep(2);
- TEST_ASSERT(fan_pct == 2);
-
- all_temps(30);
- sleep(2);
- TEST_ASSERT(fan_pct == 25);
-
- all_temps(40);
- sleep(2);
- TEST_ASSERT(fan_pct == 50);
-
- all_temps(50);
- sleep(2);
- TEST_ASSERT(fan_pct == 75);
-
- all_temps(60);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- all_temps(65);
- sleep(2);
- TEST_ASSERT(fan_pct == 100);
-
- return EC_SUCCESS;
-}
-
-static int test_one_limit(void)
-{
- reset_mocks();
- thermal_params[2].temp_host[EC_TEMP_THRESH_WARN] = 100;
- thermal_params[2].temp_host[EC_TEMP_THRESH_HIGH] = 200;
- thermal_params[2].temp_host[EC_TEMP_THRESH_HALT] = 300;
-
- all_temps(50);
- sleep(2);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(100);
- sleep(2);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(101);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(100);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(99);
- sleep(2);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(199);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(200);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(201);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(200);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(199);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(99);
- sleep(2);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(201);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(99);
- sleep(2);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- all_temps(301);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 1);
-
- /* We probably won't be able to read the CPU temp while shutdown,
- * so nothing will change. */
- all_temps(-1);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- /* cpu_shutdown is only set for testing purposes. The thermal task
- * doesn't do anything that could clear it. */
-
- all_temps(50);
- sleep(2);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
-
- return EC_SUCCESS;
-}
-
-static int test_several_limits(void)
-{
- reset_mocks();
-
- thermal_params[1].temp_host[EC_TEMP_THRESH_WARN] = 150;
- thermal_params[1].temp_host[EC_TEMP_THRESH_HIGH] = 200;
- thermal_params[1].temp_host[EC_TEMP_THRESH_HALT] = 250;
-
- thermal_params[2].temp_host[EC_TEMP_THRESH_WARN] = 100;
- thermal_params[2].temp_host[EC_TEMP_THRESH_HIGH] = 200;
- thermal_params[2].temp_host[EC_TEMP_THRESH_HALT] = 300;
-
- thermal_params[3].temp_host[EC_TEMP_THRESH_WARN] = 20;
- thermal_params[3].temp_host[EC_TEMP_THRESH_HIGH] = 30;
- thermal_params[3].temp_host[EC_TEMP_THRESH_HALT] = 40;
-
- set_temps(500, 100, 150, 10);
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm); /* 1=low, 2=warn, 3=low */
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- set_temps(500, 50, -1, 10); /* 1=low, 2=X, 3=low */
- sleep(2);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- set_temps(500, 170, 210, 10); /* 1=warn, 2=high, 3=low */
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
- set_temps(500, 100, 50, 40); /* 1=low, 2=low, 3=high */
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
- set_temps(500, 100, 50, 41); /* 1=low, 2=low, 3=shutdown */
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 1);
-
- all_temps(0); /* reset from shutdown */
- sleep(2);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
-
-
- return EC_SUCCESS;
-}
-
-static int test_batt(void)
-{
- struct adapter_limits *l;
- int longtime;
- int i;
-
- reset_mocks();
- /* We're assuming two limits, mild and urgent. */
- TEST_ASSERT(NUM_BATT_THRESHOLDS == 2);
- /* Find out which is which, only use the lower one */
- if (batt_limits[0].hi_val > batt_limits[1].hi_val)
- l = &batt_limits[1];
- else
- l = &batt_limits[0];
-
- /* Find a time longer than all sample count limits */
- for (i = longtime = 0; i < NUM_BATT_THRESHOLDS; i++)
- longtime = MAX(longtime,
- MAX(batt_limits[i].lo_cnt,
- batt_limits[i].hi_cnt));
- longtime += 2;
-
- /* On AC, but this doesn't actually matter for this test */
- mock_batt(0);
- change_ac(1);
-
- TEST_ASSERT(ap_is_throttled == 0);
- change_ac(0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* reset, by staying low for a long time */
- usleep(EXTPOWER_FALCO_POLL_PERIOD * longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* mock_batt() specifies the DISCHARGE current. Charging
- * should do nothing, no matter how high. */
- mock_batt(-1);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* midrange for a long time shouldn't do anything */
- mock_batt((l->lo_val + l->hi_val) / 2);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* above high limit for not quite long enough */
- mock_batt(l->hi_val + 1);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * (l->hi_cnt - 1));
- TEST_ASSERT(l->count != 0);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* drop below the high limit once */
- mock_batt(l->hi_val - 1);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * 1);
- TEST_ASSERT(l->count == 0);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* now back up */
- mock_batt(l->hi_val + 1);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * (l->hi_cnt - 1));
- TEST_ASSERT(l->count != 0);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* one more ought to do it */
- usleep(EXTPOWER_FALCO_POLL_PERIOD * 1);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
-
- /* going midrange for a long time shouldn't change anything */
- mock_batt((l->lo_val + l->hi_val) / 2);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * longtime);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
-
- /* charge for not quite long enough */
- mock_batt(-1);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * (l->lo_cnt - 1));
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
-
- /* back above the low limit once */
- mock_batt(l->lo_val + 1);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * 1);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
-
- /* now charge again - that should have reset the count */
- mock_batt(-1);
- usleep(EXTPOWER_FALCO_POLL_PERIOD * (l->lo_cnt - 1));
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
-
- /* One more ought to do it */
- usleep(EXTPOWER_FALCO_POLL_PERIOD * 1);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- return EC_SUCCESS;
-}
-
-static int test_several_limits_with_batt(void)
-{
- struct adapter_limits *l;
- int longtime;
- int i;
-
- /* We're assuming two limits, mild and urgent. */
- TEST_ASSERT(NUM_BATT_THRESHOLDS == 2);
- /* Find out which is which, only use the lower one */
- if (batt_limits[0].hi_val > batt_limits[1].hi_val)
- l = &batt_limits[1];
- else
- l = &batt_limits[0];
-
- /* Find a time longer than all sample count limits */
- for (i = longtime = 0; i < NUM_BATT_THRESHOLDS; i++)
- longtime = MAX(longtime,
- MAX(batt_limits[i].lo_cnt,
- batt_limits[i].hi_cnt));
- longtime += 2;
- longtime *= EXTPOWER_FALCO_POLL_PERIOD;
-
- reset_mocks();
-
- /* Set some thermal limits */
- thermal_params[1].temp_host[EC_TEMP_THRESH_WARN] = 150;
- thermal_params[1].temp_host[EC_TEMP_THRESH_HIGH] = 200;
- thermal_params[1].temp_host[EC_TEMP_THRESH_HALT] = 250;
-
- thermal_params[2].temp_host[EC_TEMP_THRESH_WARN] = 100;
- thermal_params[2].temp_host[EC_TEMP_THRESH_HIGH] = 200;
- thermal_params[2].temp_host[EC_TEMP_THRESH_HALT] = 300;
-
- thermal_params[3].temp_host[EC_TEMP_THRESH_WARN] = 20;
- thermal_params[3].temp_host[EC_TEMP_THRESH_HIGH] = 30;
- thermal_params[3].temp_host[EC_TEMP_THRESH_HALT] = 40;
-
-
- /* On AC, charging */
- mock_batt(-1);
- all_temps(0);
- change_ac(1);
- usleep(longtime);
- /* Everything is ready */
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
-
- set_temps(500, 100, 150, 10);
- usleep(longtime);
- TEST_ASSERT(host_throttled == t_s_therm); /* 1=low, 2=warn, 3=low */
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
- /* battery up and down */
- mock_batt(l->hi_val + 1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(host_throttled == t_s_both); /* 1=low, 2=warn, 3=low */
- TEST_ASSERT(cpu_shutdown == 0);
- mock_batt(-1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
- TEST_ASSERT(host_throttled == t_s_therm); /* 1=low, 2=warn, 3=low */
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
-
- set_temps(500, 50, -1, 10); /* 1=low, 2=X, 3=low */
- usleep(longtime);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* battery up and down */
- mock_batt(l->hi_val + 1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(host_throttled == t_s_power);
- TEST_ASSERT(cpu_shutdown == 0);
- mock_batt(-1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(cpu_shutdown == 0);
-
-
- set_temps(500, 170, 210, 10); /* 1=warn, 2=high, 3=low */
- sleep(2);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
- /* battery up and down */
- mock_batt(l->hi_val + 1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(host_throttled == t_s_both);
- TEST_ASSERT(cpu_shutdown == 0);
- mock_batt(-1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
-
- set_temps(500, 100, 50, 40); /* 1=low, 2=low, 3=high */
- usleep(longtime);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
- /* battery up and down */
- mock_batt(l->hi_val + 1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(host_throttled == t_s_both);
- TEST_ASSERT(cpu_shutdown == 0);
- mock_batt(-1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 0);
-
-
- set_temps(500, 100, 50, 41); /* 1=low, 2=low, 3=shutdown */
- usleep(longtime);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 1);
-
- /* battery up and down */
- mock_batt(l->hi_val + 1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(host_throttled == t_s_both);
- TEST_ASSERT(cpu_shutdown == 1);
- mock_batt(-1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
- TEST_ASSERT(host_throttled == t_s_therm);
- TEST_ASSERT(cpu_throttled == t_s_therm);
- TEST_ASSERT(cpu_shutdown == 1);
-
-
- all_temps(0);
- usleep(longtime);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
-
- /* battery up and down */
- mock_batt(l->hi_val + 1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 1);
- TEST_ASSERT(ap_is_throttled);
- TEST_ASSERT(cpu_throttled == 0);
- TEST_ASSERT(host_throttled == t_s_power);
- mock_batt(-1);
- usleep(longtime);
- TEST_ASSERT(l->triggered == 0);
- TEST_ASSERT(ap_is_throttled == 0);
- TEST_ASSERT(host_throttled == 0);
- TEST_ASSERT(cpu_throttled == 0);
-
- return EC_SUCCESS;
-}
-
-
-void run_test(void)
-{
- test_chipset_on();
-
- RUN_TEST(test_init_val);
- RUN_TEST(test_sensors_can_be_read);
- RUN_TEST(test_one_fan);
- RUN_TEST(test_two_fans);
- RUN_TEST(test_all_fans);
-
- RUN_TEST(test_one_limit);
- RUN_TEST(test_several_limits);
-
- RUN_TEST(test_batt);
- RUN_TEST(test_several_limits_with_batt);
-
- test_print_result();
-}
diff --git a/test/thermal_falco.tasklist b/test/thermal_falco.tasklist
deleted file mode 100644
index 6ca1e65553..0000000000
--- a/test/thermal_falco.tasklist
+++ /dev/null
@@ -1,19 +0,0 @@
-/* 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.
- */
-
-/**
- * List of enabled tasks in the priority order
- *
- * The first one has the lowest priority.
- *
- * For each task, use the macro TASK_TEST(n, r, d, s) where :
- * 'n' in the name of the task
- * 'r' in the main routine of the task
- * 'd' in an opaque parameter passed to the routine at startup
- * 's' is the stack size in bytes; must be a multiple of 8
- */
-#define CONFIG_TEST_TASK_LIST \
- TASK_TEST(CHARGER, charger_task, NULL, TASK_STACK_SIZE) \
- TASK_TEST(CHIPSET, chipset_task, NULL, TASK_STACK_SIZE)
diff --git a/test/thermal_falco_externs.h b/test/thermal_falco_externs.h
deleted file mode 100644
index 48c3c0ef18..0000000000
--- a/test/thermal_falco_externs.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* 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.
- */
-
-#ifndef __THERMAL_FALCO_EXTERNS_H
-#define __THERMAL_FALCO_EXTERNS_H
-
-/* Normally private symbols from the modules that we're testing. */
-extern struct adapter_limits
- ad_limits[][NUM_AC_TURBO_STATES][NUM_AC_THRESHOLDS];
-extern uint32_t ap_is_throttled;
-extern struct adapter_limits batt_limits[NUM_BATT_THRESHOLDS];
-
-#endif /* __THERMAL_FALCO_EXTERNS_H */