Lines Matching refs:dmarx

277 	struct pl011_dmarx_data dmarx;  member
486 uap->dmarx.chan = chan; in pl011_dma_probe()
488 uap->dmarx.auto_poll_rate = false; in pl011_dma_probe()
492 uap->dmarx.auto_poll_rate = false; in pl011_dma_probe()
493 uap->dmarx.poll_rate = plat->dma_rx_poll_rate; in pl011_dma_probe()
500 uap->dmarx.auto_poll_rate = true; in pl011_dma_probe()
501 uap->dmarx.poll_rate = 100; in pl011_dma_probe()
505 uap->dmarx.poll_timeout = in pl011_dma_probe()
508 uap->dmarx.poll_timeout = 3000; in pl011_dma_probe()
510 uap->dmarx.auto_poll_rate = of_property_read_bool( in pl011_dma_probe()
512 if (uap->dmarx.auto_poll_rate) { in pl011_dma_probe()
517 uap->dmarx.poll_rate = x; in pl011_dma_probe()
519 uap->dmarx.poll_rate = 100; in pl011_dma_probe()
522 uap->dmarx.poll_timeout = x; in pl011_dma_probe()
524 uap->dmarx.poll_timeout = 3000; in pl011_dma_probe()
528 dma_chan_name(uap->dmarx.chan)); in pl011_dma_probe()
536 if (uap->dmarx.chan) in pl011_dma_remove()
537 dma_release_channel(uap->dmarx.chan); in pl011_dma_remove()
833 struct dma_chan *rxchan = uap->dmarx.chan; in pl011_dma_rx_trigger_dma()
834 struct pl011_dmarx_data *dmarx = &uap->dmarx; in pl011_dma_rx_trigger_dma() local
842 sgbuf = uap->dmarx.use_buf_b ? in pl011_dma_rx_trigger_dma()
843 &uap->dmarx.sgbuf_b : &uap->dmarx.sgbuf_a; in pl011_dma_rx_trigger_dma()
853 uap->dmarx.running = false; in pl011_dma_rx_trigger_dma()
861 dmarx->cookie = dmaengine_submit(desc); in pl011_dma_rx_trigger_dma()
866 uap->dmarx.running = true; in pl011_dma_rx_trigger_dma()
885 &uap->dmarx.sgbuf_b : &uap->dmarx.sgbuf_a; in pl011_dma_rx_chars()
889 struct pl011_dmarx_data *dmarx = &uap->dmarx; in pl011_dma_rx_chars() local
892 if (uap->dmarx.poll_rate) { in pl011_dma_rx_chars()
894 dmataken = sgbuf->sg.length - dmarx->last_residue; in pl011_dma_rx_chars()
918 if (uap->dmarx.poll_rate) in pl011_dma_rx_chars()
919 dmarx->last_residue = sgbuf->sg.length; in pl011_dma_rx_chars()
954 struct pl011_dmarx_data *dmarx = &uap->dmarx; in pl011_dma_rx_irq() local
955 struct dma_chan *rxchan = dmarx->chan; in pl011_dma_rx_irq()
956 struct pl011_sgbuf *sgbuf = dmarx->use_buf_b ? in pl011_dma_rx_irq()
957 &dmarx->sgbuf_b : &dmarx->sgbuf_a; in pl011_dma_rx_irq()
970 dmarx->cookie, &state); in pl011_dma_rx_irq()
977 uap->dmarx.running = false; in pl011_dma_rx_irq()
988 pl011_dma_rx_chars(uap, pending, dmarx->use_buf_b, true); in pl011_dma_rx_irq()
991 dmarx->use_buf_b = !dmarx->use_buf_b; in pl011_dma_rx_irq()
1003 struct pl011_dmarx_data *dmarx = &uap->dmarx; in pl011_dma_rx_callback() local
1004 struct dma_chan *rxchan = dmarx->chan; in pl011_dma_rx_callback()
1005 bool lastbuf = dmarx->use_buf_b; in pl011_dma_rx_callback()
1006 struct pl011_sgbuf *sgbuf = dmarx->use_buf_b ? in pl011_dma_rx_callback()
1007 &dmarx->sgbuf_b : &dmarx->sgbuf_a; in pl011_dma_rx_callback()
1024 rxchan->device->device_tx_status(rxchan, dmarx->cookie, &state); in pl011_dma_rx_callback()
1030 uap->dmarx.running = false; in pl011_dma_rx_callback()
1031 dmarx->use_buf_b = !lastbuf; in pl011_dma_rx_callback()
1067 struct uart_amba_port *uap = from_timer(uap, t, dmarx.timer); in pl011_dma_rx_poll()
1069 struct pl011_dmarx_data *dmarx = &uap->dmarx; in pl011_dma_rx_poll() local
1070 struct dma_chan *rxchan = uap->dmarx.chan; in pl011_dma_rx_poll()
1078 sgbuf = dmarx->use_buf_b ? &uap->dmarx.sgbuf_b : &uap->dmarx.sgbuf_a; in pl011_dma_rx_poll()
1079 rxchan->device->device_tx_status(rxchan, dmarx->cookie, &state); in pl011_dma_rx_poll()
1080 if (likely(state.residue < dmarx->last_residue)) { in pl011_dma_rx_poll()
1081 dmataken = sgbuf->sg.length - dmarx->last_residue; in pl011_dma_rx_poll()
1082 size = dmarx->last_residue - state.residue; in pl011_dma_rx_poll()
1086 dmarx->last_residue = state.residue; in pl011_dma_rx_poll()
1087 dmarx->last_jiffies = jiffies; in pl011_dma_rx_poll()
1095 if (jiffies_to_msecs(jiffies - dmarx->last_jiffies) in pl011_dma_rx_poll()
1096 > uap->dmarx.poll_timeout) { in pl011_dma_rx_poll()
1104 uap->dmarx.running = false; in pl011_dma_rx_poll()
1106 del_timer(&uap->dmarx.timer); in pl011_dma_rx_poll()
1108 mod_timer(&uap->dmarx.timer, in pl011_dma_rx_poll()
1109 jiffies + msecs_to_jiffies(uap->dmarx.poll_rate)); in pl011_dma_rx_poll()
1136 if (!uap->dmarx.chan) in pl011_dma_startup()
1140 ret = pl011_sgbuf_init(uap->dmarx.chan, &uap->dmarx.sgbuf_a, in pl011_dma_startup()
1148 ret = pl011_sgbuf_init(uap->dmarx.chan, &uap->dmarx.sgbuf_b, in pl011_dma_startup()
1153 pl011_sgbuf_free(uap->dmarx.chan, &uap->dmarx.sgbuf_a, in pl011_dma_startup()
1178 if (uap->dmarx.poll_rate) { in pl011_dma_startup()
1179 timer_setup(&uap->dmarx.timer, pl011_dma_rx_poll, 0); in pl011_dma_startup()
1180 mod_timer(&uap->dmarx.timer, in pl011_dma_startup()
1182 msecs_to_jiffies(uap->dmarx.poll_rate)); in pl011_dma_startup()
1183 uap->dmarx.last_residue = PL011_DMA_BUFFER_SIZE; in pl011_dma_startup()
1184 uap->dmarx.last_jiffies = jiffies; in pl011_dma_startup()
1217 dmaengine_terminate_all(uap->dmarx.chan); in pl011_dma_shutdown()
1219 pl011_sgbuf_free(uap->dmarx.chan, &uap->dmarx.sgbuf_a, DMA_FROM_DEVICE); in pl011_dma_shutdown()
1220 pl011_sgbuf_free(uap->dmarx.chan, &uap->dmarx.sgbuf_b, DMA_FROM_DEVICE); in pl011_dma_shutdown()
1221 if (uap->dmarx.poll_rate) in pl011_dma_shutdown()
1222 del_timer_sync(&uap->dmarx.timer); in pl011_dma_shutdown()
1234 return uap->using_rx_dma && uap->dmarx.running; in pl011_dma_rx_running()
1367 if (uap->dmarx.poll_rate) { in pl011_rx_chars()
1368 uap->dmarx.last_jiffies = jiffies; in pl011_rx_chars()
1369 uap->dmarx.last_residue = PL011_DMA_BUFFER_SIZE; in pl011_rx_chars()
1370 mod_timer(&uap->dmarx.timer, in pl011_rx_chars()
1372 msecs_to_jiffies(uap->dmarx.poll_rate)); in pl011_rx_chars()
1971 if (uap->dmarx.auto_poll_rate) in pl011_set_termios()
1972 uap->dmarx.poll_rate = DIV_ROUND_UP(10000000, baud); in pl011_set_termios()