From 3426fb1e93654ff2bba8b7ea7c2e143487462d18 Mon Sep 17 00:00:00 2001 From: Ruibin Chang Date: Wed, 11 Mar 2020 17:00:10 +0800 Subject: baseboard/ite_evb: create ite_evb baseboard The development board of it83xx and it8xxx2 have common code and config options which are moved to baseboard ite_evb. And we create another board for PD EVB based on baseboard ite_evb. BUG=none BRANCH=none TEST=on baseboard ite_evb: 1.test board it83xx_evb and it8xxx2_evb: successfully Flash EC image and boot on chip it8320 and it83202. 2.flashrom by ite_spi test: $ sudo ./util/flash_ec --board=it8xxx2_evb --verbose INFO: Using servo_v2. INFO: Using ec image : /mnt/host/source/src/platform/ec/build/ it8xxx2_evb/ec.bin dut-control --port=9999 i2c_mux_en:on dut-control --port=9999 i2c_mux:remote_adc INFO: Flashing chip ite_spi. dut-control --port=9999 cold_reset:on dut-control --port=9999 fw_up:on dut-control --port=9999 cold_reset:off dut-control --port=9999 fw_up:off dut-control --port=9999 spi1_vref:pp1800 spi1_buf_en:on dut-control --port=9999 spi1_buf_on_flex_en:on INFO: Running flashrom: sudo /usr/sbin/flashrom -p ft2232_spi:type=servo-v2,port=B, serial=911416-00012 --flash-size flashrom v0.9.9 : : on Linux 4.15.0-76-generic (x86_64) flashrom v0.9.9 : : on Linux 4.15.0-76-generic (x86_64) INFO: Programming EC firmware image. INFO: Running flashrom: /usr/sbin/flashrom -p ft2232_spi:type=servo-v2,port=B, serial=911416-00012 -w /tmp/flash_spi_6163 flashrom v0.9.9 : : on Linux 4.15.0-76-generic (x86_64) flashrom v0.9.9 : : on Linux 4.15.0-76-generic (x86_64) Calibrating delay loop... OK. Erasing and writing flash chip... Verifying flash... VERIFIED. SUCCESS INFO: Flashing done. INFO: Restoring servo settings... dut-control --port=9999 cold_reset:off dut-control --port=9999 i2c_mux_en:on dut-control --port=9999 i2c_mux:remote_adc dut-control --port=9999 spi1_vref:off dut-control --port=9999 spi1_buf_en:off dut-control --port=9999 spi1_buf_on_flex_en:off dut-control --port=9999 cold_reset:on dut-control --port=9999 cold_reset:off 3.test board it8xxx2_pdevb: successfully Flash EC image and boot on chip it83202. Connection with adapter and dongle are able to ready state. Change-Id: Ib6371b61c27980eb9977548177efb8c896e72d47 Signed-off-by: Ruibin Chang Signed-off-by: tim Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2071551 Reviewed-by: Jett Rink --- board/it83xx_evb/board.c | 242 +++++++++------------------------------ board/it83xx_evb/board.h | 80 +------------ board/it83xx_evb/build.mk | 2 +- board/it83xx_evb/ec.tasklist | 4 +- board/it83xx_evb/gpio.inc | 14 --- board/it83xx_evb/usb_pd_policy.c | 83 -------------- 6 files changed, 58 insertions(+), 367 deletions(-) delete mode 100644 board/it83xx_evb/usb_pd_policy.c (limited to 'board/it83xx_evb') diff --git a/board/it83xx_evb/board.c b/board/it83xx_evb/board.c index 331286a181..a18b8b3b70 100644 --- a/board/it83xx_evb/board.c +++ b/board/it83xx_evb/board.c @@ -4,93 +4,9 @@ */ /* IT83xx development board configuration */ -#include "adc.h" #include "adc_chip.h" -#include "clock.h" -#include "common.h" -#include "console.h" -#include "it83xx_pd.h" -#include "fan.h" -#include "gpio.h" -#include "hooks.h" -#include "i2c.h" -#include "intc.h" -#include "keyboard_scan.h" -#include "lid_switch.h" -#include "lpc.h" -#include "power_button.h" #include "pwm.h" #include "pwm_chip.h" -#include "registers.h" -#include "spi.h" -#include "switch.h" -#include "system.h" -#include "task.h" -#include "timer.h" -#include "uart.h" -#include "usb_pd.h" -#include "usb_pd_tcpm.h" -#include "util.h" - -#if IT83XX_PD_EVB -int board_get_battery_soc(void) -{ - return 100; -} - -const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = { - {-1, -1, &it83xx_tcpm_drv}, - {-1, -1, &it83xx_tcpm_drv}, -}; - -void board_pd_vconn_ctrl(int port, enum usbpd_cc_pin cc_pin, int enabled) -{ - int cc1_enabled = 0, cc2_enabled = 0; - - if (cc_pin != USBPD_CC_PIN_1) - cc2_enabled = enabled; - else - cc1_enabled = enabled; - - if (port) { - gpio_set_level(GPIO_USBPD_PORTB_CC2_VCONN, cc2_enabled); - gpio_set_level(GPIO_USBPD_PORTB_CC1_VCONN, cc1_enabled); - } else { - gpio_set_level(GPIO_USBPD_PORTA_CC2_VCONN, cc2_enabled); - gpio_set_level(GPIO_USBPD_PORTA_CC1_VCONN, cc1_enabled); - } -} - -void board_pd_vbus_ctrl(int port, int enabled) -{ - if (port) { - gpio_set_level(GPIO_USBPD_PORTB_VBUS_INPUT, !enabled); - gpio_set_level(GPIO_USBPD_PORTB_VBUS_OUTPUT, enabled); - if (!enabled) { - gpio_set_level(GPIO_USBPD_PORTB_VBUS_DROP, 1); - udelay(MSEC); - } - gpio_set_level(GPIO_USBPD_PORTB_VBUS_DROP, 0); - } else { - gpio_set_level(GPIO_USBPD_PORTA_VBUS_INPUT, !enabled); - gpio_set_level(GPIO_USBPD_PORTA_VBUS_OUTPUT, enabled); - if (!enabled) { - gpio_set_level(GPIO_USBPD_PORTA_VBUS_DROP, 1); - udelay(MSEC); - } - gpio_set_level(GPIO_USBPD_PORTA_VBUS_DROP, 0); - } -} -#else -/* EC EVB */ -void pd_task(void) -{ - while (1) - task_wait_event(-1); -} -#endif - -#include "gpio_list.h" /* * PWM channels. Must be in the exactly same order as in enum pwm_channel. @@ -99,115 +15,65 @@ void pd_task(void) * number of pwm channel greater than three. */ const struct pwm_t pwm_channels[] = { - {7, 0, 30000, PWM_PRESCALER_C4}, - {0, PWM_CONFIG_DSLEEP, 100, PWM_PRESCALER_C6}, + [PWM_CH_FAN] = { + .channel = PWM_HW_CH_DCR7, + .flags = 0, + .freq_hz = 30000, + .pcfsr_sel = PWM_PRESCALER_C4, + }, + [PWM_CH_WITH_DSLEEP_FLAG] = { + .channel = PWM_HW_CH_DCR0, + .flags = PWM_CONFIG_DSLEEP, + .freq_hz = 100, + .pcfsr_sel = PWM_PRESCALER_C6, + }, }; - BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); -const struct fan_conf fan_conf_0 = { - .flags = FAN_USE_RPM_MODE, - .ch = 0, /* Use MFT id to control fan */ - .pgood_gpio = -1, - .enable_gpio = -1, -}; - -const struct fan_rpm fan_rpm_0 = { - .rpm_min = 1500, - .rpm_start = 1500, - .rpm_max = 6500, -}; - -const struct fan_t fans[] = { - { .conf = &fan_conf_0, .rpm = &fan_rpm_0, }, -}; -BUILD_ASSERT(ARRAY_SIZE(fans) == CONFIG_FANS); - -/* - * PWM HW channelx binding tachometer channelx for fan control. - * Four tachometer input pins but two tachometer modules only, - * so always binding [TACH_CH_TACH0A | TACH_CH_TACH0B] and/or - * [TACH_CH_TACH1A | TACH_CH_TACH1B] - */ -const struct fan_tach_t fan_tach[] = { - {TACH_CH_NULL, -1, -1, -1}, - {TACH_CH_NULL, -1, -1, -1}, - {TACH_CH_NULL, -1, -1, -1}, - {TACH_CH_NULL, -1, -1, -1}, - {TACH_CH_NULL, -1, -1, -1}, - {TACH_CH_NULL, -1, -1, -1}, - {TACH_CH_NULL, -1, -1, -1}, - {TACH_CH_TACH0A, 2, 50, 30}, -}; -BUILD_ASSERT(ARRAY_SIZE(fan_tach) == PWM_HW_CH_TOTAL); - -/* Wake-up pins for hibernate */ -const enum gpio_signal hibernate_wake_pins[] = { - GPIO_POWER_BUTTON_L, GPIO_LID_OPEN -}; -const int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins); - -/* Initialize board. */ -static void board_init(void) -{ -} -DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); - /* ADC channels. Must be in the exactly same order as in enum adc_channel. */ const struct adc_t adc_channels[] = { /* Convert to mV (3000mV/1024). */ - {"ADC_VBUSSA", 3000, 1024, 0, CHIP_ADC_CH0}, /* GPI0, ADC0 */ - {"ADC_VBUSSB", 3000, 1024, 0, CHIP_ADC_CH1}, /* GPI1, ADC1 */ - {"ADC_EVB_CH_13", 3000, 1024, 0, CHIP_ADC_CH13}, /* GPL0, ADC13 */ - {"ADC_EVB_CH_14", 3000, 1024, 0, CHIP_ADC_CH14}, /* GPL1, ADC14 */ - {"ADC_EVB_CH_15", 3000, 1024, 0, CHIP_ADC_CH15}, /* GPL2, ADC15 */ - {"ADC_EVB_CH_16", 3000, 1024, 0, CHIP_ADC_CH16}, /* GPL3, ADC16 */ -}; -BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); - -/* Keyboard scan setting */ -struct keyboard_scan_config keyscan_config = { - .output_settle_us = 35, - .debounce_down_us = 5 * MSEC, - .debounce_up_us = 40 * MSEC, - .scan_period_us = 3 * MSEC, - .min_post_scan_delay_us = 1000, - .poll_timeout_us = 100 * MSEC, - .actual_key_mask = { - 0x14, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, - 0xa4, 0xff, 0xfe, 0x55, 0xfa, 0xca /* full set */ + [ADC_VBUSSA] = { + .name = "ADC_VBUSSA", + .factor_mul = ADC_MAX_MVOLT, + .factor_div = ADC_READ_MAX + 1, + .shift = 0, + .channel = CHIP_ADC_CH0, /* GPI0, ADC0 */ + }, + [ADC_VBUSSB] = { + .name = "ADC_VBUSSB", + .factor_mul = ADC_MAX_MVOLT, + .factor_div = ADC_READ_MAX + 1, + .shift = 0, + .channel = CHIP_ADC_CH1, /* GPI1, ADC1 */ + }, + [ADC_EVB_CH_13] = { + .name = "ADC_EVB_CH_13", + .factor_mul = ADC_MAX_MVOLT, + .factor_div = ADC_READ_MAX + 1, + .shift = 0, + .channel = CHIP_ADC_CH13, /* GPL0, ADC13 */ + }, + [ADC_EVB_CH_14] = { + .name = "ADC_EVB_CH_14", + .factor_mul = ADC_MAX_MVOLT, + .factor_div = ADC_READ_MAX + 1, + .shift = 0, + .channel = CHIP_ADC_CH14, /* GPL1, ADC14 */ + }, + [ADC_EVB_CH_15] = { + .name = "ADC_EVB_CH_15", + .factor_mul = ADC_MAX_MVOLT, + .factor_div = ADC_READ_MAX + 1, + .shift = 0, + .channel = CHIP_ADC_CH15, /* GPL2, ADC15 */ + }, + [ADC_EVB_CH_16] = { + .name = "ADC_EVB_CH_16", + .factor_mul = ADC_MAX_MVOLT, + .factor_div = ADC_READ_MAX + 1, + .shift = 0, + .channel = CHIP_ADC_CH16, /* GPL3, ADC16 */ }, }; - -/* - * I2C channels (A, B, and C) are using the same timing registers (00h~07h) - * at default. - * In order to set frequency independently for each channels, - * We use timing registers 09h~0Bh, and the supported frequency will be: - * 50KHz, 100KHz, 400KHz, or 1MHz. - * I2C channels (D, E and F) can be set different frequency on different ports. - * The I2C(D/E/F) frequency depend on the frequency of SMBus Module and - * the individual prescale register. - * The frequency of SMBus module is 24MHz on default. - * The allowed range of I2C(D/E/F) frequency is as following setting. - * SMBus Module Freq = PLL_CLOCK / ((IT83XX_ECPM_SCDCR2 & 0x0F) + 1) - * (SMBus Module Freq / 510) <= I2C Freq <= (SMBus Module Freq / 8) - * Channel D has multi-function and can be used as UART interface. - * Channel F is reserved for EC debug. - */ - -/* I2C ports */ -const struct i2c_port_t i2c_ports[] = { - {"battery", IT83XX_I2C_CH_C, 100, GPIO_I2C_C_SCL, GPIO_I2C_C_SDA}, - {"evb-1", IT83XX_I2C_CH_A, 100, GPIO_I2C_A_SCL, GPIO_I2C_A_SDA}, - {"evb-2", IT83XX_I2C_CH_B, 100, GPIO_I2C_B_SCL, GPIO_I2C_B_SDA}, - {"opt-4", IT83XX_I2C_CH_E, 100, GPIO_I2C_E_SCL, GPIO_I2C_E_SDA}, -}; - -const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); - -/* SPI devices */ -const struct spi_device_t spi_devices[] = { - { CONFIG_SPI_FLASH_PORT, 0, -1}, -}; -const unsigned int spi_devices_used = ARRAY_SIZE(spi_devices); +BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); diff --git a/board/it83xx_evb/board.h b/board/it83xx_evb/board.h index 54c66d9b7a..754474174c 100644 --- a/board/it83xx_evb/board.h +++ b/board/it83xx_evb/board.h @@ -8,72 +8,17 @@ #ifndef __CROS_EC_BOARD_H #define __CROS_EC_BOARD_H -/* NOTE: 0->ec evb, non-zero->pd evb */ -#define IT83XX_PD_EVB 0 +/* Select Baseboard features */ +#include "baseboard.h" /* Optional features */ -#define CONFIG_BATTERY_SMART -#define CONFIG_BOARD_VERSION_GPIO #define CONFIG_DAC -#define CONFIG_FANS 1 -#define CONFIG_I2C -#define CONFIG_I2C_MASTER -#define CONFIG_IT83XX_ENABLE_MOUSE_DEVICE -#define CONFIG_IT83XX_SMCLK2_ON_GPC7 -#define CONFIG_KEYBOARD_BOARD_CONFIG -#define CONFIG_KEYBOARD_PROTOCOL_8042 -#define CONFIG_LOW_POWER_IDLE -#define CONFIG_LOW_POWER_S0 -#define CONFIG_PECI -#define CONFIG_PECI_COMMON -#define CONFIG_PECI_TJMAX 100 -#define CONFIG_POWER_BUTTON -#define CONFIG_PWM -/* Use CS0 of SSPI */ -#define CONFIG_SPI_MASTER -#define CONFIG_SPI_FLASH_PORT 0 -#define CONFIG_UART_HOST -#define CONFIG_HOSTCMD_LPC - -#if IT83XX_PD_EVB -/* PD */ -#define CONFIG_USB_PD_ALT_MODE -#define CONFIG_USB_PD_ALT_MODE_DFP -#define CONFIG_USB_PD_CHECK_MAX_REQUEST_ALLOWED -#define CONFIG_USB_PD_CUSTOM_PDO -#define CONFIG_USB_PD_DUAL_ROLE -#define CONFIG_USB_PD_PORT_MAX_COUNT 2 -#define CONFIG_USB_PD_TCPM_ITE_ON_CHIP -#define CONFIG_USB_PD_TRY_SRC -#define CONFIG_USB_PD_VBUS_DETECT_GPIO -#define CONFIG_USB_POWER_DELIVERY -#define CONFIG_USB_PD_TCPMV1 -#define CONFIG_USBC_VCONN -#define CONFIG_USBC_VCONN_SWAP -#endif - -/* Optional console commands */ -#define CONFIG_CMD_FLASH -#define CONFIG_CMD_SCRATCHPAD -#define CONFIG_CMD_STACKOVERFLOW - -/* Debug */ -#undef CONFIG_CMD_FORCETIME -#undef CONFIG_HOOK_DEBUG -#undef CONFIG_KEYBOARD_DEBUG -#undef CONFIG_UART_TX_BUF_SIZE -#define CONFIG_UART_TX_BUF_SIZE 4096 #ifndef __ASSEMBLER__ #include "gpio_signal.h" #include "registers.h" -#define I2C_PORT_CHARGER IT83XX_I2C_CH_C -#define I2C_PORT_BATTERY IT83XX_I2C_CH_C - -#include "gpio_signal.h" - enum pwm_channel { PWM_CH_FAN, PWM_CH_WITH_DSLEEP_FLAG, @@ -92,26 +37,5 @@ enum adc_channel { ADC_CH_COUNT }; -#if IT83XX_PD_EVB -/* Define typical operating power and max power */ -#define PD_OPERATING_POWER_MW 15000 -#define PD_MAX_POWER_MW 60000 -#define PD_MAX_CURRENT_MA 3000 -/* Try to negotiate to 20V since i2c noise problems should be fixed. */ -#define PD_MAX_VOLTAGE_MV 20000 -/* TODO: determine the following board specific type-C power constants */ -/* - * delay to turn on the power supply max is ~16ms. - * delay to turn off the power supply max is about ~180ms. - */ -#define PD_POWER_SUPPLY_TURN_ON_DELAY 30000 /* us */ -#define PD_POWER_SUPPLY_TURN_OFF_DELAY 250000 /* us */ - -/* delay to turn on/off vconn */ -#define PD_VCONN_SWAP_DELAY 5000 /* us */ - -void board_pd_vbus_ctrl(int port, int enabled); -#endif - #endif /* !__ASSEMBLER__ */ #endif /* __CROS_EC_BOARD_H */ diff --git a/board/it83xx_evb/build.mk b/board/it83xx_evb/build.mk index 24978a6115..e4c8c01b89 100644 --- a/board/it83xx_evb/build.mk +++ b/board/it83xx_evb/build.mk @@ -9,6 +9,6 @@ CHIP:=it83xx CHIP_FAMILY:=it8320 CHIP_VARIANT:=it8320dx +BASEBOARD:=ite_evb board-y=board.o -board-$(CONFIG_USB_POWER_DELIVERY)+=usb_pd_policy.o diff --git a/board/it83xx_evb/ec.tasklist b/board/it83xx_evb/ec.tasklist index 27e6418b97..3ca78d55db 100644 --- a/board/it83xx_evb/ec.tasklist +++ b/board/it83xx_evb/ec.tasklist @@ -11,6 +11,4 @@ TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) \ TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \ - TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE) \ - TASK_ALWAYS(PD_C0, pd_task, NULL, LARGER_TASK_STACK_SIZE) \ - TASK_ALWAYS(PD_C1, pd_task, NULL, LARGER_TASK_STACK_SIZE) + TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE) diff --git a/board/it83xx_evb/gpio.inc b/board/it83xx_evb/gpio.inc index 022be8db2f..b850fa182a 100644 --- a/board/it83xx_evb/gpio.inc +++ b/board/it83xx_evb/gpio.inc @@ -18,20 +18,6 @@ GPIO_INT(WP_L, PIN(E, 1), GPIO_INT_BOTH, switch_inter GPIO_INT(UART1_RX, PIN(B, 0), GPIO_INT_FALLING, uart_deepsleep_interrupt) /* UART1 RX input */ #endif -#if IT83XX_PD_EVB -GPIO(USBPD_HVLDO, PIN(A, 1), GPIO_OUT_LOW) -GPIO(USBPD_PORTB_CC1_VCONN, PIN(A, 2), GPIO_OUT_LOW) -GPIO(USBPD_PORTB_CC2_VCONN, PIN(A, 3), GPIO_OUT_LOW) -GPIO(USBPD_PORTB_VBUS_INPUT, PIN(A, 4), GPIO_OUT_HIGH) -GPIO(USBPD_PORTB_VBUS_OUTPUT, PIN(A, 5), GPIO_OUT_LOW) -GPIO(USBPD_PORTB_VBUS_DROP, PIN(A, 6), GPIO_OUT_LOW) -GPIO(USBPD_PORTA_CC1_VCONN, PIN(C, 4), GPIO_OUT_LOW) -GPIO(USBPD_PORTA_CC2_VCONN, PIN(C, 6), GPIO_OUT_LOW) -GPIO(USBPD_PORTA_VBUS_INPUT, PIN(D, 0), GPIO_OUT_HIGH) -GPIO(USBPD_PORTA_VBUS_OUTPUT, PIN(D, 1), GPIO_OUT_LOW) -GPIO(USBPD_PORTA_VBUS_DROP, PIN(E, 5), GPIO_OUT_LOW) -#endif - GPIO(PCH_SMI_L, PIN(D, 3), GPIO_OUT_HIGH) GPIO(PCH_SCI_L, PIN(D, 4), GPIO_OUT_HIGH) GPIO(GATE_A20_H, PIN(B, 5), GPIO_OUT_HIGH) diff --git a/board/it83xx_evb/usb_pd_policy.c b/board/it83xx_evb/usb_pd_policy.c deleted file mode 100644 index bb4eb5c3f3..0000000000 --- a/board/it83xx_evb/usb_pd_policy.c +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright 2016 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "adc.h" -#include "config.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_mux.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_DUAL_ROLE | PDO_FIXED_DATA_SWAP |\ - PDO_FIXED_UNCONSTRAINED | PDO_FIXED_COMM_CAP) - -/* Threshold voltage of VBUS provided (mV) */ -#define PD_VBUS_PROVIDED_THRESHOLD 3900 - -const uint32_t pd_src_pdo[] = { - PDO_FIXED(5000, 1500, 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(4500, 14000, 10000), - PDO_VAR(4500, 14000, 3000), -}; -const int pd_snk_pdo_cnt = ARRAY_SIZE(pd_snk_pdo); - -int pd_is_max_request_allowed(void) -{ - /* max voltage request allowed */ - return 1; -} - -int pd_snk_is_vbus_provided(int port) -{ - int mv = adc_read_channel(port == USBPD_PORT_A ? - ADC_VBUSSA : ADC_VBUSSB); - - /* level shift voltage of VBUS > threshold */ - return (mv * 23 / 3) > PD_VBUS_PROVIDED_THRESHOLD; -} - -int pd_set_power_supply_ready(int port) -{ - /* provide VBUS */ - board_pd_vbus_ctrl(port, 1); - /* vbus provided or not */ - return !pd_snk_is_vbus_provided(port); -} - -void pd_power_supply_reset(int port) -{ - /* Kill VBUS */ - board_pd_vbus_ctrl(port, 0); -} - - -int pd_check_data_swap(int port, int data_role) -{ - /* Always allow data swap: we can be DFP or UFP for USB */ - return 1; -} - -int pd_check_vconn_swap(int port) -{ - /* - * VCONN is provided directly by the battery(PPVAR_SYS) - * but use the same rules as power swap - */ - return pd_get_dual_role(port) == PD_DRP_TOGGLE_ON ? 1 : 0; -} -- cgit v1.2.1