#include "common.h" #include "console.h" #include "consumer.h" #include "queue.h" #include "queue_policies.h" #include "producer.h" #include "task.h" #include "usb-stream.h" #define CPRINTS(format, args...) cprints(CC_USB, format, ## args) struct consumer const blob_consumer; struct usb_stream_config const usb_blob; static struct queue const blob_to_usb = QUEUE_DIRECT(64, uint8_t, null_producer, usb_blob.consumer); static struct queue const usb_to_blob = QUEUE_DIRECT(64, uint8_t, usb_blob.producer, blob_consumer); USB_STREAM_CONFIG(usb_blob, USB_IFACE_BLOB, USB_STR_BLOB_NAME, USB_EP_BLOB, USB_MAX_PACKET_SIZE, USB_MAX_PACKET_SIZE, usb_to_blob, blob_to_usb) static void blob_written(struct consumer const *consumer, size_t count)
[USB_STR_CONSOLE_NAME] = USB_STRING_DESC("EC_PD"), [USB_STR_AP_STREAM_NAME] = USB_STRING_DESC("AP"), }; BUILD_ASSERT(ARRAY_SIZE(usb_strings) == USB_STR_COUNT); /* * Define AP console forwarding queue and associated USART and USB * stream endpoints. */ static struct usart_config const ap_usart; struct usb_stream_config const ap_usb; static struct queue const ap_usart_to_usb = QUEUE_DIRECT(64, uint8_t, ap_usart.producer, ap_usb.consumer); static struct queue const ap_usb_to_usart = QUEUE_DIRECT(64, uint8_t, ap_usb.producer, ap_usart.consumer); static struct usart_tx_dma const ap_usart_tx_dma = USART_TX_DMA(STM32_DMAC_USART1_TX, 16); static struct usart_config const ap_usart = USART_CONFIG(usart1_hw, usart_rx_interrupt, ap_usart_tx_dma.usart_tx, 115200, ap_usart_to_usb, ap_usb_to_usart);
/****************************************************************************** * Forward UARTs as a USB serial interface. */ #define USB_STREAM_RX_SIZE 16 #define USB_STREAM_TX_SIZE 16 /****************************************************************************** * Forward USART2 as a simple USB serial interface. */ static struct usart_config const usart2; struct usb_stream_config const usart2_usb; static struct queue const usart2_to_usb = QUEUE_DIRECT(64, uint8_t, usart2.producer, usart2_usb.consumer); static struct queue const usb_to_usart2 = QUEUE_DIRECT(64, uint8_t, usart2_usb.producer, usart2.consumer); static struct usart_config const usart2 = USART_CONFIG(usart2_hw, usart_rx_interrupt, usart_tx_interrupt, 115200, usart2_to_usb, usb_to_usart2); USB_STREAM_CONFIG(usart2_usb, USB_IFACE_USART2_STREAM, USB_STR_USART2_STREAM_NAME, USB_EP_USART2_STREAM,
#include "uartn.h" #include "usart.h" #include "usb-stream.h" #define USE_UART_INTERRUPTS (!(defined(CONFIG_CUSTOMIZED_RO) && \ defined(SECTION_IS_RO))) #define QUEUE_SIZE 64 struct usb_stream_config const ap_usb; struct usart_config const ap_uart; struct usb_stream_config const ec_usb; struct usart_config const ec_uart; static struct queue const ap_uart_to_usb = QUEUE_DIRECT(QUEUE_SIZE, uint8_t, ap_uart.producer, ap_usb.consumer); static struct queue const ap_usb_to_uart = QUEUE_DIRECT(QUEUE_SIZE, uint8_t, ap_usb.producer, ap_uart.consumer); static struct queue const ec_uart_to_usb = QUEUE_DIRECT(QUEUE_SIZE, uint8_t, ec_uart.producer, ec_usb.consumer); static struct queue const ec_usb_to_uart = QUEUE_DIRECT(QUEUE_SIZE, uint8_t, ec_usb.producer, ec_uart.consumer); USART_CONFIG(ec_uart, UART_EC, ec_uart_to_usb, ec_usb_to_uart); USART_CONFIG(ap_uart, UART_AP, ap_uart_to_usb,
* 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_tx_dma const loopback_tx_dma = USART_TX_DMA(STM32_DMAC_CH2, 16); static struct usart_config const loopback_usart = USART_CONFIG(usart1_hw, usart_rx_interrupt, loopback_tx_dma.usart_tx, 115200, loopback_queue, loopback_queue); /****************************************************************************** * Forward USART4 as a simple USB serial interface.