diff options
Diffstat (limited to 'board/fusb307bgevb/board.c')
-rw-r--r-- | board/fusb307bgevb/board.c | 328 |
1 files changed, 0 insertions, 328 deletions
diff --git a/board/fusb307bgevb/board.c b/board/fusb307bgevb/board.c deleted file mode 100644 index 41b12d5a82..0000000000 --- a/board/fusb307bgevb/board.c +++ /dev/null @@ -1,328 +0,0 @@ -/* Copyright 2020 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. - */ -/* FUSB307BGEVB configuration */ - -#include "common.h" -#include "ec_version.h" -#include "fusb307.h" -#include "gpio.h" -#include "hooks.h" -#include "i2c.h" -#include "lcd.h" -#include "printf.h" -#include "queue_policies.h" -#include "registers.h" -#include "task.h" -#include "timer.h" -#include "usart-stm32f0.h" -#include "usart_tx_dma.h" -#include "usart_rx_dma.h" -#include "usb_gpio.h" -#include "usb-stream.h" -#include "usb_common.h" -#include "util.h" - -#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) -#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args) - -static void tcpc_alert_event(enum gpio_signal signal) -{ - schedule_deferred_pd_interrupt(0); -} - -/****************************************************************************** - * Handle button presses. Press BUTTON REFRESH to refresh pdos shown on lcd. - * Press BUTTON DOWN to select pdo. Prss BUTTON ENTER to confirm selection. - */ -static int count; - -static void button_enter_event_deferred(void) -{ - uint32_t ma, mv, unused; - - CPRINTS("Button enter event"); - - if (count >= 0 && count < pd_get_src_cap_cnt(0)) { - pd_extract_pdo_power(pd_get_src_caps(0)[count], &ma, &mv, - &unused); - pd_request_source_voltage(0, mv); - } else { - CPRINTS("ERROR: button counter weird value."); - return; - } -} -DECLARE_DEFERRED(button_enter_event_deferred); - -void button_enter_event(enum gpio_signal signal) -{ - hook_call_deferred(&button_enter_event_deferred_data, 100 * MSEC); -} - -static void button_refresh_event_deferred(void) -{ - int i; - uint32_t ma, mv, unused; - char c[20]; - - CPRINTS("Button refresh event"); - count = 0; - - /* Display supply voltage on first page. */ - lcd_clear(); - for (i = 0; i < MIN(pd_get_src_cap_cnt(0), 4); i++) { - pd_extract_pdo_power(pd_get_src_caps(0)[i], &ma, &mv, &unused); - snprintf(c, ARRAY_SIZE(c), "[%d] %dmV %dmA", i, mv, ma); - lcd_set_cursor(0, i); - lcd_print_string(c); - } - - /* Display selector */ - lcd_set_cursor(19, 0); - lcd_print_string("V"); -} -DECLARE_DEFERRED(button_refresh_event_deferred); - -void button_refresh_event(enum gpio_signal signal) -{ - hook_call_deferred(&button_refresh_event_deferred_data, 100 * MSEC); -} - -static void button_down_event_deferred(void) -{ - int i; - uint32_t ma, mv, unused; - char c[20]; - - CPRINTS("Button down event"); - if (pd_get_src_cap_cnt(0) > 0) - count = (count + 1) % pd_get_src_cap_cnt(0); - else { - /* Hasn't plug in adaptor yet, do nothing. */ - return; - } - - /* Display all supply voltage, count will never be greater than 7 */ - if (count == 0) { - lcd_clear(); - for (i = 0; i < MIN(pd_get_src_cap_cnt(0), 4); i++) { - pd_extract_pdo_power(pd_get_src_caps(0)[i], &ma, &mv, - &unused); - snprintf(c, ARRAY_SIZE(c), "[%d] %dmV %dmA", i, mv, ma); - lcd_set_cursor(0, i); - lcd_print_string(c); - } - } - if (count == 4) { - lcd_clear(); - for (i = 4; i < pd_get_src_cap_cnt(0); i++) { - pd_extract_pdo_power(pd_get_src_caps(0)[i], &ma, &mv, - &unused); - snprintf(c, ARRAY_SIZE(c), "[%d] %dmV %dmA", i, mv, ma); - lcd_set_cursor(0, i - 4); - lcd_print_string(c); - } - } - - /* Clear last col on LCD */ - for (i = 0; i < 4; i++) { - lcd_set_cursor(19, i); - lcd_print_string(" "); - } - /* Display selector */ - lcd_set_cursor(19, count % 4); - lcd_print_string("V"); -} -DECLARE_DEFERRED(button_down_event_deferred); - -void button_down_event(enum gpio_signal signal) -{ - hook_call_deferred(&button_down_event_deferred_data, 100 * MSEC); -} - -/****************************************************************************** - * Build GPIO tables and expose a subset of the GPIOs over USB. - */ -#include "gpio_list.h" - -static enum gpio_signal const usb_gpio_list[] = { - GPIO_USER_BUTTON_ENTER, - GPIO_USER_BUTTON_REFRESH, - GPIO_USER_BUTTON_DOWN, -}; - -/* - * This instantiates struct usb_gpio_config const usb_gpio, plus several other - * variables, all named something beginning with usb_gpio_ - */ -USB_GPIO_CONFIG(usb_gpio, - usb_gpio_list, - USB_IFACE_GPIO, - USB_EP_GPIO); - -/****************************************************************************** - * Setup USART1 as a loopback device, it just echo's back anything sent to it. - */ -static struct usart_config const loopback_usart; - -static struct queue const loopback_queue = - QUEUE_DIRECT(64, uint8_t, - loopback_usart.producer, - loopback_usart.consumer); - -static struct usart_rx_dma const loopback_rx_dma = - USART_RX_DMA(STM32_DMAC_CH3, 8); - -static struct usart_tx_dma const loopback_tx_dma = - USART_TX_DMA(STM32_DMAC_CH2, 16); - -static struct usart_config const loopback_usart = - USART_CONFIG(usart1_hw, - loopback_rx_dma.usart_rx, - loopback_tx_dma.usart_tx, - 115200, - 0, - loopback_queue, - loopback_queue); - -/****************************************************************************** - * Forward USART4 as a simple USB serial interface. - */ -static struct usart_config const forward_usart; -struct usb_stream_config const forward_usb; - -static struct queue const usart_to_usb = QUEUE_DIRECT(64, uint8_t, - forward_usart.producer, - forward_usb.consumer); -static struct queue const usb_to_usart = QUEUE_DIRECT(64, uint8_t, - forward_usb.producer, - forward_usart.consumer); - -static struct usart_tx_dma const forward_tx_dma = - USART_TX_DMA(STM32_DMAC_CH7, 16); - -static struct usart_config const forward_usart = - USART_CONFIG(usart4_hw, - usart_rx_interrupt, - forward_tx_dma.usart_tx, - 115200, - 0, - usart_to_usb, - usb_to_usart); - -#define USB_STREAM_RX_SIZE 16 -#define USB_STREAM_TX_SIZE 16 - -USB_STREAM_CONFIG(forward_usb, - USB_IFACE_STREAM, - USB_STR_STREAM_NAME, - USB_EP_STREAM, - USB_STREAM_RX_SIZE, - USB_STREAM_TX_SIZE, - usb_to_usart, - usart_to_usb) - -/****************************************************************************** - * Define the strings used in our USB descriptors. - */ -const void *const usb_strings[] = { - [USB_STR_DESC] = usb_string_desc, - [USB_STR_VENDOR] = USB_STRING_DESC("Google Inc."), - [USB_STR_PRODUCT] = USB_STRING_DESC("fusb307bgevb"), - [USB_STR_VERSION] = USB_STRING_DESC(CROS_EC_VERSION32), - [USB_STR_STREAM_NAME] = USB_STRING_DESC("Forward"), - [USB_STR_CONSOLE_NAME] = USB_STRING_DESC("Shell"), -}; - -BUILD_ASSERT(ARRAY_SIZE(usb_strings) == USB_STR_COUNT); - -/****************************************************************************** - * I2C interface. - */ -const struct i2c_port_t i2c_ports[] = { - {"tcpc", I2C_PORT_TCPC, 400 /* kHz */, GPIO_I2C2_SCL, GPIO_I2C2_SDA} -}; -const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); - -/****************************************************************************** - * PD - */ -const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = { - { - .bus_type = EC_BUS_TYPE_I2C, - .i2c_info = { - .port = I2C_PORT_TCPC, - .addr_flags = FUSB307_I2C_ADDR_FLAGS, - }, - .drv = &fusb307_tcpm_drv, - }, -}; - - -uint16_t tcpc_get_alert_status(void) -{ - uint16_t status = 0; - - if (!gpio_get_level(GPIO_USB_C0_PD_INT_ODL)) - status |= PD_STATUS_TCPC_ALERT_0; - - return status; -} - -void board_reset_pd_mcu(void) -{ -} - -int pd_snk_is_vbus_provided(int port) -{ - return EC_ERROR_UNIMPLEMENTED; -} - -void pd_set_input_current_limit(int port, uint32_t max_ma, - uint32_t supply_voltage) -{ - /* No battery, nothing to do */ -} - -void pd_power_supply_reset(int port) -{ - /* Disable VBUS */ - fusb307_power_supply_reset(port); -} - -int pd_set_power_supply_ready(int port) -{ - return EC_SUCCESS; -} - -int pd_board_checks(void) -{ - return EC_SUCCESS; -} - -/****************************************************************************** - * Initialize board. - */ -static void board_init(void) -{ - /* Enable button interrupts */ - gpio_enable_interrupt(GPIO_USER_BUTTON_ENTER); - gpio_enable_interrupt(GPIO_USER_BUTTON_REFRESH); - gpio_enable_interrupt(GPIO_USER_BUTTON_DOWN); - /* Enable TCPC alert interrupts */ - gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL); - - lcd_init(20, 4, 0); - lcd_set_cursor(0, 0); - lcd_print_string("USB-C"); - lcd_set_cursor(0, 1); - lcd_print_string("Sink Advertiser"); - queue_init(&loopback_queue); - queue_init(&usart_to_usb); - queue_init(&usb_to_usart); - usart_init(&loopback_usart); - usart_init(&forward_usart); - -} -DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); |