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