Lines Matching refs:sirfport

33 sirfsoc_uart_pio_tx_chars(struct sirfsoc_uart_port *sirfport, int count);
115 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_tx_empty() local
116 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_tx_empty()
117 struct sirfsoc_fifo_status *ufifo_st = &sirfport->uart_reg->fifo_status; in sirfsoc_uart_tx_empty()
125 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_get_mctrl() local
126 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_get_mctrl()
127 if (!sirfport->hw_flow_ctrl || !sirfport->ms_enabled) in sirfsoc_uart_get_mctrl()
129 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_get_mctrl()
136 if (!gpio_get_value(sirfport->cts_gpio)) in sirfsoc_uart_get_mctrl()
149 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_set_mctrl() local
150 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_set_mctrl()
155 if (!sirfport->hw_flow_ctrl || !sirfport->ms_enabled) in sirfsoc_uart_set_mctrl()
157 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_set_mctrl()
163 gpio_set_value(sirfport->rts_gpio, 1); in sirfsoc_uart_set_mctrl()
165 gpio_set_value(sirfport->rts_gpio, 0); in sirfsoc_uart_set_mctrl()
171 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_stop_tx() local
172 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_stop_tx()
173 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_stop_tx()
175 if (sirfport->tx_dma_chan) { in sirfsoc_uart_stop_tx()
176 if (sirfport->tx_dma_state == TX_DMA_RUNNING) { in sirfsoc_uart_stop_tx()
177 dmaengine_pause(sirfport->tx_dma_chan); in sirfsoc_uart_stop_tx()
178 sirfport->tx_dma_state = TX_DMA_PAUSE; in sirfsoc_uart_stop_tx()
180 if (!sirfport->is_atlas7) in sirfsoc_uart_stop_tx()
189 if (!sirfport->is_atlas7) in sirfsoc_uart_stop_tx()
199 static void sirfsoc_uart_tx_with_dma(struct sirfsoc_uart_port *sirfport) in sirfsoc_uart_tx_with_dma() argument
201 struct uart_port *port = &sirfport->port; in sirfsoc_uart_tx_with_dma()
202 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_tx_with_dma()
203 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_tx_with_dma()
214 if (sirfport->tx_dma_state == TX_DMA_PAUSE) { in sirfsoc_uart_tx_with_dma()
215 dmaengine_resume(sirfport->tx_dma_chan); in sirfsoc_uart_tx_with_dma()
218 if (sirfport->tx_dma_state == TX_DMA_RUNNING) in sirfsoc_uart_tx_with_dma()
220 if (!sirfport->is_atlas7) in sirfsoc_uart_tx_with_dma()
241 pio_tx_size = sirfsoc_uart_pio_tx_chars(sirfport, in sirfsoc_uart_tx_with_dma()
246 sirfsoc_uart_pio_tx_chars(sirfport, tran_size); in sirfsoc_uart_tx_with_dma()
247 if (!sirfport->is_atlas7) in sirfsoc_uart_tx_with_dma()
264 sirfport->tx_dma_addr = dma_map_single(port->dev, in sirfsoc_uart_tx_with_dma()
267 sirfport->tx_dma_desc = dmaengine_prep_slave_single( in sirfsoc_uart_tx_with_dma()
268 sirfport->tx_dma_chan, sirfport->tx_dma_addr, in sirfsoc_uart_tx_with_dma()
270 if (!sirfport->tx_dma_desc) { in sirfsoc_uart_tx_with_dma()
274 sirfport->tx_dma_desc->callback = in sirfsoc_uart_tx_with_dma()
276 sirfport->tx_dma_desc->callback_param = (void *)sirfport; in sirfsoc_uart_tx_with_dma()
277 sirfport->transfer_size = tran_size; in sirfsoc_uart_tx_with_dma()
279 dmaengine_submit(sirfport->tx_dma_desc); in sirfsoc_uart_tx_with_dma()
280 dma_async_issue_pending(sirfport->tx_dma_chan); in sirfsoc_uart_tx_with_dma()
281 sirfport->tx_dma_state = TX_DMA_RUNNING; in sirfsoc_uart_tx_with_dma()
287 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_start_tx() local
288 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_start_tx()
289 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_start_tx()
290 if (sirfport->tx_dma_chan) in sirfsoc_uart_start_tx()
291 sirfsoc_uart_tx_with_dma(sirfport); in sirfsoc_uart_start_tx()
293 sirfsoc_uart_pio_tx_chars(sirfport, in sirfsoc_uart_start_tx()
296 if (!sirfport->is_atlas7) in sirfsoc_uart_start_tx()
308 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_stop_rx() local
309 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_stop_rx()
310 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_stop_rx()
313 if (sirfport->rx_dma_chan) { in sirfsoc_uart_stop_rx()
314 if (!sirfport->is_atlas7) in sirfsoc_uart_stop_rx()
323 dmaengine_terminate_all(sirfport->rx_dma_chan); in sirfsoc_uart_stop_rx()
325 if (!sirfport->is_atlas7) in sirfsoc_uart_stop_rx()
337 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_disable_ms() local
338 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_disable_ms()
339 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_disable_ms()
341 if (!sirfport->hw_flow_ctrl) in sirfsoc_uart_disable_ms()
343 sirfport->ms_enabled = false; in sirfsoc_uart_disable_ms()
344 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_disable_ms()
347 if (!sirfport->is_atlas7) in sirfsoc_uart_disable_ms()
355 disable_irq(gpio_to_irq(sirfport->cts_gpio)); in sirfsoc_uart_disable_ms()
360 struct sirfsoc_uart_port *sirfport = (struct sirfsoc_uart_port *)dev_id; in sirfsoc_uart_usp_cts_handler() local
361 struct uart_port *port = &sirfport->port; in sirfsoc_uart_usp_cts_handler()
363 if (gpio_is_valid(sirfport->cts_gpio) && sirfport->ms_enabled) in sirfsoc_uart_usp_cts_handler()
365 !gpio_get_value(sirfport->cts_gpio)); in sirfsoc_uart_usp_cts_handler()
372 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_enable_ms() local
373 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_enable_ms()
374 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_enable_ms()
376 if (!sirfport->hw_flow_ctrl) in sirfsoc_uart_enable_ms()
378 sirfport->ms_enabled = true; in sirfsoc_uart_enable_ms()
379 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_enable_ms()
383 if (!sirfport->is_atlas7) in sirfsoc_uart_enable_ms()
391 enable_irq(gpio_to_irq(sirfport->cts_gpio)); in sirfsoc_uart_enable_ms()
396 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_break_ctl() local
397 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_break_ctl()
398 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_break_ctl()
411 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_pio_rx_chars() local
412 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_pio_rx_chars()
413 struct sirfsoc_fifo_status *ufifo_st = &sirfport->uart_reg->fifo_status; in sirfsoc_uart_pio_rx_chars()
431 sirfport->rx_io_count += rx_count; in sirfsoc_uart_pio_rx_chars()
438 sirfsoc_uart_pio_tx_chars(struct sirfsoc_uart_port *sirfport, int count) in sirfsoc_uart_pio_tx_chars() argument
440 struct uart_port *port = &sirfport->port; in sirfsoc_uart_pio_tx_chars()
441 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_pio_tx_chars()
442 struct sirfsoc_fifo_status *ufifo_st = &sirfport->uart_reg->fifo_status; in sirfsoc_uart_pio_tx_chars()
462 struct sirfsoc_uart_port *sirfport = (struct sirfsoc_uart_port *)param; in sirfsoc_uart_tx_dma_complete_callback() local
463 struct uart_port *port = &sirfport->port; in sirfsoc_uart_tx_dma_complete_callback()
468 xmit->tail = (xmit->tail + sirfport->transfer_size) & in sirfsoc_uart_tx_dma_complete_callback()
470 port->icount.tx += sirfport->transfer_size; in sirfsoc_uart_tx_dma_complete_callback()
473 if (sirfport->tx_dma_addr) in sirfsoc_uart_tx_dma_complete_callback()
474 dma_unmap_single(port->dev, sirfport->tx_dma_addr, in sirfsoc_uart_tx_dma_complete_callback()
475 sirfport->transfer_size, DMA_TO_DEVICE); in sirfsoc_uart_tx_dma_complete_callback()
476 sirfport->tx_dma_state = TX_DMA_IDLE; in sirfsoc_uart_tx_dma_complete_callback()
477 sirfsoc_uart_tx_with_dma(sirfport); in sirfsoc_uart_tx_dma_complete_callback()
482 struct sirfsoc_uart_port *sirfport, int count) in sirfsoc_uart_insert_rx_buf_to_tty() argument
484 struct uart_port *port = &sirfport->port; in sirfsoc_uart_insert_rx_buf_to_tty()
489 sirfport->rx_dma_items[sirfport->rx_completed].xmit.buf, count); in sirfsoc_uart_insert_rx_buf_to_tty()
495 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_rx_submit_one_dma_desc() local
497 sirfport->rx_dma_items[index].xmit.tail = in sirfsoc_rx_submit_one_dma_desc()
498 sirfport->rx_dma_items[index].xmit.head = 0; in sirfsoc_rx_submit_one_dma_desc()
499 sirfport->rx_dma_items[index].desc = in sirfsoc_rx_submit_one_dma_desc()
500 dmaengine_prep_slave_single(sirfport->rx_dma_chan, in sirfsoc_rx_submit_one_dma_desc()
501 sirfport->rx_dma_items[index].dma_addr, SIRFSOC_RX_DMA_BUF_SIZE, in sirfsoc_rx_submit_one_dma_desc()
503 if (!sirfport->rx_dma_items[index].desc) { in sirfsoc_rx_submit_one_dma_desc()
507 sirfport->rx_dma_items[index].desc->callback = in sirfsoc_rx_submit_one_dma_desc()
509 sirfport->rx_dma_items[index].desc->callback_param = sirfport; in sirfsoc_rx_submit_one_dma_desc()
510 sirfport->rx_dma_items[index].cookie = in sirfsoc_rx_submit_one_dma_desc()
511 dmaengine_submit(sirfport->rx_dma_items[index].desc); in sirfsoc_rx_submit_one_dma_desc()
512 dma_async_issue_pending(sirfport->rx_dma_chan); in sirfsoc_rx_submit_one_dma_desc()
517 struct sirfsoc_uart_port *sirfport = (struct sirfsoc_uart_port *)param; in sirfsoc_rx_tmo_process_tl() local
518 struct uart_port *port = &sirfport->port; in sirfsoc_rx_tmo_process_tl()
519 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_rx_tmo_process_tl()
520 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_rx_tmo_process_tl()
521 struct sirfsoc_int_status *uint_st = &sirfport->uart_reg->uart_int_st; in sirfsoc_rx_tmo_process_tl()
527 while (DMA_COMPLETE == dmaengine_tx_status(sirfport->rx_dma_chan, in sirfsoc_rx_tmo_process_tl()
528 sirfport->rx_dma_items[sirfport->rx_completed].cookie, &tx_state)) { in sirfsoc_rx_tmo_process_tl()
529 sirfsoc_uart_insert_rx_buf_to_tty(sirfport, in sirfsoc_rx_tmo_process_tl()
531 sirfport->rx_completed++; in sirfsoc_rx_tmo_process_tl()
532 sirfport->rx_completed %= SIRFSOC_RX_LOOP_BUF_CNT; in sirfsoc_rx_tmo_process_tl()
534 count = CIRC_CNT(sirfport->rx_dma_items[sirfport->rx_issued].xmit.head, in sirfsoc_rx_tmo_process_tl()
535 sirfport->rx_dma_items[sirfport->rx_issued].xmit.tail, in sirfsoc_rx_tmo_process_tl()
538 sirfsoc_uart_insert_rx_buf_to_tty(sirfport, count); in sirfsoc_rx_tmo_process_tl()
542 sirfsoc_uart_pio_rx_chars(port, 4 - sirfport->rx_io_count); in sirfsoc_rx_tmo_process_tl()
543 if (sirfport->rx_io_count == 4) { in sirfsoc_rx_tmo_process_tl()
544 sirfport->rx_io_count = 0; in sirfsoc_rx_tmo_process_tl()
547 if (!sirfport->is_atlas7) in sirfsoc_rx_tmo_process_tl()
558 if (!sirfport->is_atlas7) in sirfsoc_rx_tmo_process_tl()
570 static void sirfsoc_uart_handle_rx_tmo(struct sirfsoc_uart_port *sirfport) in sirfsoc_uart_handle_rx_tmo() argument
572 struct uart_port *port = &sirfport->port; in sirfsoc_uart_handle_rx_tmo()
573 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_handle_rx_tmo()
574 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_handle_rx_tmo()
576 dmaengine_tx_status(sirfport->rx_dma_chan, in sirfsoc_uart_handle_rx_tmo()
577 sirfport->rx_dma_items[sirfport->rx_issued].cookie, &tx_state); in sirfsoc_uart_handle_rx_tmo()
578 dmaengine_terminate_all(sirfport->rx_dma_chan); in sirfsoc_uart_handle_rx_tmo()
579 sirfport->rx_dma_items[sirfport->rx_issued].xmit.head = in sirfsoc_uart_handle_rx_tmo()
581 if (!sirfport->is_atlas7) in sirfsoc_uart_handle_rx_tmo()
588 tasklet_schedule(&sirfport->rx_tmo_process_tasklet); in sirfsoc_uart_handle_rx_tmo()
591 static void sirfsoc_uart_handle_rx_done(struct sirfsoc_uart_port *sirfport) in sirfsoc_uart_handle_rx_done() argument
593 struct uart_port *port = &sirfport->port; in sirfsoc_uart_handle_rx_done()
594 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_handle_rx_done()
595 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_handle_rx_done()
596 struct sirfsoc_int_status *uint_st = &sirfport->uart_reg->uart_int_st; in sirfsoc_uart_handle_rx_done()
598 sirfsoc_uart_pio_rx_chars(port, 4 - sirfport->rx_io_count); in sirfsoc_uart_handle_rx_done()
599 if (sirfport->rx_io_count == 4) { in sirfsoc_uart_handle_rx_done()
600 sirfport->rx_io_count = 0; in sirfsoc_uart_handle_rx_done()
601 if (!sirfport->is_atlas7) in sirfsoc_uart_handle_rx_done()
619 struct sirfsoc_uart_port *sirfport = (struct sirfsoc_uart_port *)dev_id; in sirfsoc_uart_isr() local
620 struct uart_port *port = &sirfport->port; in sirfsoc_uart_isr()
621 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_isr()
622 struct sirfsoc_fifo_status *ufifo_st = &sirfport->uart_reg->fifo_status; in sirfsoc_uart_isr()
623 struct sirfsoc_int_status *uint_st = &sirfport->uart_reg->uart_int_st; in sirfsoc_uart_isr()
624 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_isr()
653 if ((sirfport->uart_reg->uart_type == SIRF_REAL_UART) && in sirfsoc_uart_isr()
655 !sirfport->tx_dma_state) { in sirfsoc_uart_isr()
665 if (sirfport->rx_dma_chan) { in sirfsoc_uart_isr()
667 sirfsoc_uart_handle_rx_tmo(sirfport); in sirfsoc_uart_isr()
669 sirfsoc_uart_handle_rx_done(sirfport); in sirfsoc_uart_isr()
679 if (sirfport->tx_dma_chan) in sirfsoc_uart_isr()
680 sirfsoc_uart_tx_with_dma(sirfport); in sirfsoc_uart_isr()
686 sirfsoc_uart_pio_tx_chars(sirfport, in sirfsoc_uart_isr()
702 struct sirfsoc_uart_port *sirfport = (struct sirfsoc_uart_port *)param; in sirfsoc_uart_rx_dma_complete_tl() local
703 struct uart_port *port = &sirfport->port; in sirfsoc_uart_rx_dma_complete_tl()
704 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_rx_dma_complete_tl()
705 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_rx_dma_complete_tl()
709 while (DMA_COMPLETE == dmaengine_tx_status(sirfport->rx_dma_chan, in sirfsoc_uart_rx_dma_complete_tl()
710 sirfport->rx_dma_items[sirfport->rx_completed].cookie, &tx_state)) { in sirfsoc_uart_rx_dma_complete_tl()
711 sirfsoc_uart_insert_rx_buf_to_tty(sirfport, in sirfsoc_uart_rx_dma_complete_tl()
716 sirfport->rx_completed++); in sirfsoc_uart_rx_dma_complete_tl()
718 sirfport->rx_completed++; in sirfsoc_uart_rx_dma_complete_tl()
719 sirfport->rx_completed %= SIRFSOC_RX_LOOP_BUF_CNT; in sirfsoc_uart_rx_dma_complete_tl()
727 struct sirfsoc_uart_port *sirfport = (struct sirfsoc_uart_port *)param; in sirfsoc_uart_rx_dma_complete_callback() local
730 spin_lock_irqsave(&sirfport->port.lock, flags); in sirfsoc_uart_rx_dma_complete_callback()
731 sirfport->rx_issued++; in sirfsoc_uart_rx_dma_complete_callback()
732 sirfport->rx_issued %= SIRFSOC_RX_LOOP_BUF_CNT; in sirfsoc_uart_rx_dma_complete_callback()
733 tasklet_schedule(&sirfport->rx_dma_complete_tasklet); in sirfsoc_uart_rx_dma_complete_callback()
734 spin_unlock_irqrestore(&sirfport->port.lock, flags); in sirfsoc_uart_rx_dma_complete_callback()
740 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_start_next_rx_dma() local
741 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_start_next_rx_dma()
742 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_start_next_rx_dma()
744 sirfport->rx_io_count = 0; in sirfsoc_uart_start_next_rx_dma()
750 sirfport->rx_completed = sirfport->rx_issued = 0; in sirfsoc_uart_start_next_rx_dma()
751 if (!sirfport->is_atlas7) in sirfsoc_uart_start_next_rx_dma()
762 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_start_rx() local
763 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_start_rx()
764 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_start_rx()
766 sirfport->rx_io_count = 0; in sirfsoc_uart_start_rx()
770 if (sirfport->rx_dma_chan) in sirfsoc_uart_start_rx()
773 if (!sirfport->is_atlas7) in sirfsoc_uart_start_rx()
848 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_set_termios() local
849 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_set_termios()
850 struct sirfsoc_int_en *uint_en = &sirfport->uart_reg->uart_int_en; in sirfsoc_uart_set_termios()
892 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_set_termios()
902 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_set_termios()
938 if (!sirfport->ms_enabled) in sirfsoc_uart_set_termios()
941 if (sirfport->ms_enabled) in sirfsoc_uart_set_termios()
951 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_set_termios()
978 if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) { in sirfsoc_uart_set_termios()
1006 if (sirfport->tx_dma_chan) in sirfsoc_uart_set_termios()
1010 if (sirfport->rx_dma_chan) in sirfsoc_uart_set_termios()
1034 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_pm() local
1036 if (sirfport->is_bt_uart) { in sirfsoc_uart_pm()
1037 clk_prepare_enable(sirfport->clk_noc); in sirfsoc_uart_pm()
1038 clk_prepare_enable(sirfport->clk_general); in sirfsoc_uart_pm()
1040 clk_prepare_enable(sirfport->clk); in sirfsoc_uart_pm()
1042 clk_disable_unprepare(sirfport->clk); in sirfsoc_uart_pm()
1043 if (sirfport->is_bt_uart) { in sirfsoc_uart_pm()
1044 clk_disable_unprepare(sirfport->clk_general); in sirfsoc_uart_pm()
1045 clk_disable_unprepare(sirfport->clk_noc); in sirfsoc_uart_pm()
1052 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_startup() local
1053 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_startup()
1061 sirfport); in sirfsoc_uart_startup()
1078 if (sirfport->uart_reg->uart_type == SIRF_USP_UART) in sirfsoc_uart_startup()
1088 if (sirfport->rx_dma_chan) in sirfsoc_uart_startup()
1093 if (sirfport->tx_dma_chan) { in sirfsoc_uart_startup()
1094 sirfport->tx_dma_state = TX_DMA_IDLE; in sirfsoc_uart_startup()
1100 sirfport->ms_enabled = false; in sirfsoc_uart_startup()
1101 if (sirfport->uart_reg->uart_type == SIRF_USP_UART && in sirfsoc_uart_startup()
1102 sirfport->hw_flow_ctrl) { in sirfsoc_uart_startup()
1103 set_irq_flags(gpio_to_irq(sirfport->cts_gpio), in sirfsoc_uart_startup()
1105 ret = request_irq(gpio_to_irq(sirfport->cts_gpio), in sirfsoc_uart_startup()
1107 IRQF_TRIGGER_RISING, "usp_cts_irq", sirfport); in sirfsoc_uart_startup()
1118 free_irq(port->irq, sirfport); in sirfsoc_uart_startup()
1125 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_shutdown() local
1126 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_shutdown()
1127 if (!sirfport->is_atlas7) in sirfsoc_uart_shutdown()
1132 free_irq(port->irq, sirfport); in sirfsoc_uart_shutdown()
1133 if (sirfport->ms_enabled) in sirfsoc_uart_shutdown()
1135 if (sirfport->uart_reg->uart_type == SIRF_USP_UART && in sirfsoc_uart_shutdown()
1136 sirfport->hw_flow_ctrl) { in sirfsoc_uart_shutdown()
1137 gpio_set_value(sirfport->rts_gpio, 1); in sirfsoc_uart_shutdown()
1138 free_irq(gpio_to_irq(sirfport->cts_gpio), sirfport); in sirfsoc_uart_shutdown()
1140 if (sirfport->tx_dma_chan) in sirfsoc_uart_shutdown()
1141 sirfport->tx_dma_state = TX_DMA_IDLE; in sirfsoc_uart_shutdown()
1151 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_request_port() local
1152 struct sirfsoc_uart_param *uart_param = &sirfport->uart_reg->uart_param; in sirfsoc_uart_request_port()
1200 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_console_setup() local
1201 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_console_setup()
1209 if (sirfport->uart_reg->uart_type == SIRF_USP_UART) in sirfsoc_uart_console_setup()
1217 sirfport->rx_dma_chan = NULL; in sirfsoc_uart_console_setup()
1218 sirfport->tx_dma_chan = NULL; in sirfsoc_uart_console_setup()
1224 struct sirfsoc_uart_port *sirfport = to_sirfport(port); in sirfsoc_uart_console_putchar() local
1225 struct sirfsoc_register *ureg = &sirfport->uart_reg->uart_reg; in sirfsoc_uart_console_putchar()
1226 struct sirfsoc_fifo_status *ufifo_st = &sirfport->uart_reg->fifo_status; in sirfsoc_uart_console_putchar()
1282 struct sirfsoc_uart_port *sirfport; in sirfsoc_uart_probe() local
1305 sirfport = &sirfsoc_uart_ports[pdev->id]; in sirfsoc_uart_probe()
1306 port = &sirfport->port; in sirfsoc_uart_probe()
1308 port->private_data = sirfport; in sirfsoc_uart_probe()
1309 sirfport->uart_reg = (struct sirfsoc_uart_register *)match->data; in sirfsoc_uart_probe()
1311 sirfport->hw_flow_ctrl = of_property_read_bool(pdev->dev.of_node, in sirfsoc_uart_probe()
1314 sirfport->uart_reg->uart_type = SIRF_REAL_UART; in sirfsoc_uart_probe()
1316 sirfport->uart_reg->uart_type = SIRF_USP_UART; in sirfsoc_uart_probe()
1317 if (!sirfport->hw_flow_ctrl) in sirfsoc_uart_probe()
1320 sirfport->cts_gpio = of_get_named_gpio( in sirfsoc_uart_probe()
1323 sirfport->cts_gpio = -1; in sirfsoc_uart_probe()
1325 sirfport->rts_gpio = of_get_named_gpio( in sirfsoc_uart_probe()
1328 sirfport->rts_gpio = -1; in sirfsoc_uart_probe()
1330 if ((!gpio_is_valid(sirfport->cts_gpio) || in sirfsoc_uart_probe()
1331 !gpio_is_valid(sirfport->rts_gpio))) { in sirfsoc_uart_probe()
1337 ret = devm_gpio_request(&pdev->dev, sirfport->cts_gpio, in sirfsoc_uart_probe()
1343 gpio_direction_input(sirfport->cts_gpio); in sirfsoc_uart_probe()
1344 ret = devm_gpio_request(&pdev->dev, sirfport->rts_gpio, in sirfsoc_uart_probe()
1350 gpio_direction_output(sirfport->rts_gpio, 1); in sirfsoc_uart_probe()
1354 sirfport->is_atlas7 = true; in sirfsoc_uart_probe()
1371 tasklet_init(&sirfport->rx_dma_complete_tasklet, in sirfsoc_uart_probe()
1372 sirfsoc_uart_rx_dma_complete_tl, (unsigned long)sirfport); in sirfsoc_uart_probe()
1373 tasklet_init(&sirfport->rx_tmo_process_tasklet, in sirfsoc_uart_probe()
1374 sirfsoc_rx_tmo_process_tl, (unsigned long)sirfport); in sirfsoc_uart_probe()
1390 sirfport->clk = devm_clk_get(&pdev->dev, NULL); in sirfsoc_uart_probe()
1391 if (IS_ERR(sirfport->clk)) { in sirfsoc_uart_probe()
1392 ret = PTR_ERR(sirfport->clk); in sirfsoc_uart_probe()
1395 port->uartclk = clk_get_rate(sirfport->clk); in sirfsoc_uart_probe()
1397 sirfport->clk_general = devm_clk_get(&pdev->dev, "general"); in sirfsoc_uart_probe()
1398 if (IS_ERR(sirfport->clk_general)) { in sirfsoc_uart_probe()
1399 ret = PTR_ERR(sirfport->clk_general); in sirfsoc_uart_probe()
1402 sirfport->clk_noc = devm_clk_get(&pdev->dev, "noc"); in sirfsoc_uart_probe()
1403 if (IS_ERR(sirfport->clk_noc)) { in sirfsoc_uart_probe()
1404 ret = PTR_ERR(sirfport->clk_noc); in sirfsoc_uart_probe()
1407 sirfport->is_bt_uart = true; in sirfsoc_uart_probe()
1409 sirfport->is_bt_uart = false; in sirfsoc_uart_probe()
1414 platform_set_drvdata(pdev, sirfport); in sirfsoc_uart_probe()
1421 sirfport->rx_dma_chan = dma_request_slave_channel(port->dev, "rx"); in sirfsoc_uart_probe()
1422 for (i = 0; sirfport->rx_dma_chan && i < SIRFSOC_RX_LOOP_BUF_CNT; i++) { in sirfsoc_uart_probe()
1423 sirfport->rx_dma_items[i].xmit.buf = in sirfsoc_uart_probe()
1425 &sirfport->rx_dma_items[i].dma_addr, GFP_KERNEL); in sirfsoc_uart_probe()
1426 if (!sirfport->rx_dma_items[i].xmit.buf) { in sirfsoc_uart_probe()
1431 sirfport->rx_dma_items[i].xmit.head = in sirfsoc_uart_probe()
1432 sirfport->rx_dma_items[i].xmit.tail = 0; in sirfsoc_uart_probe()
1434 if (sirfport->rx_dma_chan) in sirfsoc_uart_probe()
1435 dmaengine_slave_config(sirfport->rx_dma_chan, &slv_cfg); in sirfsoc_uart_probe()
1436 sirfport->tx_dma_chan = dma_request_slave_channel(port->dev, "tx"); in sirfsoc_uart_probe()
1437 if (sirfport->tx_dma_chan) in sirfsoc_uart_probe()
1438 dmaengine_slave_config(sirfport->tx_dma_chan, &tx_slv_cfg); in sirfsoc_uart_probe()
1444 sirfport->rx_dma_items[j].xmit.buf, in sirfsoc_uart_probe()
1445 sirfport->rx_dma_items[j].dma_addr); in sirfsoc_uart_probe()
1446 dma_release_channel(sirfport->rx_dma_chan); in sirfsoc_uart_probe()
1453 struct sirfsoc_uart_port *sirfport = platform_get_drvdata(pdev); in sirfsoc_uart_remove() local
1454 struct uart_port *port = &sirfport->port; in sirfsoc_uart_remove()
1456 if (sirfport->rx_dma_chan) { in sirfsoc_uart_remove()
1458 dmaengine_terminate_all(sirfport->rx_dma_chan); in sirfsoc_uart_remove()
1459 dma_release_channel(sirfport->rx_dma_chan); in sirfsoc_uart_remove()
1462 sirfport->rx_dma_items[i].xmit.buf, in sirfsoc_uart_remove()
1463 sirfport->rx_dma_items[i].dma_addr); in sirfsoc_uart_remove()
1465 if (sirfport->tx_dma_chan) { in sirfsoc_uart_remove()
1466 dmaengine_terminate_all(sirfport->tx_dma_chan); in sirfsoc_uart_remove()
1467 dma_release_channel(sirfport->tx_dma_chan); in sirfsoc_uart_remove()
1476 struct sirfsoc_uart_port *sirfport = dev_get_drvdata(pdev); in sirfsoc_uart_suspend() local
1477 struct uart_port *port = &sirfport->port; in sirfsoc_uart_suspend()
1484 struct sirfsoc_uart_port *sirfport = dev_get_drvdata(pdev); in sirfsoc_uart_resume() local
1485 struct uart_port *port = &sirfport->port; in sirfsoc_uart_resume()