diff --git a/subsys/usb/device_next/class/usbd_cdc_acm.c b/subsys/usb/device_next/class/usbd_cdc_acm.c index 838550f18dd..453759d55a5 100644 --- a/subsys/usb/device_next/class/usbd_cdc_acm.c +++ b/subsys/usb/device_next/class/usbd_cdc_acm.c @@ -268,7 +268,13 @@ static void usbd_cdc_acm_enable(struct usbd_class_data *const c_data) } if (atomic_test_bit(&data->state, CDC_ACM_IRQ_TX_ENABLED)) { - /* TODO */ + if (ring_buf_is_empty(data->tx_fifo.rb)) { + /* Raise TX ready interrupt */ + cdc_acm_work_submit(&data->irq_cb_work); + } else { + /* Queue pending TX data on IN endpoint */ + cdc_acm_work_submit(&data->tx_fifo_work); + } } }