Lines Matching refs:atmel_port
217 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_use_pdc_rx() local
219 return atmel_port->use_pdc_rx; in atmel_use_pdc_rx()
224 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_use_pdc_tx() local
226 return atmel_port->use_pdc_tx; in atmel_use_pdc_tx()
242 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_use_dma_tx() local
244 return atmel_port->use_dma_tx; in atmel_use_dma_tx()
249 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_use_dma_rx() local
251 return atmel_port->use_dma_rx; in atmel_use_dma_rx()
256 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_get_lines_status() local
261 mctrl_gpio_get(atmel_port->gpios, &ret); in atmel_get_lines_status()
263 if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios, in atmel_get_lines_status()
271 if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios, in atmel_get_lines_status()
279 if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios, in atmel_get_lines_status()
287 if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios, in atmel_get_lines_status()
302 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_config_rs485() local
306 UART_PUT_IDR(port, atmel_port->tx_done_mask); in atmel_config_rs485()
317 atmel_port->tx_done_mask = ATMEL_US_TXEMPTY; in atmel_config_rs485()
323 atmel_port->tx_done_mask = ATMEL_US_ENDTX | in atmel_config_rs485()
326 atmel_port->tx_done_mask = ATMEL_US_TXRDY; in atmel_config_rs485()
331 UART_PUT_IER(port, atmel_port->tx_done_mask); in atmel_config_rs485()
352 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_set_mctrl() local
388 mctrl_gpio_set(atmel_port->gpios, mctrl); in atmel_set_mctrl()
405 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_get_mctrl() local
422 return mctrl_gpio_get(atmel_port->gpios, &ret); in atmel_get_mctrl()
430 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_stop_tx() local
437 UART_PUT_IDR(port, atmel_port->tx_done_mask); in atmel_stop_tx()
449 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_start_tx() local
465 UART_PUT_IER(port, atmel_port->tx_done_mask); in atmel_start_tx()
509 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_enable_ms() local
515 if (atmel_port->ms_irq_enabled) in atmel_enable_ms()
518 atmel_port->ms_irq_enabled = true; in atmel_enable_ms()
520 if (atmel_port->gpio_irq[UART_GPIO_CTS] >= 0) in atmel_enable_ms()
521 enable_irq(atmel_port->gpio_irq[UART_GPIO_CTS]); in atmel_enable_ms()
525 if (atmel_port->gpio_irq[UART_GPIO_DSR] >= 0) in atmel_enable_ms()
526 enable_irq(atmel_port->gpio_irq[UART_GPIO_DSR]); in atmel_enable_ms()
530 if (atmel_port->gpio_irq[UART_GPIO_RI] >= 0) in atmel_enable_ms()
531 enable_irq(atmel_port->gpio_irq[UART_GPIO_RI]); in atmel_enable_ms()
535 if (atmel_port->gpio_irq[UART_GPIO_DCD] >= 0) in atmel_enable_ms()
536 enable_irq(atmel_port->gpio_irq[UART_GPIO_DCD]); in atmel_enable_ms()
548 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_disable_ms() local
554 if (!atmel_port->ms_irq_enabled) in atmel_disable_ms()
557 atmel_port->ms_irq_enabled = false; in atmel_disable_ms()
559 if (atmel_port->gpio_irq[UART_GPIO_CTS] >= 0) in atmel_disable_ms()
560 disable_irq(atmel_port->gpio_irq[UART_GPIO_CTS]); in atmel_disable_ms()
564 if (atmel_port->gpio_irq[UART_GPIO_DSR] >= 0) in atmel_disable_ms()
565 disable_irq(atmel_port->gpio_irq[UART_GPIO_DSR]); in atmel_disable_ms()
569 if (atmel_port->gpio_irq[UART_GPIO_RI] >= 0) in atmel_disable_ms()
570 disable_irq(atmel_port->gpio_irq[UART_GPIO_RI]); in atmel_disable_ms()
574 if (atmel_port->gpio_irq[UART_GPIO_DCD] >= 0) in atmel_disable_ms()
575 disable_irq(atmel_port->gpio_irq[UART_GPIO_DCD]); in atmel_disable_ms()
600 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_buffer_rx_char() local
601 struct circ_buf *ring = &atmel_port->rx_ring; in atmel_buffer_rx_char()
644 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_rx_chars() local
657 || atmel_port->break_active)) { in atmel_rx_chars()
663 && !atmel_port->break_active) { in atmel_rx_chars()
664 atmel_port->break_active = 1; in atmel_rx_chars()
676 atmel_port->break_active = 0; in atmel_rx_chars()
684 tasklet_schedule(&atmel_port->tasklet); in atmel_rx_chars()
694 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_tx_chars() local
696 if (port->x_char && UART_GET_CSR(port) & atmel_port->tx_done_mask) { in atmel_tx_chars()
704 while (UART_GET_CSR(port) & atmel_port->tx_done_mask) { in atmel_tx_chars()
717 UART_PUT_IER(port, atmel_port->tx_done_mask); in atmel_tx_chars()
722 struct atmel_uart_port *atmel_port = arg; in atmel_complete_tx_dma() local
723 struct uart_port *port = &atmel_port->uart; in atmel_complete_tx_dma()
725 struct dma_chan *chan = atmel_port->chan_tx; in atmel_complete_tx_dma()
732 xmit->tail += sg_dma_len(&atmel_port->sg_tx); in atmel_complete_tx_dma()
735 port->icount.tx += sg_dma_len(&atmel_port->sg_tx); in atmel_complete_tx_dma()
737 spin_lock_irq(&atmel_port->lock_tx); in atmel_complete_tx_dma()
738 async_tx_ack(atmel_port->desc_tx); in atmel_complete_tx_dma()
739 atmel_port->cookie_tx = -EINVAL; in atmel_complete_tx_dma()
740 atmel_port->desc_tx = NULL; in atmel_complete_tx_dma()
741 spin_unlock_irq(&atmel_port->lock_tx); in atmel_complete_tx_dma()
752 tasklet_schedule(&atmel_port->tasklet); in atmel_complete_tx_dma()
759 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_release_tx_dma() local
760 struct dma_chan *chan = atmel_port->chan_tx; in atmel_release_tx_dma()
765 dma_unmap_sg(port->dev, &atmel_port->sg_tx, 1, in atmel_release_tx_dma()
769 atmel_port->desc_tx = NULL; in atmel_release_tx_dma()
770 atmel_port->chan_tx = NULL; in atmel_release_tx_dma()
771 atmel_port->cookie_tx = -EINVAL; in atmel_release_tx_dma()
779 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_tx_dma() local
781 struct dma_chan *chan = atmel_port->chan_tx; in atmel_tx_dma()
783 struct scatterlist *sg = &atmel_port->sg_tx; in atmel_tx_dma()
786 if (atmel_port->desc_tx != NULL) in atmel_tx_dma()
821 atmel_port->desc_tx = desc; in atmel_tx_dma()
823 desc->callback_param = atmel_port; in atmel_tx_dma()
824 atmel_port->cookie_tx = dmaengine_submit(desc); in atmel_tx_dma()
839 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_prepare_tx_dma() local
847 atmel_port->chan_tx = dma_request_slave_channel(port->dev, "tx"); in atmel_prepare_tx_dma()
848 if (atmel_port->chan_tx == NULL) in atmel_prepare_tx_dma()
851 dma_chan_name(atmel_port->chan_tx)); in atmel_prepare_tx_dma()
853 spin_lock_init(&atmel_port->lock_tx); in atmel_prepare_tx_dma()
854 sg_init_table(&atmel_port->sg_tx, 1); in atmel_prepare_tx_dma()
857 sg_set_page(&atmel_port->sg_tx, in atmel_prepare_tx_dma()
862 &atmel_port->sg_tx, in atmel_prepare_tx_dma()
871 sg_dma_len(&atmel_port->sg_tx), in atmel_prepare_tx_dma()
873 sg_dma_address(&atmel_port->sg_tx)); in atmel_prepare_tx_dma()
883 ret = dmaengine_slave_config(atmel_port->chan_tx, in atmel_prepare_tx_dma()
894 atmel_port->use_dma_tx = 0; in atmel_prepare_tx_dma()
895 if (atmel_port->chan_tx) in atmel_prepare_tx_dma()
903 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_complete_rx_dma() local
905 tasklet_schedule(&atmel_port->tasklet); in atmel_complete_rx_dma()
910 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_release_rx_dma() local
911 struct dma_chan *chan = atmel_port->chan_rx; in atmel_release_rx_dma()
916 dma_unmap_sg(port->dev, &atmel_port->sg_rx, 1, in atmel_release_rx_dma()
920 atmel_port->desc_rx = NULL; in atmel_release_rx_dma()
921 atmel_port->chan_rx = NULL; in atmel_release_rx_dma()
922 atmel_port->cookie_rx = -EINVAL; in atmel_release_rx_dma()
927 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_rx_from_dma() local
929 struct circ_buf *ring = &atmel_port->rx_ring; in atmel_rx_from_dma()
930 struct dma_chan *chan = atmel_port->chan_rx; in atmel_rx_from_dma()
939 atmel_port->cookie_rx, in atmel_rx_from_dma()
945 tasklet_schedule(&atmel_port->tasklet); in atmel_rx_from_dma()
951 &atmel_port->sg_rx, in atmel_rx_from_dma()
962 ring->head = sg_dma_len(&atmel_port->sg_rx) - state.residue; in atmel_rx_from_dma()
963 BUG_ON(ring->head > sg_dma_len(&atmel_port->sg_rx)); in atmel_rx_from_dma()
977 count = sg_dma_len(&atmel_port->sg_rx) - ring->tail; in atmel_rx_from_dma()
990 if (ring->head >= sg_dma_len(&atmel_port->sg_rx)) in atmel_rx_from_dma()
998 &atmel_port->sg_rx, in atmel_rx_from_dma()
1015 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_prepare_rx_dma() local
1022 ring = &atmel_port->rx_ring; in atmel_prepare_rx_dma()
1027 atmel_port->chan_rx = dma_request_slave_channel(port->dev, "rx"); in atmel_prepare_rx_dma()
1028 if (atmel_port->chan_rx == NULL) in atmel_prepare_rx_dma()
1031 dma_chan_name(atmel_port->chan_rx)); in atmel_prepare_rx_dma()
1033 spin_lock_init(&atmel_port->lock_rx); in atmel_prepare_rx_dma()
1034 sg_init_table(&atmel_port->sg_rx, 1); in atmel_prepare_rx_dma()
1037 sg_set_page(&atmel_port->sg_rx, in atmel_prepare_rx_dma()
1042 &atmel_port->sg_rx, in atmel_prepare_rx_dma()
1051 sg_dma_len(&atmel_port->sg_rx), in atmel_prepare_rx_dma()
1053 sg_dma_address(&atmel_port->sg_rx)); in atmel_prepare_rx_dma()
1063 ret = dmaengine_slave_config(atmel_port->chan_rx, in atmel_prepare_rx_dma()
1073 desc = dmaengine_prep_dma_cyclic(atmel_port->chan_rx, in atmel_prepare_rx_dma()
1074 sg_dma_address(&atmel_port->sg_rx), in atmel_prepare_rx_dma()
1075 sg_dma_len(&atmel_port->sg_rx), in atmel_prepare_rx_dma()
1076 sg_dma_len(&atmel_port->sg_rx)/2, in atmel_prepare_rx_dma()
1081 atmel_port->desc_rx = desc; in atmel_prepare_rx_dma()
1082 atmel_port->cookie_rx = dmaengine_submit(desc); in atmel_prepare_rx_dma()
1088 atmel_port->use_dma_rx = 0; in atmel_prepare_rx_dma()
1089 if (atmel_port->chan_rx) in atmel_prepare_rx_dma()
1097 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_uart_timer_callback() local
1099 tasklet_schedule(&atmel_port->tasklet); in atmel_uart_timer_callback()
1100 mod_timer(&atmel_port->uart_timer, jiffies + uart_poll_timeout(port)); in atmel_uart_timer_callback()
1109 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_handle_receive() local
1122 tasklet_schedule(&atmel_port->tasklet); in atmel_handle_receive()
1133 tasklet_schedule(&atmel_port->tasklet); in atmel_handle_receive()
1147 atmel_port->break_active = 0; in atmel_handle_receive()
1157 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_handle_transmit() local
1159 if (pending & atmel_port->tx_done_mask) { in atmel_handle_transmit()
1161 UART_PUT_IDR(port, atmel_port->tx_done_mask); in atmel_handle_transmit()
1162 tasklet_schedule(&atmel_port->tasklet); in atmel_handle_transmit()
1173 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_handle_status() local
1177 atmel_port->irq_status = status; in atmel_handle_status()
1178 tasklet_schedule(&atmel_port->tasklet); in atmel_handle_status()
1188 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_interrupt() local
1192 spin_lock(&atmel_port->lock_suspended); in atmel_interrupt()
1202 if (irq == atmel_port->gpio_irq[UART_GPIO_CTS]) in atmel_interrupt()
1205 if (irq == atmel_port->gpio_irq[UART_GPIO_DSR]) in atmel_interrupt()
1208 if (irq == atmel_port->gpio_irq[UART_GPIO_RI]) in atmel_interrupt()
1211 if (irq == atmel_port->gpio_irq[UART_GPIO_DCD]) in atmel_interrupt()
1219 if (atmel_port->suspended) { in atmel_interrupt()
1220 atmel_port->pending |= pending; in atmel_interrupt()
1221 atmel_port->pending_status = status; in atmel_interrupt()
1232 spin_unlock(&atmel_port->lock_suspended); in atmel_interrupt()
1239 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_release_tx_pdc() local
1240 struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; in atmel_release_tx_pdc()
1253 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_tx_pdc() local
1255 struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; in atmel_tx_pdc()
1287 UART_PUT_IER(port, atmel_port->tx_done_mask); in atmel_tx_pdc()
1302 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_prepare_tx_pdc() local
1303 struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; in atmel_prepare_tx_pdc()
1319 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_rx_from_ring() local
1320 struct circ_buf *ring = &atmel_port->rx_ring; in atmel_rx_from_ring()
1387 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_release_rx_pdc() local
1391 struct atmel_dma_buffer *pdc = &atmel_port->pdc_rx[i]; in atmel_release_rx_pdc()
1403 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_rx_from_pdc() local
1406 int rx_idx = atmel_port->pdc_rx_idx; in atmel_rx_from_pdc()
1415 pdc = &atmel_port->pdc_rx[rx_idx]; in atmel_rx_from_pdc()
1463 atmel_port->pdc_rx_idx = rx_idx; in atmel_rx_from_pdc()
1480 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_prepare_rx_pdc() local
1484 struct atmel_dma_buffer *pdc = &atmel_port->pdc_rx[i]; in atmel_prepare_rx_pdc()
1490 atmel_port->pdc_rx[0].dma_addr, in atmel_prepare_rx_pdc()
1493 kfree(atmel_port->pdc_rx[0].buf); in atmel_prepare_rx_pdc()
1495 atmel_port->use_pdc_rx = 0; in atmel_prepare_rx_pdc()
1506 atmel_port->pdc_rx_idx = 0; in atmel_prepare_rx_pdc()
1508 UART_PUT_RPR(port, atmel_port->pdc_rx[0].dma_addr); in atmel_prepare_rx_pdc()
1511 UART_PUT_RNPR(port, atmel_port->pdc_rx[1].dma_addr); in atmel_prepare_rx_pdc()
1523 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_tasklet_func() local
1530 atmel_port->schedule_tx(port); in atmel_tasklet_func()
1532 status = atmel_port->irq_status; in atmel_tasklet_func()
1533 status_change = status ^ atmel_port->irq_status_prev; in atmel_tasklet_func()
1549 atmel_port->irq_status_prev = status; in atmel_tasklet_func()
1552 atmel_port->schedule_rx(port); in atmel_tasklet_func()
1557 static void atmel_init_property(struct atmel_uart_port *atmel_port, in atmel_init_property() argument
1567 atmel_port->use_dma_rx = true; in atmel_init_property()
1568 atmel_port->use_pdc_rx = false; in atmel_init_property()
1570 atmel_port->use_dma_rx = false; in atmel_init_property()
1571 atmel_port->use_pdc_rx = true; in atmel_init_property()
1574 atmel_port->use_dma_rx = false; in atmel_init_property()
1575 atmel_port->use_pdc_rx = false; in atmel_init_property()
1580 atmel_port->use_dma_tx = true; in atmel_init_property()
1581 atmel_port->use_pdc_tx = false; in atmel_init_property()
1583 atmel_port->use_dma_tx = false; in atmel_init_property()
1584 atmel_port->use_pdc_tx = true; in atmel_init_property()
1587 atmel_port->use_dma_tx = false; in atmel_init_property()
1588 atmel_port->use_pdc_tx = false; in atmel_init_property()
1592 atmel_port->use_pdc_rx = pdata->use_dma_rx; in atmel_init_property()
1593 atmel_port->use_pdc_tx = pdata->use_dma_tx; in atmel_init_property()
1594 atmel_port->use_dma_rx = false; in atmel_init_property()
1595 atmel_port->use_dma_tx = false; in atmel_init_property()
1632 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_set_ops() local
1635 atmel_port->prepare_rx = &atmel_prepare_rx_dma; in atmel_set_ops()
1636 atmel_port->schedule_rx = &atmel_rx_from_dma; in atmel_set_ops()
1637 atmel_port->release_rx = &atmel_release_rx_dma; in atmel_set_ops()
1639 atmel_port->prepare_rx = &atmel_prepare_rx_pdc; in atmel_set_ops()
1640 atmel_port->schedule_rx = &atmel_rx_from_pdc; in atmel_set_ops()
1641 atmel_port->release_rx = &atmel_release_rx_pdc; in atmel_set_ops()
1643 atmel_port->prepare_rx = NULL; in atmel_set_ops()
1644 atmel_port->schedule_rx = &atmel_rx_from_ring; in atmel_set_ops()
1645 atmel_port->release_rx = NULL; in atmel_set_ops()
1649 atmel_port->prepare_tx = &atmel_prepare_tx_dma; in atmel_set_ops()
1650 atmel_port->schedule_tx = &atmel_tx_dma; in atmel_set_ops()
1651 atmel_port->release_tx = &atmel_release_tx_dma; in atmel_set_ops()
1653 atmel_port->prepare_tx = &atmel_prepare_tx_pdc; in atmel_set_ops()
1654 atmel_port->schedule_tx = &atmel_tx_pdc; in atmel_set_ops()
1655 atmel_port->release_tx = &atmel_release_tx_pdc; in atmel_set_ops()
1657 atmel_port->prepare_tx = NULL; in atmel_set_ops()
1658 atmel_port->schedule_tx = &atmel_tx_chars; in atmel_set_ops()
1659 atmel_port->release_tx = NULL; in atmel_set_ops()
1668 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_get_ip_name() local
1676 atmel_port->is_usart = false; in atmel_get_ip_name()
1680 atmel_port->is_usart = true; in atmel_get_ip_name()
1683 atmel_port->is_usart = false; in atmel_get_ip_name()
1691 atmel_port->is_usart = true; in atmel_get_ip_name()
1696 atmel_port->is_usart = false; in atmel_get_ip_name()
1706 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_free_gpio_irq() local
1710 if (atmel_port->gpio_irq[i] >= 0) in atmel_free_gpio_irq()
1711 free_irq(atmel_port->gpio_irq[i], port); in atmel_free_gpio_irq()
1716 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_request_gpio_irq() local
1717 int *irq = atmel_port->gpio_irq; in atmel_request_gpio_irq()
1749 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_startup() local
1759 atmel_port->ms_irq_enabled = false; in atmel_startup()
1779 tasklet_enable(&atmel_port->tasklet); in atmel_startup()
1784 atmel_init_property(atmel_port, pdev); in atmel_startup()
1787 if (atmel_port->prepare_rx) { in atmel_startup()
1788 retval = atmel_port->prepare_rx(port); in atmel_startup()
1793 if (atmel_port->prepare_tx) { in atmel_startup()
1794 retval = atmel_port->prepare_tx(port); in atmel_startup()
1800 atmel_port->irq_status_prev = atmel_get_lines_status(port); in atmel_startup()
1801 atmel_port->irq_status = atmel_port->irq_status_prev; in atmel_startup()
1810 setup_timer(&atmel_port->uart_timer, in atmel_startup()
1816 if (!atmel_port->is_usart) { in atmel_startup()
1817 mod_timer(&atmel_port->uart_timer, in atmel_startup()
1830 if (!atmel_port->is_usart) { in atmel_startup()
1831 mod_timer(&atmel_port->uart_timer, in atmel_startup()
1859 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_flush_buffer() local
1863 atmel_port->pdc_tx.ofs = 0; in atmel_flush_buffer()
1872 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_shutdown() local
1878 del_timer_sync(&atmel_port->uart_timer); in atmel_shutdown()
1884 tasklet_disable(&atmel_port->tasklet); in atmel_shutdown()
1885 tasklet_kill(&atmel_port->tasklet); in atmel_shutdown()
1901 if (atmel_port->release_rx) in atmel_shutdown()
1902 atmel_port->release_rx(port); in atmel_shutdown()
1903 if (atmel_port->release_tx) in atmel_shutdown()
1904 atmel_port->release_tx(port); in atmel_shutdown()
1909 atmel_port->rx_ring.head = 0; in atmel_shutdown()
1910 atmel_port->rx_ring.tail = 0; in atmel_shutdown()
1918 atmel_port->ms_irq_enabled = false; in atmel_shutdown()
1929 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_serial_pm() local
1937 clk_prepare_enable(atmel_port->clk); in atmel_serial_pm()
1940 UART_PUT_IER(port, atmel_port->backup_imr); in atmel_serial_pm()
1944 atmel_port->backup_imr = UART_GET_IMR(port); in atmel_serial_pm()
1951 clk_disable_unprepare(atmel_port->clk); in atmel_serial_pm()
2254 static int atmel_init_port(struct atmel_uart_port *atmel_port, in atmel_init_port() argument
2258 struct uart_port *port = &atmel_port->uart; in atmel_init_port()
2261 atmel_init_property(atmel_port, pdev); in atmel_init_port()
2275 tasklet_init(&atmel_port->tasklet, atmel_tasklet_func, in atmel_init_port()
2277 tasklet_disable(&atmel_port->tasklet); in atmel_init_port()
2279 memset(&atmel_port->rx_ring, 0, sizeof(atmel_port->rx_ring)); in atmel_init_port()
2290 if (!atmel_port->clk) { in atmel_init_port()
2291 atmel_port->clk = clk_get(&pdev->dev, "usart"); in atmel_init_port()
2292 if (IS_ERR(atmel_port->clk)) { in atmel_init_port()
2293 ret = PTR_ERR(atmel_port->clk); in atmel_init_port()
2294 atmel_port->clk = NULL; in atmel_init_port()
2297 ret = clk_prepare_enable(atmel_port->clk); in atmel_init_port()
2299 clk_put(atmel_port->clk); in atmel_init_port()
2300 atmel_port->clk = NULL; in atmel_init_port()
2303 port->uartclk = clk_get_rate(atmel_port->clk); in atmel_init_port()
2304 clk_disable_unprepare(atmel_port->clk); in atmel_init_port()
2310 atmel_port->tx_done_mask = ATMEL_US_TXEMPTY; in atmel_init_port()
2313 atmel_port->tx_done_mask = ATMEL_US_ENDTX | ATMEL_US_TXBUFE; in atmel_init_port()
2315 atmel_port->tx_done_mask = ATMEL_US_TXRDY; in atmel_init_port()
2337 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_console_write() local
2345 UART_PUT_IDR(port, ATMEL_US_RXRDY | atmel_port->tx_done_mask); in atmel_console_write()
2530 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_serial_suspend() local
2539 atmel_port->may_wakeup = device_may_wakeup(&pdev->dev); in atmel_serial_suspend()
2543 spin_lock_irqsave(&atmel_port->lock_suspended, flags); in atmel_serial_suspend()
2544 atmel_port->suspended = true; in atmel_serial_suspend()
2545 spin_unlock_irqrestore(&atmel_port->lock_suspended, flags); in atmel_serial_suspend()
2557 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_serial_resume() local
2560 spin_lock_irqsave(&atmel_port->lock_suspended, flags); in atmel_serial_resume()
2561 if (atmel_port->pending) { in atmel_serial_resume()
2562 atmel_handle_receive(port, atmel_port->pending); in atmel_serial_resume()
2563 atmel_handle_status(port, atmel_port->pending, in atmel_serial_resume()
2564 atmel_port->pending_status); in atmel_serial_resume()
2565 atmel_handle_transmit(port, atmel_port->pending); in atmel_serial_resume()
2566 atmel_port->pending = 0; in atmel_serial_resume()
2568 atmel_port->suspended = false; in atmel_serial_resume()
2569 spin_unlock_irqrestore(&atmel_port->lock_suspended, flags); in atmel_serial_resume()
2572 device_set_wakeup_enable(&pdev->dev, atmel_port->may_wakeup); in atmel_serial_resume()
2720 struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); in atmel_serial_remove() local
2723 tasklet_kill(&atmel_port->tasklet); in atmel_serial_remove()
2729 kfree(atmel_port->rx_ring.buf); in atmel_serial_remove()
2735 clk_put(atmel_port->clk); in atmel_serial_remove()