Lines Matching defs:dmarx
274 struct pl011_dmarx_data dmarx;
478 uap->dmarx.chan = chan;
480 uap->dmarx.auto_poll_rate = false;
484 uap->dmarx.auto_poll_rate = false;
485 uap->dmarx.poll_rate = plat->dma_rx_poll_rate;
492 uap->dmarx.auto_poll_rate = true;
493 uap->dmarx.poll_rate = 100;
497 uap->dmarx.poll_timeout =
500 uap->dmarx.poll_timeout = 3000;
502 uap->dmarx.auto_poll_rate = of_property_read_bool(
504 if (uap->dmarx.auto_poll_rate) {
509 uap->dmarx.poll_rate = x;
511 uap->dmarx.poll_rate = 100;
514 uap->dmarx.poll_timeout = x;
516 uap->dmarx.poll_timeout = 3000;
520 dma_chan_name(uap->dmarx.chan));
528 if (uap->dmarx.chan)
529 dma_release_channel(uap->dmarx.chan);
824 struct dma_chan *rxchan = uap->dmarx.chan;
825 struct pl011_dmarx_data *dmarx = &uap->dmarx;
833 dbuf = uap->dmarx.use_buf_b ?
834 &uap->dmarx.dbuf_b : &uap->dmarx.dbuf_a;
844 uap->dmarx.running = false;
852 dmarx->cookie = dmaengine_submit(desc);
857 uap->dmarx.running = true;
876 &uap->dmarx.dbuf_b : &uap->dmarx.dbuf_a;
880 struct pl011_dmarx_data *dmarx = &uap->dmarx;
883 if (uap->dmarx.poll_rate) {
885 dmataken = dbuf->len - dmarx->last_residue;
909 if (uap->dmarx.poll_rate)
910 dmarx->last_residue = dbuf->len;
945 struct pl011_dmarx_data *dmarx = &uap->dmarx;
946 struct dma_chan *rxchan = dmarx->chan;
947 struct pl011_dmabuf *dbuf = dmarx->use_buf_b ?
948 &dmarx->dbuf_b : &dmarx->dbuf_a;
961 dmarx->cookie, &state);
968 uap->dmarx.running = false;
979 pl011_dma_rx_chars(uap, pending, dmarx->use_buf_b, true);
982 dmarx->use_buf_b = !dmarx->use_buf_b;
994 struct pl011_dmarx_data *dmarx = &uap->dmarx;
995 struct dma_chan *rxchan = dmarx->chan;
996 bool lastbuf = dmarx->use_buf_b;
997 struct pl011_dmabuf *dbuf = dmarx->use_buf_b ?
998 &dmarx->dbuf_b : &dmarx->dbuf_a;
1015 rxchan->device->device_tx_status(rxchan, dmarx->cookie, &state);
1021 uap->dmarx.running = false;
1022 dmarx->use_buf_b = !lastbuf;
1061 struct uart_amba_port *uap = from_timer(uap, t, dmarx.timer);
1063 struct pl011_dmarx_data *dmarx = &uap->dmarx;
1064 struct dma_chan *rxchan = uap->dmarx.chan;
1072 dbuf = dmarx->use_buf_b ? &uap->dmarx.dbuf_b : &uap->dmarx.dbuf_a;
1073 rxchan->device->device_tx_status(rxchan, dmarx->cookie, &state);
1074 if (likely(state.residue < dmarx->last_residue)) {
1075 dmataken = dbuf->len - dmarx->last_residue;
1076 size = dmarx->last_residue - state.residue;
1080 dmarx->last_residue = state.residue;
1081 dmarx->last_jiffies = jiffies;
1089 if (jiffies_to_msecs(jiffies - dmarx->last_jiffies)
1090 > uap->dmarx.poll_timeout) {
1098 uap->dmarx.running = false;
1100 del_timer(&uap->dmarx.timer);
1102 mod_timer(&uap->dmarx.timer,
1103 jiffies + msecs_to_jiffies(uap->dmarx.poll_rate));
1130 if (!uap->dmarx.chan)
1134 ret = pl011_dmabuf_init(uap->dmarx.chan, &uap->dmarx.dbuf_a,
1142 ret = pl011_dmabuf_init(uap->dmarx.chan, &uap->dmarx.dbuf_b,
1147 pl011_dmabuf_free(uap->dmarx.chan, &uap->dmarx.dbuf_a,
1172 if (uap->dmarx.poll_rate) {
1173 timer_setup(&uap->dmarx.timer, pl011_dma_rx_poll, 0);
1174 mod_timer(&uap->dmarx.timer,
1176 msecs_to_jiffies(uap->dmarx.poll_rate));
1177 uap->dmarx.last_residue = PL011_DMA_BUFFER_SIZE;
1178 uap->dmarx.last_jiffies = jiffies;
1212 dmaengine_terminate_all(uap->dmarx.chan);
1214 pl011_dmabuf_free(uap->dmarx.chan, &uap->dmarx.dbuf_a, DMA_FROM_DEVICE);
1215 pl011_dmabuf_free(uap->dmarx.chan, &uap->dmarx.dbuf_b, DMA_FROM_DEVICE);
1216 if (uap->dmarx.poll_rate)
1217 del_timer_sync(&uap->dmarx.timer);
1229 return uap->using_rx_dma && uap->dmarx.running;
1367 if (uap->dmarx.poll_rate) {
1368 uap->dmarx.last_jiffies = jiffies;
1369 uap->dmarx.last_residue = PL011_DMA_BUFFER_SIZE;
1370 mod_timer(&uap->dmarx.timer,
1372 msecs_to_jiffies(uap->dmarx.poll_rate));
1986 if (uap->dmarx.auto_poll_rate)
1987 uap->dmarx.poll_rate = DIV_ROUND_UP(10000000, baud);