• Home
  • Raw
  • Download

Lines Matching refs:sp

180 	struct sprd_uart_port *sp =  in sprd_stop_rx()  local
184 if (sp->rx_dma.enable) in sprd_stop_rx()
185 dmaengine_terminate_all(sp->rx_dma.chn); in sprd_stop_rx()
211 struct sprd_uart_port *sp = in sprd_stop_tx_dma() local
217 dmaengine_pause(sp->tx_dma.chn); in sprd_stop_tx_dma()
219 dmaengine_tx_status(sp->tx_dma.chn, sp->tx_dma.cookie, &state); in sprd_stop_tx_dma()
221 trans_len = state.residue - sp->tx_dma.phys_addr; in sprd_stop_tx_dma()
224 dma_unmap_single(port->dev, sp->tx_dma.phys_addr, in sprd_stop_tx_dma()
225 sp->tx_dma.trans_len, DMA_TO_DEVICE); in sprd_stop_tx_dma()
228 dmaengine_terminate_all(sp->tx_dma.chn); in sprd_stop_tx_dma()
229 sp->tx_dma.trans_len = 0; in sprd_stop_tx_dma()
234 struct sprd_uart_port *sp = in sprd_tx_buf_remap() local
238 sp->tx_dma.trans_len = in sprd_tx_buf_remap()
241 sp->tx_dma.phys_addr = dma_map_single(port->dev, in sprd_tx_buf_remap()
243 sp->tx_dma.trans_len, in sprd_tx_buf_remap()
245 return dma_mapping_error(port->dev, sp->tx_dma.phys_addr); in sprd_tx_buf_remap()
251 struct sprd_uart_port *sp = in sprd_complete_tx_dma() local
257 dma_unmap_single(port->dev, sp->tx_dma.phys_addr, in sprd_complete_tx_dma()
258 sp->tx_dma.trans_len, DMA_TO_DEVICE); in sprd_complete_tx_dma()
260 xmit->tail = (xmit->tail + sp->tx_dma.trans_len) & (UART_XMIT_SIZE - 1); in sprd_complete_tx_dma()
261 port->icount.tx += sp->tx_dma.trans_len; in sprd_complete_tx_dma()
268 sp->tx_dma.trans_len = 0; in sprd_complete_tx_dma()
305 struct sprd_uart_port *sp = in sprd_tx_dma_config() local
307 u32 burst = sp->tx_dma.trans_len > SPRD_TX_FIFO_FULL ? in sprd_tx_dma_config()
308 SPRD_TX_FIFO_FULL : sp->tx_dma.trans_len; in sprd_tx_dma_config()
317 ret = dmaengine_slave_config(sp->tx_dma.chn, &cfg); in sprd_tx_dma_config()
321 return sprd_uart_dma_submit(port, &sp->tx_dma, sp->tx_dma.trans_len, in sprd_tx_dma_config()
327 struct sprd_uart_port *sp = in sprd_start_tx_dma() local
343 if (sp->tx_dma.trans_len) in sprd_start_tx_dma()
347 sp->tx_dma.trans_len = 0; in sprd_start_tx_dma()
359 static int sprd_rx_alloc_buf(struct sprd_uart_port *sp) in sprd_rx_alloc_buf() argument
361 sp->rx_dma.virt = dma_alloc_coherent(sp->port.dev, SPRD_UART_RX_SIZE, in sprd_rx_alloc_buf()
362 &sp->rx_dma.phys_addr, GFP_KERNEL); in sprd_rx_alloc_buf()
363 if (!sp->rx_dma.virt) in sprd_rx_alloc_buf()
369 static void sprd_rx_free_buf(struct sprd_uart_port *sp) in sprd_rx_free_buf() argument
371 if (sp->rx_dma.virt) in sprd_rx_free_buf()
372 dma_free_coherent(sp->port.dev, SPRD_UART_RX_SIZE, in sprd_rx_free_buf()
373 sp->rx_dma.virt, sp->rx_dma.phys_addr); in sprd_rx_free_buf()
379 struct sprd_uart_port *sp = in sprd_rx_dma_config() local
388 return dmaengine_slave_config(sp->rx_dma.chn, &cfg); in sprd_rx_dma_config()
393 struct sprd_uart_port *sp = in sprd_uart_dma_rx() local
397 port->icount.rx += sp->rx_dma.trans_len; in sprd_uart_dma_rx()
398 tty_insert_flip_string(tty, sp->rx_buf_tail, sp->rx_dma.trans_len); in sprd_uart_dma_rx()
404 struct sprd_uart_port *sp = in sprd_uart_dma_irq() local
409 status = dmaengine_tx_status(sp->rx_dma.chn, in sprd_uart_dma_irq()
410 sp->rx_dma.cookie, &state); in sprd_uart_dma_irq()
414 if (!state.residue && sp->pos == sp->rx_dma.phys_addr) in sprd_uart_dma_irq()
418 sp->rx_dma.trans_len = SPRD_UART_RX_SIZE + in sprd_uart_dma_irq()
419 sp->rx_dma.phys_addr - sp->pos; in sprd_uart_dma_irq()
420 sp->pos = sp->rx_dma.phys_addr; in sprd_uart_dma_irq()
422 sp->rx_dma.trans_len = state.residue - sp->pos; in sprd_uart_dma_irq()
423 sp->pos = state.residue; in sprd_uart_dma_irq()
427 sp->rx_buf_tail += sp->rx_dma.trans_len; in sprd_uart_dma_irq()
433 struct sprd_uart_port *sp = in sprd_complete_rx_dma() local
441 status = dmaengine_tx_status(sp->rx_dma.chn, in sprd_complete_rx_dma()
442 sp->rx_dma.cookie, &state); in sprd_complete_rx_dma()
449 if (sp->pos != sp->rx_dma.phys_addr) { in sprd_complete_rx_dma()
450 sp->rx_dma.trans_len = SPRD_UART_RX_SIZE + in sprd_complete_rx_dma()
451 sp->rx_dma.phys_addr - sp->pos; in sprd_complete_rx_dma()
453 sp->rx_buf_tail += sp->rx_dma.trans_len; in sprd_complete_rx_dma()
464 struct sprd_uart_port *sp = in sprd_start_dma_rx() local
468 if (!sp->rx_dma.enable) in sprd_start_dma_rx()
471 sp->pos = sp->rx_dma.phys_addr; in sprd_start_dma_rx()
472 sp->rx_buf_tail = sp->rx_dma.virt; in sprd_start_dma_rx()
478 return sprd_uart_dma_submit(port, &sp->rx_dma, SPRD_UART_RX_SIZE, in sprd_start_dma_rx()
484 struct sprd_uart_port *sp = in sprd_release_dma() local
489 if (sp->rx_dma.enable) in sprd_release_dma()
490 dma_release_channel(sp->rx_dma.chn); in sprd_release_dma()
492 if (sp->tx_dma.enable) in sprd_release_dma()
493 dma_release_channel(sp->tx_dma.chn); in sprd_release_dma()
495 sp->tx_dma.enable = false; in sprd_release_dma()
496 sp->rx_dma.enable = false; in sprd_release_dma()
501 struct sprd_uart_port *sp = in sprd_request_dma() local
504 sp->tx_dma.enable = true; in sprd_request_dma()
505 sp->rx_dma.enable = true; in sprd_request_dma()
507 sp->tx_dma.chn = dma_request_chan(port->dev, "tx"); in sprd_request_dma()
508 if (IS_ERR(sp->tx_dma.chn)) { in sprd_request_dma()
510 PTR_ERR(sp->tx_dma.chn)); in sprd_request_dma()
511 sp->tx_dma.enable = false; in sprd_request_dma()
514 sp->rx_dma.chn = dma_request_chan(port->dev, "rx"); in sprd_request_dma()
515 if (IS_ERR(sp->rx_dma.chn)) { in sprd_request_dma()
517 PTR_ERR(sp->rx_dma.chn)); in sprd_request_dma()
518 sp->rx_dma.enable = false; in sprd_request_dma()
524 struct sprd_uart_port *sp = container_of(port, struct sprd_uart_port, in sprd_stop_tx() local
528 if (sp->tx_dma.enable) { in sprd_stop_tx()
545 struct sprd_uart_port *sp = container_of(port, struct sprd_uart_port, in sprd_start_tx() local
549 if (sp->tx_dma.enable) { in sprd_start_tx()
601 struct sprd_uart_port *sp = container_of(port, struct sprd_uart_port, in sprd_rx() local
606 if (sp->rx_dma.enable) { in sprd_rx()
698 struct sprd_uart_port *sp) in sprd_uart_dma_startup() argument
703 if (!(sp->rx_dma.enable || sp->tx_dma.enable)) in sprd_uart_dma_startup()
708 sp->rx_dma.enable = false; in sprd_uart_dma_startup()
709 dma_release_channel(sp->rx_dma.chn); in sprd_uart_dma_startup()
721 struct sprd_uart_port *sp; in sprd_startup() local
742 sp = container_of(port, struct sprd_uart_port, port); in sprd_startup()
743 snprintf(sp->name, sizeof(sp->name), "sprd_serial%d", port->line); in sprd_startup()
745 sprd_uart_dma_startup(port, sp); in sprd_startup()
748 IRQF_SHARED, sp->name, port); in sprd_startup()
762 if (!sp->rx_dma.enable) in sprd_startup()