diff options
Diffstat (limited to 'baseboard/kukui/baseboard.h')
-rw-r--r-- | baseboard/kukui/baseboard.h | 330 |
1 files changed, 330 insertions, 0 deletions
diff --git a/baseboard/kukui/baseboard.h b/baseboard/kukui/baseboard.h new file mode 100644 index 0000000000..9ba11111e8 --- /dev/null +++ b/baseboard/kukui/baseboard.h @@ -0,0 +1,330 @@ +/* Copyright 2019 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/* Kukui board configuration */ + +#ifndef __CROS_EC_BASEBOARD_H +#define __CROS_EC_BASEBOARD_H + +/* + * Variant battery defines, pick one: + * VARIANT_KUKUI_BATTERY_MAX17055 + * VARIANT_KUKUI_BATTERY_MM8013 + * VARIANT_KUKUI_BATTERY_BQ27541 + * VARIANT_KUKUI_BATTERY_SMART + */ +#if defined(VARIANT_KUKUI_BATTERY_MAX17055) +#define CONFIG_BATTERY_MAX17055 +#define CONFIG_BATTERY_MAX17055_ALERT +#define BATTERY_MAX17055_RSENSE 5 /* m-ohm */ +#elif defined(VARIANT_KUKUI_BATTERY_MM8013) +#define CONFIG_BATTERY_MM8013 +#elif defined(VARIANT_KUKUI_BATTERY_BQ27541) +#define CONFIG_BATTERY_BQ27541 +#elif defined(VARIANT_KUKUI_BATTERY_SMART) +#define CONFIG_BATTERY_SMART +#define CONFIG_BATTERY_FUEL_GAUGE +#else +#error Must define a VARIANT_KUKUI_BATTERY +#endif /* VARIANT_KUKUI_BATTERY */ + +/* + * Variant charger defines, pick one: + * VARIANT_KUKUI_CHARGER_MT6370 + * VARIANT_KUKUI_CHARGER_ISL9238 + */ +#if defined(VARIANT_KUKUI_CHARGER_MT6370) +#define CONFIG_CHARGER_MT6370 +#define CONFIG_CHARGER_MT6370_BC12_GPIO +#define CONFIG_CHARGE_RAMP_HW +#define CONFIG_CHARGER_OTG +#define CONFIG_CHARGER_PROFILE_OVERRIDE +#define CONFIG_USB_PD_TCPM_MT6370 +#define CONFIG_USB_PD_TCPC_LOW_POWER +#define CONFIG_USB_PD_DISCHARGE_TCPC +#define CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE + +/* TCPC MT6370 */ +#define PD_POWER_SUPPLY_TURN_ON_DELAY 30000 /* us */ +#define PD_POWER_SUPPLY_TURN_OFF_DELAY 250000 /* us */ + +/* + * The Maximum input voltage is 13.5V, need another 5% tolerance. + * 12.85V * 1.05 = 13.5V + */ +#define PD_MAX_VOLTAGE_MV 12850 +#define CONFIG_USB_PD_PREFER_MV +#elif defined(VARIANT_KUKUI_CHARGER_ISL9238) +#define CONFIG_CHARGER_ISL9238C +#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 /* BOARD_RS1 */ +#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* BOARD_RS2 */ +#define CONFIG_CHARGER_OTG +#define CONFIG_CHARGE_RAMP_HW + +/* TCPC FUSB302 */ +#define PD_POWER_SUPPLY_TURN_ON_DELAY 160000 /* us */ +#define PD_POWER_SUPPLY_TURN_OFF_DELAY 250000 /* us */ + +/* b/2230219: 15V has better charging performance than 20V */ +#define PD_MAX_VOLTAGE_MV 15000 +#else +#error Must define a VARIANT_KUKUI_CHARGER +#endif /* VARIANT_KUKUI_CHARGER */ + +/* + * Variant pogo defines, if pick, VARIANT_KUKUI_POGO_KEYBOARD is mandatory + * VARIANT_KUKUI_POGO_KEYBOARD + * VARIANT_KUKUI_POGO_DOCK + */ +#ifdef VARIANT_KUKUI_POGO_DOCK +#ifndef VARIANT_KUKUI_POGO_KEYBOARD +#error VARIANT_KUKUI_POGO_KEYBOARD is mandatory if use dock +#endif /* !VARIANT_KUKUI_POGO_KEYBOARD */ +#undef CONFIG_DEDICATED_CHARGE_PORT_COUNT +#define CONFIG_DEDICATED_CHARGE_PORT_COUNT 1 +#define DEDICATED_CHARGE_PORT 1 +#endif /* VARIANT_KUKUI_POGO_DOCK */ + +#ifdef VARIANT_KUKUI_POGO_KEYBOARD +#define CONFIG_DETACHABLE_BASE +#define CONFIG_BASE_ATTACHED_SWITCH +#endif + +/* define this if the board is jacuzzi family */ +#ifdef VARIANT_KUKUI_JACUZZI +#define CONFIG_HOSTCMD_AP_SET_SKUID +/* + * IT81202 based boards are variant of jacuzzi and I/O expander isn't required + * on them. + */ +#ifdef VARIANT_KUKUI_EC_STM32F098 +#define CONFIG_IO_EXPANDER +#define CONFIG_IO_EXPANDER_IT8801 +#define CONFIG_IO_EXPANDER_PORT_COUNT 1 +#define CONFIG_KEYBOARD_NOT_RAW +#define CONFIG_KEYBOARD_BOARD_CONFIG +#endif +#define CONFIG_KEYBOARD_COL2_INVERTED + +#define CONFIG_GMR_TABLET_MODE +#define GMR_TABLET_MODE_GPIO_L GPIO_TABLET_MODE_L +#define CONFIG_TABLET_MODE +#define CONFIG_TABLET_MODE_SWITCH + +#define PD_OPERATING_POWER_MW 30000 +#endif /* VARIANT_KUKUI_JACUZZI */ + +/* + * Define this flag if board controls dp mux via gpio pins USB_C0_DP_OE_L and + * USB_C0_DP_POLARITY. + * + * board must provide function board_set_dp_mux_control(output_enable, polarity) + * + * #define VARIANT_KUKUI_DP_MUX_GPIO + */ + +/* Optional modules */ +#define CONFIG_ADC +#undef CONFIG_ADC_WATCHDOG +#define CONFIG_CHIPSET_MT8183 +#define CONFIG_CMD_ACCELS +#define CONFIG_EMULATED_SYSRQ +#define CONFIG_I2C +#define CONFIG_I2C_CONTROLLER +#define CONFIG_I2C_VIRTUAL_BATTERY +#define CONFIG_I2C_PASSTHRU_RESTRICTED +#define CONFIG_LED_COMMON +#define CONFIG_LOW_POWER_IDLE +#define CONFIG_POWER_COMMON +#define CONFIG_SPI +#define CONFIG_SWITCH + +#ifdef SECTION_IS_RO +#undef CONFIG_SYSTEM_UNLOCKED /* Disabled in RO to save space */ +#else +#define CONFIG_SYSTEM_UNLOCKED /* Allow dangerous commands for testing */ +#endif + +/* Bootblock */ +#ifdef SECTION_IS_RO +#define CONFIG_BOOTBLOCK + +#define EMMC_SPI_PORT 2 +#endif + +/* Optional features */ +#define CONFIG_BOARD_PRE_INIT +#define CONFIG_BOARD_VERSION_CUSTOM +#define CONFIG_BUTTON_TRIGGERED_RECOVERY +#define CONFIG_CHARGER_ILIM_PIN_DISABLED +#define CONFIG_FORCE_CONSOLE_RESUME +#define CONFIG_HOST_COMMAND_STATUS +#define CONFIG_CMD_AP_RESET_LOG +#define CONFIG_PRESERVE_LOGS + +/* Required for FAFT */ +#define CONFIG_CMD_BUTTON +#define CONFIG_CMD_CHARGEN + +/* By default, set hcdebug to off */ +#undef CONFIG_HOSTCMD_DEBUG_MODE +#define CONFIG_HOSTCMD_DEBUG_MODE HCDEBUG_OFF + +#define CONFIG_LTO +#define CONFIG_POWER_BUTTON +#define CONFIG_POWER_BUTTON_IGNORE_LID +#define CONFIG_POWER_TRACK_HOST_SLEEP_STATE +#define CONFIG_SOFTWARE_PANIC +#define CONFIG_VBOOT_HASH + +#define CONFIG_CHARGER +#define CONFIG_CHARGER_INPUT_CURRENT 512 +#define CONFIG_CHARGER_LIMIT_POWER_THRESH_BAT_PCT 2 +#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 15000 +#define CONFIG_CHARGER_DISCHARGE_ON_AC +#define CONFIG_CHARGER_DISCHARGE_ON_AC_CUSTOM +#define CONFIG_USB_CHARGER + +/* Increase tx buffer size, as we'd like to stream EC log to AP. */ +#undef CONFIG_UART_TX_BUF_SIZE +#define CONFIG_UART_TX_BUF_SIZE 4096 + +#define GPIO_LID_OPEN GPIO_HALL_INT_L + +#ifndef VARIANT_KUKUI_NO_SENSORS +#define CONFIG_ACCEL_FIFO +/* FIFO size is in power of 2. */ +#define CONFIG_ACCEL_FIFO_SIZE 256 +#define CONFIG_ACCEL_FIFO_THRES (CONFIG_ACCEL_FIFO_SIZE / 3) +#endif /* VARIANT_KUKUI_NO_SENSORS */ + +#ifndef VARIANT_KUKUI_TABLET_PWRBTN +#define POWERBTN_BOOT_DELAY 0 +#endif + +/* USB PD config */ +#define CONFIG_CHARGE_MANAGER +#define CONFIG_USB_POWER_DELIVERY +#define CONFIG_USB_PD_ALT_MODE +#define CONFIG_USB_PD_ALT_MODE_DFP +#define CONFIG_USB_PD_DUAL_ROLE +#define CONFIG_USB_PD_LOGGING +#define CONFIG_USB_PD_PORT_MAX_COUNT 1 +#define CONFIG_USB_PD_TCPM_TCPCI +#define CONFIG_USB_PD_5V_EN_CUSTOM +#define CONFIG_USBC_SS_MUX +#define CONFIG_USBC_VCONN +#define CONFIG_USBC_VCONN_SWAP +#define CONFIG_USB_PD_COMM_LOCKED + +#define CONFIG_BATTERY_CRITICAL_SHUTDOWN_CUT_OFF +#define CONFIG_BATTERY_CUT_OFF +#define CONFIG_BATTERY_PRESENT_CUSTOM +#define CONFIG_BATTERY_REVIVE_DISCONNECT + +#define PD_MAX_POWER_MW ((PD_MAX_VOLTAGE_MV * PD_MAX_CURRENT_MA) / 1000) +#ifdef BOARD_KODAMA +#define PD_MAX_CURRENT_MA 2000 +#else +#define PD_MAX_CURRENT_MA 3000 +#endif + +/* Optional for testing */ +#undef CONFIG_PECI +#undef CONFIG_PSTORE + +#define CONFIG_TASK_PROFILING +#define CONFIG_MKBP_USE_GPIO + +/* + * Variant EC defines. Pick one: + * VARIANT_KUKUI_EC_STM32F098 + * VARIANT_KUKUI_EC_IT81202 + */ +#if defined(VARIANT_KUKUI_EC_STM32F098) +/* Timer selection */ +#define TIM_CLOCK32 2 +#define TIM_WATCHDOG 7 + +/* 48 MHz SYSCLK clock frequency */ +#define CPU_CLOCK 48000000 + +#undef CONFIG_HIBERNATE +#define CONFIG_SPI_CONTROLLER +#define CONFIG_STM_HWTIMER32 +#define CONFIG_WATCHDOG_HELP +#undef CONFIG_UART_CONSOLE +#define CONFIG_UART_CONSOLE 1 +#define CONFIG_UART_RX_DMA + +/* This option is limited to TCPMv1 */ +#define CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT TYPEC_RP_3A0 +/* STM32F098 based boards use TCPMv1 */ +#define CONFIG_USB_PD_TCPMV1 +#define CONFIG_USB_PD_VBUS_DETECT_TCPC + +/* Modules we want to exclude */ +#undef CONFIG_CMD_BATTFAKE +#undef CONFIG_CMD_FLASH +#undef CONFIG_CMD_HASH +#undef CONFIG_CMD_MD +#undef CONFIG_CMD_POWERINDEBUG +#undef CONFIG_CMD_TIMERINFO + +/* save space at RO image */ +#ifdef SECTION_IS_RO +#undef CONFIG_CMD_APTHROTTLE +#undef CONFIG_CMD_CRASH +#undef CONFIG_CMD_HCDEBUG +#undef CONFIG_CMD_IDLE_STATS +#undef CONFIG_CMD_MMAPINFO +#undef CONFIG_CMD_PWR_AVG +#undef CONFIG_CMD_REGULATOR +#undef CONFIG_CMD_RW +#undef CONFIG_CMD_SHMEM +#undef CONFIG_CMD_SLEEPMASK +#undef CONFIG_CMD_SLEEPMASK_SET +#undef CONFIG_CMD_SYSLOCK +#undef CONFIG_HOSTCMD_FLASHPD +#undef CONFIG_HOSTCMD_RWHASHPD +#undef CONFIG_CONSOLE_CMDHELP + +#undef CONFIG_HOSTCMD_GET_UPTIME_INFO +#undef CONFIG_CMD_AP_RESET_LOG +#undef CONFIG_CMD_I2C_SCAN +#undef CONFIG_CMD_I2C_XFER + +/* free flash space */ +#undef CONFIG_USB_PD_DEBUG_LEVEL +#define CONFIG_USB_PD_DEBUG_LEVEL 0 +#undef CONFIG_USB_PD_LOGGING +#define CONFIG_COMMON_GPIO_SHORTNAMES +/* Exclude PD state names from RO image to save space */ +#undef CONFIG_USB_PD_TCPMV1_DEBUG +#endif +#elif defined(VARIANT_KUKUI_EC_IT81202) +#define CONFIG_IT83XX_HARD_RESET_BY_GPG1 +#define CONFIG_IT83XX_VCC_1P8V + +/* IT81202 based boards use TCPMv2 */ +#define CONFIG_USB_DRP_ACC_TRYSRC +#define CONFIG_USB_PD_DECODE_SOP +#define CONFIG_USB_PD_ITE_ACTIVE_PORT_COUNT 1 +#define CONFIG_USB_PD_TCPMV2 +#else +#error "Must define a VARIANT_KUKUI_EC_XXX!" +#endif + +#ifndef __ASSEMBLER__ +#ifdef VARIANT_KUKUI_DP_MUX_GPIO +void board_set_dp_mux_control(int output_enable, int polarity); +#endif /* VARIANT_KUKUI_DP_MUX_GPIO */ + +/* If POGO pin is providing power. */ +int kukui_pogo_extpower_present(void); + +#endif /* !__ASSEMBLER__ */ + +#endif /* __CROS_EC_BASEBOARD_H */ |