Lines Matching refs:sp
198 struct sprd_uart_port *sp = in sprd_stop_rx() local
202 if (sp->rx_dma.enable) in sprd_stop_rx()
203 dmaengine_terminate_all(sp->rx_dma.chn); in sprd_stop_rx()
229 struct sprd_uart_port *sp = in sprd_stop_tx_dma() local
234 dmaengine_pause(sp->tx_dma.chn); in sprd_stop_tx_dma()
236 dmaengine_tx_status(sp->tx_dma.chn, sp->tx_dma.cookie, &state); in sprd_stop_tx_dma()
238 trans_len = state.residue - sp->tx_dma.phys_addr; in sprd_stop_tx_dma()
240 dma_unmap_single(port->dev, sp->tx_dma.phys_addr, in sprd_stop_tx_dma()
241 sp->tx_dma.trans_len, DMA_TO_DEVICE); in sprd_stop_tx_dma()
244 dmaengine_terminate_all(sp->tx_dma.chn); in sprd_stop_tx_dma()
245 sp->tx_dma.trans_len = 0; in sprd_stop_tx_dma()
250 struct sprd_uart_port *sp = in sprd_tx_buf_remap() local
255 sp->tx_dma.trans_len = kfifo_out_linear_ptr(&tport->xmit_fifo, &tail, in sprd_tx_buf_remap()
258 sp->tx_dma.phys_addr = dma_map_single(port->dev, tail, in sprd_tx_buf_remap()
259 sp->tx_dma.trans_len, in sprd_tx_buf_remap()
261 return dma_mapping_error(port->dev, sp->tx_dma.phys_addr); in sprd_tx_buf_remap()
267 struct sprd_uart_port *sp = in sprd_complete_tx_dma() local
273 dma_unmap_single(port->dev, sp->tx_dma.phys_addr, in sprd_complete_tx_dma()
274 sp->tx_dma.trans_len, DMA_TO_DEVICE); in sprd_complete_tx_dma()
276 uart_xmit_advance(port, sp->tx_dma.trans_len); in sprd_complete_tx_dma()
283 sp->tx_dma.trans_len = 0; in sprd_complete_tx_dma()
320 struct sprd_uart_port *sp = in sprd_tx_dma_config() local
322 u32 burst = sp->tx_dma.trans_len > SPRD_TX_FIFO_FULL ? in sprd_tx_dma_config()
323 SPRD_TX_FIFO_FULL : sp->tx_dma.trans_len; in sprd_tx_dma_config()
332 ret = dmaengine_slave_config(sp->tx_dma.chn, &cfg); in sprd_tx_dma_config()
336 return sprd_uart_dma_submit(port, &sp->tx_dma, sp->tx_dma.trans_len, in sprd_tx_dma_config()
342 struct sprd_uart_port *sp = in sprd_start_tx_dma() local
358 if (sp->tx_dma.trans_len) in sprd_start_tx_dma()
362 sp->tx_dma.trans_len = 0; in sprd_start_tx_dma()
374 static int sprd_rx_alloc_buf(struct sprd_uart_port *sp) in sprd_rx_alloc_buf() argument
376 sp->rx_dma.virt = dma_alloc_coherent(sp->port.dev, SPRD_UART_RX_SIZE, in sprd_rx_alloc_buf()
377 &sp->rx_dma.phys_addr, GFP_KERNEL); in sprd_rx_alloc_buf()
378 if (!sp->rx_dma.virt) in sprd_rx_alloc_buf()
384 static void sprd_rx_free_buf(struct sprd_uart_port *sp) in sprd_rx_free_buf() argument
386 if (sp->rx_dma.virt) in sprd_rx_free_buf()
387 dma_free_coherent(sp->port.dev, SPRD_UART_RX_SIZE, in sprd_rx_free_buf()
388 sp->rx_dma.virt, sp->rx_dma.phys_addr); in sprd_rx_free_buf()
389 sp->rx_dma.virt = NULL; in sprd_rx_free_buf()
394 struct sprd_uart_port *sp = in sprd_rx_dma_config() local
403 return dmaengine_slave_config(sp->rx_dma.chn, &cfg); in sprd_rx_dma_config()
408 struct sprd_uart_port *sp = in sprd_uart_dma_rx() local
412 port->icount.rx += sp->rx_dma.trans_len; in sprd_uart_dma_rx()
413 tty_insert_flip_string(tty, sp->rx_buf_tail, sp->rx_dma.trans_len); in sprd_uart_dma_rx()
419 struct sprd_uart_port *sp = in sprd_uart_dma_irq() local
424 status = dmaengine_tx_status(sp->rx_dma.chn, in sprd_uart_dma_irq()
425 sp->rx_dma.cookie, &state); in sprd_uart_dma_irq()
429 if (!state.residue && sp->pos == sp->rx_dma.phys_addr) in sprd_uart_dma_irq()
433 sp->rx_dma.trans_len = SPRD_UART_RX_SIZE + in sprd_uart_dma_irq()
434 sp->rx_dma.phys_addr - sp->pos; in sprd_uart_dma_irq()
435 sp->pos = sp->rx_dma.phys_addr; in sprd_uart_dma_irq()
437 sp->rx_dma.trans_len = state.residue - sp->pos; in sprd_uart_dma_irq()
438 sp->pos = state.residue; in sprd_uart_dma_irq()
442 sp->rx_buf_tail += sp->rx_dma.trans_len; in sprd_uart_dma_irq()
448 struct sprd_uart_port *sp = in sprd_complete_rx_dma() local
456 status = dmaengine_tx_status(sp->rx_dma.chn, in sprd_complete_rx_dma()
457 sp->rx_dma.cookie, &state); in sprd_complete_rx_dma()
464 if (sp->pos != sp->rx_dma.phys_addr) { in sprd_complete_rx_dma()
465 sp->rx_dma.trans_len = SPRD_UART_RX_SIZE + in sprd_complete_rx_dma()
466 sp->rx_dma.phys_addr - sp->pos; in sprd_complete_rx_dma()
468 sp->rx_buf_tail += sp->rx_dma.trans_len; in sprd_complete_rx_dma()
479 struct sprd_uart_port *sp = in sprd_start_dma_rx() local
483 if (!sp->rx_dma.enable) in sprd_start_dma_rx()
486 sp->pos = sp->rx_dma.phys_addr; in sprd_start_dma_rx()
487 sp->rx_buf_tail = sp->rx_dma.virt; in sprd_start_dma_rx()
493 return sprd_uart_dma_submit(port, &sp->rx_dma, SPRD_UART_RX_SIZE, in sprd_start_dma_rx()
499 struct sprd_uart_port *sp = in sprd_release_dma() local
504 if (sp->rx_dma.enable) in sprd_release_dma()
505 dma_release_channel(sp->rx_dma.chn); in sprd_release_dma()
507 if (sp->tx_dma.enable) in sprd_release_dma()
508 dma_release_channel(sp->tx_dma.chn); in sprd_release_dma()
510 sp->tx_dma.enable = false; in sprd_release_dma()
511 sp->rx_dma.enable = false; in sprd_release_dma()
516 struct sprd_uart_port *sp = in sprd_request_dma() local
519 sp->tx_dma.enable = true; in sprd_request_dma()
520 sp->rx_dma.enable = true; in sprd_request_dma()
522 sp->tx_dma.chn = dma_request_chan(port->dev, "tx"); in sprd_request_dma()
523 if (IS_ERR(sp->tx_dma.chn)) { in sprd_request_dma()
525 PTR_ERR(sp->tx_dma.chn)); in sprd_request_dma()
526 sp->tx_dma.enable = false; in sprd_request_dma()
529 sp->rx_dma.chn = dma_request_chan(port->dev, "rx"); in sprd_request_dma()
530 if (IS_ERR(sp->rx_dma.chn)) { in sprd_request_dma()
532 PTR_ERR(sp->rx_dma.chn)); in sprd_request_dma()
533 sp->rx_dma.enable = false; in sprd_request_dma()
539 struct sprd_uart_port *sp = container_of(port, struct sprd_uart_port, in sprd_stop_tx() local
543 if (sp->tx_dma.enable) { in sprd_stop_tx()
560 struct sprd_uart_port *sp = container_of(port, struct sprd_uart_port, in sprd_start_tx() local
564 if (sp->tx_dma.enable) { in sprd_start_tx()
616 struct sprd_uart_port *sp = container_of(port, struct sprd_uart_port, in sprd_rx() local
622 if (sp->rx_dma.enable) { in sprd_rx()
662 struct sprd_uart_port *sp = in sprd_handle_irq() local
674 if (ims & sp->pdata->timeout_imsr) in sprd_handle_irq()
675 serial_out(port, SPRD_ICLR, sp->pdata->timeout_iclr); in sprd_handle_irq()
681 sp->pdata->timeout_imsr)) in sprd_handle_irq()
693 struct sprd_uart_port *sp) in sprd_uart_dma_startup() argument
698 if (!(sp->rx_dma.enable || sp->tx_dma.enable)) in sprd_uart_dma_startup()
703 sp->rx_dma.enable = false; in sprd_uart_dma_startup()
704 dma_release_channel(sp->rx_dma.chn); in sprd_uart_dma_startup()
716 struct sprd_uart_port *sp; in sprd_startup() local
737 sp = container_of(port, struct sprd_uart_port, port); in sprd_startup()
738 snprintf(sp->name, sizeof(sp->name), "sprd_serial%d", port->line); in sprd_startup()
740 sprd_uart_dma_startup(port, sp); in sprd_startup()
743 IRQF_SHARED, sp->name, port); in sprd_startup()
756 ien |= SPRD_IEN_BREAK_DETECT | sp->pdata->timeout_ien; in sprd_startup()
757 if (!sp->rx_dma.enable) in sprd_startup()