Lines Matching refs:dev_data
155 struct cdc_acm_dev_data_t *dev_data; in cdc_acm_class_handle_req() local
168 dev_data = CONTAINER_OF(common, struct cdc_acm_dev_data_t, common); in cdc_acm_class_handle_req()
173 rate = sys_le32_to_cpu(dev_data->line_coding.dwDTERate); in cdc_acm_class_handle_req()
174 memcpy(&dev_data->line_coding, *data, in cdc_acm_class_handle_req()
175 sizeof(dev_data->line_coding)); in cdc_acm_class_handle_req()
176 new_rate = sys_le32_to_cpu(dev_data->line_coding.dwDTERate); in cdc_acm_class_handle_req()
179 dev_data->line_coding.bCharFormat, in cdc_acm_class_handle_req()
180 dev_data->line_coding.bParityType, in cdc_acm_class_handle_req()
181 dev_data->line_coding.bDataBits); in cdc_acm_class_handle_req()
183 if (rate != new_rate && dev_data->rate_cb != NULL) { in cdc_acm_class_handle_req()
184 dev_data->rate_cb(common->dev, new_rate); in cdc_acm_class_handle_req()
190 dev_data->line_state = (uint8_t)setup->wValue; in cdc_acm_class_handle_req()
192 dev_data->line_state); in cdc_acm_class_handle_req()
200 *data = (uint8_t *)(&dev_data->line_coding); in cdc_acm_class_handle_req()
201 *len = sizeof(dev_data->line_coding); in cdc_acm_class_handle_req()
203 sys_le32_to_cpu(dev_data->line_coding.dwDTERate), in cdc_acm_class_handle_req()
204 dev_data->line_coding.bCharFormat, in cdc_acm_class_handle_req()
205 dev_data->line_coding.bParityType, in cdc_acm_class_handle_req()
206 dev_data->line_coding.bDataBits); in cdc_acm_class_handle_req()
218 struct cdc_acm_dev_data_t *dev_data = priv; in cdc_acm_write_cb() local
220 LOG_DBG("ep %x: written %d bytes dev_data %p", ep, size, dev_data); in cdc_acm_write_cb()
222 dev_data->tx_ready = true; in cdc_acm_write_cb()
225 if (dev_data->cb && dev_data->tx_irq_ena) { in cdc_acm_write_cb()
226 k_work_submit_to_queue(&USB_WORK_Q, &dev_data->cb_work); in cdc_acm_write_cb()
233 if (ring_buf_is_empty(dev_data->tx_ringbuf) && size) { in cdc_acm_write_cb()
248 k_work_schedule_for_queue(&USB_WORK_Q, &dev_data->tx_work, size ? in cdc_acm_write_cb()
255 struct cdc_acm_dev_data_t *dev_data = in tx_work_handler() local
257 const struct device *dev = dev_data->common.dev; in tx_work_handler()
268 if (!dev_data->configured) { in tx_work_handler()
272 len = ring_buf_get_claim(dev_data->tx_ringbuf, &data, in tx_work_handler()
280 dev_data->tx_ready = false; in tx_work_handler()
295 cdc_acm_write_cb, dev_data); in tx_work_handler()
297 ring_buf_get_finish(dev_data->tx_ringbuf, len); in tx_work_handler()
302 struct cdc_acm_dev_data_t *dev_data = priv; in cdc_acm_read_cb() local
306 ep, size, dev_data, ring_buf_space_get(dev_data->rx_ringbuf)); in cdc_acm_read_cb()
312 wrote = ring_buf_put(dev_data->rx_ringbuf, dev_data->rx_buf, size); in cdc_acm_read_cb()
317 dev_data->rx_ready = true; in cdc_acm_read_cb()
320 if (dev_data->cb && dev_data->rx_irq_ena) { in cdc_acm_read_cb()
321 k_work_submit_to_queue(&USB_WORK_Q, &dev_data->cb_work); in cdc_acm_read_cb()
324 if (ring_buf_space_get(dev_data->rx_ringbuf) < sizeof(dev_data->rx_buf)) { in cdc_acm_read_cb()
325 dev_data->rx_paused = true; in cdc_acm_read_cb()
330 if (dev_data->configured) { in cdc_acm_read_cb()
331 usb_transfer(ep, dev_data->rx_buf, sizeof(dev_data->rx_buf), in cdc_acm_read_cb()
332 USB_TRANS_READ, cdc_acm_read_cb, dev_data); in cdc_acm_read_cb()
344 struct cdc_acm_dev_data_t *dev_data; in cdc_acm_int_in() local
355 dev_data = CONTAINER_OF(common, struct cdc_acm_dev_data_t, common); in cdc_acm_int_in()
357 dev_data->notification_sent = 1U; in cdc_acm_int_in()
361 static void cdc_acm_reset_port(struct cdc_acm_dev_data_t *dev_data) in cdc_acm_reset_port() argument
363 dev_data->configured = false; in cdc_acm_reset_port()
364 dev_data->suspended = false; in cdc_acm_reset_port()
365 dev_data->rx_ready = false; in cdc_acm_reset_port()
366 dev_data->tx_ready = false; in cdc_acm_reset_port()
367 dev_data->line_coding = (struct cdc_acm_line_coding) in cdc_acm_reset_port()
369 dev_data->serial_state = 0; in cdc_acm_reset_port()
370 dev_data->line_state = 0; in cdc_acm_reset_port()
371 dev_data->rx_paused = false; in cdc_acm_reset_port()
372 memset(&dev_data->rx_buf, 0, CDC_ACM_BUFFER_SIZE); in cdc_acm_reset_port()
375 static void cdc_acm_do_cb(struct cdc_acm_dev_data_t *dev_data, in cdc_acm_do_cb() argument
379 const struct device *dev = dev_data->common.dev; in cdc_acm_do_cb()
389 cdc_acm_reset_port(dev_data); in cdc_acm_do_cb()
396 if (!dev_data->configured) { in cdc_acm_do_cb()
397 dev_data->configured = true; in cdc_acm_do_cb()
399 dev_data); in cdc_acm_do_cb()
401 if (!dev_data->tx_ready) { in cdc_acm_do_cb()
403 USB_TRANS_WRITE, cdc_acm_write_cb, dev_data); in cdc_acm_do_cb()
409 cdc_acm_reset_port(dev_data); in cdc_acm_do_cb()
413 dev_data->suspended = true; in cdc_acm_do_cb()
417 if (dev_data->suspended) { in cdc_acm_do_cb()
419 dev_data->suspended = false; in cdc_acm_do_cb()
438 struct cdc_acm_dev_data_t *dev_data; in cdc_acm_dev_status_cb() local
449 dev_data = CONTAINER_OF(common, struct cdc_acm_dev_data_t, common); in cdc_acm_dev_status_cb()
451 cdc_acm_do_cb(dev_data, status, param); in cdc_acm_dev_status_cb()
478 struct cdc_acm_dev_data_t *dev_data; in cdc_acm_irq_callback_work_handler() local
480 dev_data = CONTAINER_OF(work, struct cdc_acm_dev_data_t, cb_work); in cdc_acm_irq_callback_work_handler()
482 dev_data->cb(dev_data->common.dev, dev_data->cb_data); in cdc_acm_irq_callback_work_handler()
497 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_init() local
500 dev_data->common.dev = dev; in cdc_acm_init()
501 sys_slist_append(&cdc_acm_data_devlist, &dev_data->common.node); in cdc_acm_init()
504 dev, dev_data, dev->config, &cdc_acm_data_devlist); in cdc_acm_init()
506 k_work_init(&dev_data->cb_work, cdc_acm_irq_callback_work_handler); in cdc_acm_init()
507 k_work_init_delayable(&dev_data->tx_work, tx_work_handler); in cdc_acm_init()
524 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_fifo_fill() local
529 dev_data, len, ring_buf_space_get(dev_data->tx_ringbuf)); in cdc_acm_fifo_fill()
532 wrote = ring_buf_put(dev_data->tx_ringbuf, tx_data, len); in cdc_acm_fifo_fill()
537 k_work_schedule_for_queue(&USB_WORK_Q, &dev_data->tx_work, K_NO_WAIT); in cdc_acm_fifo_fill()
556 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_fifo_read() local
560 dev, size, ring_buf_space_get(dev_data->rx_ringbuf)); in cdc_acm_fifo_read()
562 len = ring_buf_get(dev_data->rx_ringbuf, rx_data, size); in cdc_acm_fifo_read()
564 if (dev_data->rx_paused == true) { in cdc_acm_fifo_read()
565 if (ring_buf_space_get(dev_data->rx_ringbuf) >= CDC_ACM_BUFFER_SIZE) { in cdc_acm_fifo_read()
568 if (dev_data->configured) { in cdc_acm_fifo_read()
569 cdc_acm_read_cb(cfg->endpoint[ACM_OUT_EP_IDX].ep_addr, 0, dev_data); in cdc_acm_fifo_read()
571 dev_data->rx_paused = false; in cdc_acm_fifo_read()
585 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_irq_tx_enable() local
587 dev_data->tx_irq_ena = true; in cdc_acm_irq_tx_enable()
589 if (dev_data->cb && dev_data->tx_ready) { in cdc_acm_irq_tx_enable()
590 k_work_submit_to_queue(&USB_WORK_Q, &dev_data->cb_work); in cdc_acm_irq_tx_enable()
601 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_irq_tx_disable() local
603 dev_data->tx_irq_ena = false; in cdc_acm_irq_tx_disable()
615 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_irq_tx_ready() local
617 if (dev_data->tx_irq_ena && dev_data->tx_ready) { in cdc_acm_irq_tx_ready()
618 return ring_buf_space_get(dev_data->tx_ringbuf); in cdc_acm_irq_tx_ready()
631 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_irq_rx_enable() local
633 dev_data->rx_irq_ena = true; in cdc_acm_irq_rx_enable()
635 if (dev_data->cb && dev_data->rx_ready) { in cdc_acm_irq_rx_enable()
636 k_work_submit_to_queue(&USB_WORK_Q, &dev_data->cb_work); in cdc_acm_irq_rx_enable()
647 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_irq_rx_disable() local
649 dev_data->rx_irq_ena = false; in cdc_acm_irq_rx_disable()
661 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_irq_rx_ready() local
663 if (dev_data->rx_ready && dev_data->rx_irq_ena) { in cdc_acm_irq_rx_ready()
695 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_irq_update() local
697 if (!ring_buf_space_get(dev_data->tx_ringbuf)) { in cdc_acm_irq_update()
698 dev_data->tx_ready = false; in cdc_acm_irq_update()
701 if (ring_buf_is_empty(dev_data->rx_ringbuf)) { in cdc_acm_irq_update()
702 dev_data->rx_ready = false; in cdc_acm_irq_update()
718 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_irq_callback_set() local
720 dev_data->cb = cb; in cdc_acm_irq_callback_set()
721 dev_data->cb_data = cb_data; in cdc_acm_irq_callback_set()
728 struct cdc_acm_dev_data_t *const dev_data = dev->data; in cdc_acm_dte_rate_callback_set() local
734 dev_data->rate_cb = callback; in cdc_acm_dte_rate_callback_set()
752 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_baudrate_set() local
754 dev_data->line_coding.dwDTERate = sys_cpu_to_le32(baudrate); in cdc_acm_baudrate_set()
772 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_send_notification() local
784 dev_data->notification_sent = 0U; in cdc_acm_send_notification()
790 while (!((volatile uint8_t)dev_data->notification_sent)) { in cdc_acm_send_notification()
814 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_line_ctrl_set() local
821 dev_data->serial_state &= ~SERIAL_STATE_RX_CARRIER; in cdc_acm_line_ctrl_set()
824 dev_data->serial_state |= SERIAL_STATE_RX_CARRIER; in cdc_acm_line_ctrl_set()
829 dev_data->serial_state &= ~SERIAL_STATE_TX_CARRIER; in cdc_acm_line_ctrl_set()
832 dev_data->serial_state |= SERIAL_STATE_TX_CARRIER; in cdc_acm_line_ctrl_set()
834 cdc_acm_send_notification(dev, dev_data->serial_state); in cdc_acm_line_ctrl_set()
837 dev_data->serial_state &= ~SERIAL_STATE_BREAK; in cdc_acm_line_ctrl_set()
840 dev_data->serial_state |= SERIAL_STATE_BREAK; in cdc_acm_line_ctrl_set()
842 cdc_acm_send_notification(dev, dev_data->serial_state); in cdc_acm_line_ctrl_set()
845 dev_data->serial_state &= ~SERIAL_STATE_RING_SIGNAL; in cdc_acm_line_ctrl_set()
848 dev_data->serial_state |= SERIAL_STATE_RING_SIGNAL; in cdc_acm_line_ctrl_set()
850 cdc_acm_send_notification(dev, dev_data->serial_state); in cdc_acm_line_ctrl_set()
853 dev_data->serial_state &= ~SERIAL_STATE_FRAMING; in cdc_acm_line_ctrl_set()
856 dev_data->serial_state |= SERIAL_STATE_FRAMING; in cdc_acm_line_ctrl_set()
858 cdc_acm_send_notification(dev, dev_data->serial_state); in cdc_acm_line_ctrl_set()
861 dev_data->serial_state &= ~SERIAL_STATE_PARITY; in cdc_acm_line_ctrl_set()
864 dev_data->serial_state |= SERIAL_STATE_PARITY; in cdc_acm_line_ctrl_set()
866 cdc_acm_send_notification(dev, dev_data->serial_state); in cdc_acm_line_ctrl_set()
869 dev_data->serial_state &= ~SERIAL_STATE_OVER_RUN; in cdc_acm_line_ctrl_set()
872 dev_data->serial_state |= SERIAL_STATE_OVER_RUN; in cdc_acm_line_ctrl_set()
874 cdc_acm_send_notification(dev, dev_data->serial_state); in cdc_acm_line_ctrl_set()
895 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_line_ctrl_get() local
899 *val = sys_le32_to_cpu(dev_data->line_coding.dwDTERate); in cdc_acm_line_ctrl_get()
902 *val = (dev_data->line_state & in cdc_acm_line_ctrl_get()
906 *val = (dev_data->line_state & in cdc_acm_line_ctrl_get()
921 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_configure() local
925 dev_data->flow_ctrl = false; in cdc_acm_configure()
928 dev_data->flow_ctrl = true; in cdc_acm_configure()
940 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_config_get() local
942 cfg->baudrate = sys_le32_to_cpu(dev_data->line_coding.dwDTERate); in cdc_acm_config_get()
944 switch (dev_data->line_coding.bCharFormat) { in cdc_acm_config_get()
957 switch (dev_data->line_coding.bParityType) { in cdc_acm_config_get()
976 switch (dev_data->line_coding.bDataBits) { in cdc_acm_config_get()
992 cfg->flow_ctrl = dev_data->flow_ctrl ? UART_CFG_FLOW_CTRL_RTS_CTS : in cdc_acm_config_get()
1028 struct cdc_acm_dev_data_t * const dev_data = dev->data; in cdc_acm_poll_out() local
1032 dev_data->tx_ready = false; in cdc_acm_poll_out()
1036 wrote = ring_buf_put(dev_data->tx_ringbuf, &c, 1); in cdc_acm_poll_out()
1041 if (k_is_in_isr() || !dev_data->flow_ctrl) { in cdc_acm_poll_out()
1053 k_work_schedule_for_queue(&USB_WORK_Q, &dev_data->tx_work, K_MSEC(1)); in cdc_acm_poll_out()