diff options
Diffstat (limited to 'board/ryu/board.c')
-rw-r--r-- | board/ryu/board.c | 81 |
1 files changed, 76 insertions, 5 deletions
diff --git a/board/ryu/board.c b/board/ryu/board.c index 18241162cc..220fce39d3 100644 --- a/board/ryu/board.c +++ b/board/ryu/board.c @@ -29,6 +29,8 @@ #include "usb_pd.h" #include "usb_pd_config.h" #include "usb-stm32f3.h" +#include "usb-stream.h" +#include "usart-stm32f3.h" #include "util.h" #include "pi3usb9281.h" @@ -176,15 +178,74 @@ void usb_evt(enum gpio_signal signal) #include "gpio_list.h" 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("Ryu debug"), - [USB_STR_VERSION] = USB_STRING_DESC(CROS_EC_VERSION32), - [USB_STR_CONSOLE_NAME] = USB_STRING_DESC("EC_PD"), + [USB_STR_DESC] = usb_string_desc, + [USB_STR_VENDOR] = USB_STRING_DESC("Google Inc."), + [USB_STR_PRODUCT] = USB_STRING_DESC("Ryu debug"), + [USB_STR_VERSION] = USB_STRING_DESC(CROS_EC_VERSION32), + [USB_STR_CONSOLE_NAME] = USB_STRING_DESC("EC_PD"), + [USB_STR_AP_STREAM_NAME] = USB_STRING_DESC("AP"), + [USB_STR_SH_STREAM_NAME] = USB_STRING_DESC("SH"), }; BUILD_ASSERT(ARRAY_SIZE(usb_strings) == USB_STR_COUNT); +/* + * Define AP and SH console forwarding queues and associated USART and USB + * stream endpoints. + */ + +QUEUE_CONFIG(ap_usart_to_usb, 64, uint8_t); +QUEUE_CONFIG(usb_to_ap_usart, 64, uint8_t); +QUEUE_CONFIG(sh_usart_to_usb, 64, uint8_t); +QUEUE_CONFIG(usb_to_sh_usart, 64, uint8_t); + +struct usb_stream_config const usb_ap_stream; +struct usb_stream_config const usb_sh_stream; + +USART_CONFIG(usart1, + usart1_hw, + 115200, + ap_usart_to_usb, + usb_to_ap_usart, + usb_ap_stream.consumer, + usb_ap_stream.producer) + +USART_CONFIG(usart3, + usart3_hw, + 115200, + sh_usart_to_usb, + usb_to_sh_usart, + usb_sh_stream.consumer, + usb_sh_stream.producer) + +#define AP_USB_STREAM_RX_SIZE 16 +#define AP_USB_STREAM_TX_SIZE 16 + +USB_STREAM_CONFIG(usb_ap_stream, + USB_IFACE_AP_STREAM, + USB_STR_AP_STREAM_NAME, + USB_EP_AP_STREAM, + AP_USB_STREAM_RX_SIZE, + AP_USB_STREAM_TX_SIZE, + usb_to_ap_usart, + ap_usart_to_usb, + usart1.consumer, + usart1.producer) + +#define SH_USB_STREAM_RX_SIZE 16 +#define SH_USB_STREAM_TX_SIZE 16 + +USB_STREAM_CONFIG(usb_sh_stream, + USB_IFACE_SH_STREAM, + USB_STR_SH_STREAM_NAME, + USB_EP_SH_STREAM, + SH_USB_STREAM_RX_SIZE, + SH_USB_STREAM_TX_SIZE, + usb_to_sh_usart, + sh_usart_to_usb, + usart3.consumer, + usart3.producer) + /* Initialize board. */ static void board_init(void) { @@ -226,6 +287,16 @@ static void board_init(void) host_set_single_event(EC_HOST_EVENT_KEYBOARD_RECOVERY); /* + * Initialize AP and SH console forwarding USARTs and queues. + */ + queue_init(&ap_usart_to_usb); + queue_init(&usb_to_ap_usart); + queue_init(&sh_usart_to_usb); + queue_init(&usb_to_sh_usart); + usart_init(&usart1); + usart_init(&usart3); + + /* * Enable CC lines after all GPIO have been initialized. Note, it is * important that this is enabled after the CC_DEVICE_ODL lines are * set low to specify device mode. |