Lines Matching refs:sport

48 int sport_set_multichannel(struct sport_device *sport,  in sport_set_multichannel()  argument
54 if ((sport->regs->tcr1 & TSPEN) || (sport->regs->rcr1 & RSPEN)) in sport_set_multichannel()
64 sport->regs->mcmc1 = ((tdm_count>>3)-1) << 12; in sport_set_multichannel()
65 sport->regs->mcmc2 = FRAME_DELAY | MCMEN | \ in sport_set_multichannel()
68 sport->regs->mtcs0 = tx_mask; in sport_set_multichannel()
69 sport->regs->mrcs0 = rx_mask; in sport_set_multichannel()
70 sport->regs->mtcs1 = 0; in sport_set_multichannel()
71 sport->regs->mrcs1 = 0; in sport_set_multichannel()
72 sport->regs->mtcs2 = 0; in sport_set_multichannel()
73 sport->regs->mrcs2 = 0; in sport_set_multichannel()
74 sport->regs->mtcs3 = 0; in sport_set_multichannel()
75 sport->regs->mrcs3 = 0; in sport_set_multichannel()
77 sport->regs->mcmc1 = 0; in sport_set_multichannel()
78 sport->regs->mcmc2 = 0; in sport_set_multichannel()
80 sport->regs->mtcs0 = 0; in sport_set_multichannel()
81 sport->regs->mrcs0 = 0; in sport_set_multichannel()
84 sport->regs->mtcs1 = 0; sport->regs->mtcs2 = 0; sport->regs->mtcs3 = 0; in sport_set_multichannel()
85 sport->regs->mrcs1 = 0; sport->regs->mrcs2 = 0; sport->regs->mrcs3 = 0; in sport_set_multichannel()
93 int sport_config_rx(struct sport_device *sport, unsigned int rcr1, in sport_config_rx() argument
96 if ((sport->regs->tcr1 & TSPEN) || (sport->regs->rcr1 & RSPEN)) in sport_config_rx()
99 sport->regs->rcr1 = rcr1; in sport_config_rx()
100 sport->regs->rcr2 = rcr2; in sport_config_rx()
101 sport->regs->rclkdiv = clkdiv; in sport_config_rx()
102 sport->regs->rfsdiv = fsdiv; in sport_config_rx()
110 int sport_config_tx(struct sport_device *sport, unsigned int tcr1, in sport_config_tx() argument
113 if ((sport->regs->tcr1 & TSPEN) || (sport->regs->rcr1 & RSPEN)) in sport_config_tx()
116 sport->regs->tcr1 = tcr1; in sport_config_tx()
117 sport->regs->tcr2 = tcr2; in sport_config_tx()
118 sport->regs->tclkdiv = clkdiv; in sport_config_tx()
119 sport->regs->tfsdiv = fsdiv; in sport_config_tx()
155 static int sport_start(struct sport_device *sport) in sport_start() argument
157 enable_dma(sport->dma_rx_chan); in sport_start()
158 enable_dma(sport->dma_tx_chan); in sport_start()
159 sport->regs->rcr1 |= RSPEN; in sport_start()
160 sport->regs->tcr1 |= TSPEN; in sport_start()
166 static int sport_stop(struct sport_device *sport) in sport_stop() argument
168 sport->regs->tcr1 &= ~TSPEN; in sport_stop()
169 sport->regs->rcr1 &= ~RSPEN; in sport_stop()
172 disable_dma(sport->dma_rx_chan); in sport_stop()
173 disable_dma(sport->dma_tx_chan); in sport_stop()
177 static inline int sport_hook_rx_dummy(struct sport_device *sport) in sport_hook_rx_dummy() argument
182 if (WARN_ON(!sport->dummy_rx_desc) || in sport_hook_rx_dummy()
183 WARN_ON(sport->curr_rx_desc == sport->dummy_rx_desc)) in sport_hook_rx_dummy()
187 sport->dummy_rx_desc->next_desc_addr = sport->dummy_rx_desc + 1; in sport_hook_rx_dummy()
190 desc = get_dma_next_desc_ptr(sport->dma_rx_chan); in sport_hook_rx_dummy()
193 desc->x_count = sport->dummy_count / 2; in sport_hook_rx_dummy()
195 desc->next_desc_addr = sport->dummy_rx_desc; in sport_hook_rx_dummy()
198 while ((get_dma_curr_desc_ptr(sport->dma_rx_chan) - in sport_hook_rx_dummy()
199 sizeof(struct dmasg)) != sport->dummy_rx_desc) in sport_hook_rx_dummy()
201 sport->curr_rx_desc = sport->dummy_rx_desc; in sport_hook_rx_dummy()
208 static inline int sport_rx_dma_start(struct sport_device *sport, int dummy) in sport_rx_dma_start() argument
211 sport->dummy_rx_desc->next_desc_addr = sport->dummy_rx_desc; in sport_rx_dma_start()
212 sport->curr_rx_desc = sport->dummy_rx_desc; in sport_rx_dma_start()
214 sport->curr_rx_desc = sport->dma_rx_desc; in sport_rx_dma_start()
216 set_dma_next_desc_addr(sport->dma_rx_chan, sport->curr_rx_desc); in sport_rx_dma_start()
217 set_dma_x_count(sport->dma_rx_chan, 0); in sport_rx_dma_start()
218 set_dma_x_modify(sport->dma_rx_chan, 0); in sport_rx_dma_start()
219 set_dma_config(sport->dma_rx_chan, (DMAFLOW_LARGE | NDSIZE_9 | \ in sport_rx_dma_start()
221 set_dma_curr_addr(sport->dma_rx_chan, sport->curr_rx_desc->start_addr); in sport_rx_dma_start()
227 static inline int sport_tx_dma_start(struct sport_device *sport, int dummy) in sport_tx_dma_start() argument
230 sport->dummy_tx_desc->next_desc_addr = sport->dummy_tx_desc; in sport_tx_dma_start()
231 sport->curr_tx_desc = sport->dummy_tx_desc; in sport_tx_dma_start()
233 sport->curr_tx_desc = sport->dma_tx_desc; in sport_tx_dma_start()
235 set_dma_next_desc_addr(sport->dma_tx_chan, sport->curr_tx_desc); in sport_tx_dma_start()
236 set_dma_x_count(sport->dma_tx_chan, 0); in sport_tx_dma_start()
237 set_dma_x_modify(sport->dma_tx_chan, 0); in sport_tx_dma_start()
238 set_dma_config(sport->dma_tx_chan, in sport_tx_dma_start()
240 set_dma_curr_addr(sport->dma_tx_chan, sport->curr_tx_desc->start_addr); in sport_tx_dma_start()
246 int sport_rx_start(struct sport_device *sport) in sport_rx_start() argument
250 if (sport->rx_run) in sport_rx_start()
252 if (sport->tx_run) { in sport_rx_start()
254 if (WARN_ON(!sport->dma_rx_desc) || in sport_rx_start()
255 WARN_ON(sport->curr_rx_desc != sport->dummy_rx_desc)) in sport_rx_start()
258 while ((get_dma_curr_desc_ptr(sport->dma_rx_chan) - in sport_rx_start()
259 sizeof(struct dmasg)) != sport->dummy_rx_desc) in sport_rx_start()
261 sport->dummy_rx_desc->next_desc_addr = sport->dma_rx_desc; in sport_rx_start()
263 sport->curr_rx_desc = sport->dma_rx_desc; in sport_rx_start()
265 sport_tx_dma_start(sport, 1); in sport_rx_start()
266 sport_rx_dma_start(sport, 0); in sport_rx_start()
267 sport_start(sport); in sport_rx_start()
270 sport->rx_run = 1; in sport_rx_start()
276 int sport_rx_stop(struct sport_device *sport) in sport_rx_stop() argument
280 if (!sport->rx_run) in sport_rx_stop()
282 if (sport->tx_run) { in sport_rx_stop()
284 sport_hook_rx_dummy(sport); in sport_rx_stop()
287 sport_stop(sport); in sport_rx_stop()
288 sport->curr_rx_desc = NULL; in sport_rx_stop()
289 sport->curr_tx_desc = NULL; in sport_rx_stop()
292 sport->rx_run = 0; in sport_rx_stop()
298 static inline int sport_hook_tx_dummy(struct sport_device *sport) in sport_hook_tx_dummy() argument
303 if (WARN_ON(!sport->dummy_tx_desc) || in sport_hook_tx_dummy()
304 WARN_ON(sport->curr_tx_desc == sport->dummy_tx_desc)) in sport_hook_tx_dummy()
307 sport->dummy_tx_desc->next_desc_addr = sport->dummy_tx_desc + 1; in sport_hook_tx_dummy()
311 desc = get_dma_next_desc_ptr(sport->dma_tx_chan); in sport_hook_tx_dummy()
314 desc->x_count = sport->dummy_count / 2; in sport_hook_tx_dummy()
316 desc->next_desc_addr = sport->dummy_tx_desc; in sport_hook_tx_dummy()
319 while ((get_dma_curr_desc_ptr(sport->dma_tx_chan) - \ in sport_hook_tx_dummy()
320 sizeof(struct dmasg)) != sport->dummy_tx_desc) in sport_hook_tx_dummy()
322 sport->curr_tx_desc = sport->dummy_tx_desc; in sport_hook_tx_dummy()
329 int sport_tx_start(struct sport_device *sport) in sport_tx_start() argument
333 sport->tx_run, sport->rx_run); in sport_tx_start()
334 if (sport->tx_run) in sport_tx_start()
336 if (sport->rx_run) { in sport_tx_start()
337 if (WARN_ON(!sport->dma_tx_desc) || in sport_tx_start()
338 WARN_ON(sport->curr_tx_desc != sport->dummy_tx_desc)) in sport_tx_start()
342 while ((get_dma_curr_desc_ptr(sport->dma_tx_chan) - in sport_tx_start()
343 sizeof(struct dmasg)) != sport->dummy_tx_desc) in sport_tx_start()
345 sport->dummy_tx_desc->next_desc_addr = sport->dma_tx_desc; in sport_tx_start()
347 sport->curr_tx_desc = sport->dma_tx_desc; in sport_tx_start()
350 sport_tx_dma_start(sport, 0); in sport_tx_start()
352 sport_rx_dma_start(sport, 1); in sport_tx_start()
353 sport_start(sport); in sport_tx_start()
355 sport->tx_run = 1; in sport_tx_start()
360 int sport_tx_stop(struct sport_device *sport) in sport_tx_stop() argument
362 if (!sport->tx_run) in sport_tx_stop()
364 if (sport->rx_run) { in sport_tx_stop()
366 sport_hook_tx_dummy(sport); in sport_tx_stop()
369 sport_stop(sport); in sport_tx_stop()
370 sport->curr_rx_desc = NULL; in sport_tx_stop()
371 sport->curr_tx_desc = NULL; in sport_tx_stop()
374 sport->tx_run = 0; in sport_tx_stop()
393 int sport_config_rx_dma(struct sport_device *sport, void *buf, in sport_config_rx_dma() argument
404 x_count = fragsize / sport->wdsize; in sport_config_rx_dma()
427 if (sport->dma_rx_desc) in sport_config_rx_dma()
428 dma_free_coherent(NULL, sport->rx_desc_bytes, in sport_config_rx_dma()
429 sport->dma_rx_desc, 0); in sport_config_rx_dma()
432 sport->dma_rx_desc = dma_alloc_coherent(NULL, \ in sport_config_rx_dma()
434 sport->rx_desc_bytes = fragcount * sizeof(struct dmasg); in sport_config_rx_dma()
436 if (!sport->dma_rx_desc) { in sport_config_rx_dma()
441 sport->rx_buf = buf; in sport_config_rx_dma()
442 sport->rx_fragsize = fragsize; in sport_config_rx_dma()
443 sport->rx_frags = fragcount; in sport_config_rx_dma()
445 cfg = 0x7000 | DI_EN | compute_wdsize(sport->wdsize) | WNR | \ in sport_config_rx_dma()
451 setup_desc(sport->dma_rx_desc, buf, fragcount, fragsize, in sport_config_rx_dma()
452 cfg|DMAEN, x_count, y_count, sport->wdsize); in sport_config_rx_dma()
458 int sport_config_tx_dma(struct sport_device *sport, void *buf, \ in sport_config_tx_dma() argument
469 x_count = fragsize/sport->wdsize; in sport_config_tx_dma()
493 if (sport->dma_tx_desc) { in sport_config_tx_dma()
494 dma_free_coherent(NULL, sport->tx_desc_bytes, \ in sport_config_tx_dma()
495 sport->dma_tx_desc, 0); in sport_config_tx_dma()
498 sport->dma_tx_desc = dma_alloc_coherent(NULL, \ in sport_config_tx_dma()
500 sport->tx_desc_bytes = fragcount * sizeof(struct dmasg); in sport_config_tx_dma()
501 if (!sport->dma_tx_desc) { in sport_config_tx_dma()
506 sport->tx_buf = buf; in sport_config_tx_dma()
507 sport->tx_fragsize = fragsize; in sport_config_tx_dma()
508 sport->tx_frags = fragcount; in sport_config_tx_dma()
509 cfg = 0x7000 | DI_EN | compute_wdsize(sport->wdsize) | \ in sport_config_tx_dma()
515 setup_desc(sport->dma_tx_desc, buf, fragcount, fragsize, in sport_config_tx_dma()
516 cfg|DMAEN, x_count, y_count, sport->wdsize); in sport_config_tx_dma()
524 static int sport_config_rx_dummy(struct sport_device *sport) in sport_config_rx_dummy() argument
541 sport->dummy_rx_desc = desc; in sport_config_rx_dummy()
542 desc->start_addr = (unsigned long)sport->dummy_buf; in sport_config_rx_dummy()
543 config = DMAFLOW_LARGE | NDSIZE_9 | compute_wdsize(sport->wdsize) in sport_config_rx_dummy()
546 desc->x_count = sport->dummy_count/sport->wdsize; in sport_config_rx_dummy()
547 desc->x_modify = sport->wdsize; in sport_config_rx_dummy()
556 static int sport_config_tx_dummy(struct sport_device *sport) in sport_config_tx_dummy() argument
574 sport->dummy_tx_desc = desc; in sport_config_tx_dummy()
575 desc->start_addr = (unsigned long)sport->dummy_buf + \ in sport_config_tx_dummy()
576 sport->dummy_count; in sport_config_tx_dummy()
578 compute_wdsize(sport->wdsize) | DMAEN; in sport_config_tx_dummy()
580 desc->x_count = sport->dummy_count/sport->wdsize; in sport_config_tx_dummy()
581 desc->x_modify = sport->wdsize; in sport_config_tx_dummy()
590 unsigned long sport_curr_offset_rx(struct sport_device *sport) in sport_curr_offset_rx() argument
592 unsigned long curr = get_dma_curr_addr(sport->dma_rx_chan); in sport_curr_offset_rx()
594 return (unsigned char *)curr - sport->rx_buf; in sport_curr_offset_rx()
598 unsigned long sport_curr_offset_tx(struct sport_device *sport) in sport_curr_offset_tx() argument
600 unsigned long curr = get_dma_curr_addr(sport->dma_tx_chan); in sport_curr_offset_tx()
602 return (unsigned char *)curr - sport->tx_buf; in sport_curr_offset_tx()
606 void sport_incfrag(struct sport_device *sport, int *frag, int tx) in sport_incfrag() argument
609 if (tx == 1 && *frag == sport->tx_frags) in sport_incfrag()
612 if (tx == 0 && *frag == sport->rx_frags) in sport_incfrag()
617 void sport_decfrag(struct sport_device *sport, int *frag, int tx) in sport_decfrag() argument
621 *frag = sport->tx_frags; in sport_decfrag()
624 *frag = sport->rx_frags; in sport_decfrag()
628 static int sport_check_status(struct sport_device *sport, in sport_check_status() argument
637 status = sport->regs->stat; in sport_check_status()
639 sport->regs->stat = (status & (TOVF|TUVF|ROVF|RUVF)); in sport_check_status()
646 status = get_dma_curr_irqstat(sport->dma_rx_chan); in sport_check_status()
648 clear_dma_irqstat(sport->dma_rx_chan); in sport_check_status()
655 status = get_dma_curr_irqstat(sport->dma_tx_chan); in sport_check_status()
657 clear_dma_irqstat(sport->dma_tx_chan); in sport_check_status()
665 int sport_dump_stat(struct sport_device *sport, char *buf, size_t len) in sport_dump_stat() argument
672 sport->regs->stat, in sport_dump_stat()
673 sport->dma_rx_chan, in sport_dump_stat()
674 get_dma_curr_irqstat(sport->dma_rx_chan), in sport_dump_stat()
675 sport->dma_tx_chan, in sport_dump_stat()
676 get_dma_curr_irqstat(sport->dma_tx_chan)); in sport_dump_stat()
684 sport->curr_rx_desc, sport->curr_tx_desc, in sport_dump_stat()
685 sport->dma_rx_desc, sport->dma_tx_desc, in sport_dump_stat()
686 sport->dummy_rx_desc, sport->dummy_tx_desc); in sport_dump_stat()
694 struct sport_device *sport = dev_id; in rx_handler() local
697 sport_check_status(sport, NULL, &rx_stat, NULL); in rx_handler()
701 if (sport->rx_callback) { in rx_handler()
702 sport->rx_callback(sport->rx_data); in rx_handler()
712 struct sport_device *sport = dev_id; in tx_handler() local
714 sport_check_status(sport, NULL, NULL, &tx_stat); in tx_handler()
719 if (sport->tx_callback) { in tx_handler()
720 sport->tx_callback(sport->tx_data); in tx_handler()
730 struct sport_device *sport = dev_id; in err_handler() local
733 if (sport_check_status(sport, &status, NULL, NULL)) { in err_handler()
745 disable_dma(sport->dma_tx_chan); in err_handler()
746 if (sport->tx_run) in err_handler()
747 sport_tx_dma_start(sport, 0); in err_handler()
749 sport_tx_dma_start(sport, 1); in err_handler()
750 enable_dma(sport->dma_tx_chan); in err_handler()
752 disable_dma(sport->dma_rx_chan); in err_handler()
753 if (sport->rx_run) in err_handler()
754 sport_rx_dma_start(sport, 0); in err_handler()
756 sport_rx_dma_start(sport, 1); in err_handler()
757 enable_dma(sport->dma_rx_chan); in err_handler()
760 status = sport->regs->stat; in err_handler()
762 sport->regs->stat = (status & (TOVF|TUVF|ROVF|RUVF)); in err_handler()
765 if (sport->err_callback) in err_handler()
766 sport->err_callback(sport->err_data); in err_handler()
771 int sport_set_rx_callback(struct sport_device *sport, in sport_set_rx_callback() argument
776 sport->rx_callback = rx_callback; in sport_set_rx_callback()
777 sport->rx_data = rx_data; in sport_set_rx_callback()
783 int sport_set_tx_callback(struct sport_device *sport, in sport_set_tx_callback() argument
788 sport->tx_callback = tx_callback; in sport_set_tx_callback()
789 sport->tx_data = tx_data; in sport_set_tx_callback()
795 int sport_set_err_callback(struct sport_device *sport, in sport_set_err_callback() argument
800 sport->err_callback = err_callback; in sport_set_err_callback()
801 sport->err_data = err_data; in sport_set_err_callback()
859 struct sport_device *sport; in sport_init() local
878 sport = kzalloc(sizeof(*sport), GFP_KERNEL); in sport_init()
879 if (!sport) { in sport_init()
884 sport->num = param.num; in sport_init()
885 sport->dma_rx_chan = param.dma_rx_chan; in sport_init()
886 sport->dma_tx_chan = param.dma_tx_chan; in sport_init()
887 sport->err_irq = param.err_irq; in sport_init()
888 sport->regs = param.regs; in sport_init()
889 sport->pin_req = param.pin_req; in sport_init()
891 if (request_dma(sport->dma_rx_chan, "SPORT RX Data") == -EBUSY) { in sport_init()
892 dev_err(dev, "failed to request RX dma %d\n", sport->dma_rx_chan); in sport_init()
895 if (set_dma_callback(sport->dma_rx_chan, rx_handler, sport) != 0) { in sport_init()
896 dev_err(dev, "failed to request RX irq %d\n", sport->dma_rx_chan); in sport_init()
900 if (request_dma(sport->dma_tx_chan, "SPORT TX Data") == -EBUSY) { in sport_init()
901 dev_err(dev, "failed to request TX dma %d\n", sport->dma_tx_chan); in sport_init()
905 if (set_dma_callback(sport->dma_tx_chan, tx_handler, sport) != 0) { in sport_init()
906 dev_err(dev, "failed to request TX irq %d\n", sport->dma_tx_chan); in sport_init()
910 if (request_irq(sport->err_irq, err_handler, IRQF_SHARED, "SPORT err", in sport_init()
911 sport) < 0) { in sport_init()
912 dev_err(dev, "failed to request err irq %d\n", sport->err_irq); in sport_init()
917 sport->dma_rx_chan, sport->dma_tx_chan, in sport_init()
918 sport->err_irq, sport->regs); in sport_init()
920 sport->wdsize = param.wdsize; in sport_init()
921 sport->dummy_count = param.dummy_count; in sport_init()
923 sport->private_data = kzalloc(priv_size, GFP_KERNEL); in sport_init()
924 if (!sport->private_data) { in sport_init()
930 sport->dummy_buf = l1_data_sram_zalloc(param.dummy_count * 2); in sport_init()
932 sport->dummy_buf = kzalloc(param.dummy_count * 2, GFP_KERNEL); in sport_init()
933 if (sport->dummy_buf == NULL) { in sport_init()
938 ret = sport_config_rx_dummy(sport); in sport_init()
943 ret = sport_config_tx_dummy(sport); in sport_init()
949 platform_set_drvdata(pdev, sport); in sport_init()
951 return sport; in sport_init()
954 l1_data_sram_free(sport->dummy_rx_desc); in sport_init()
957 sport->dummy_rx_desc, 0); in sport_init()
960 l1_data_sram_free(sport->dummy_buf); in sport_init()
962 kfree(sport->dummy_buf); in sport_init()
964 kfree(sport->private_data); in sport_init()
966 free_irq(sport->err_irq, sport); in sport_init()
968 free_dma(sport->dma_tx_chan); in sport_init()
970 free_dma(sport->dma_rx_chan); in sport_init()
972 kfree(sport); in sport_init()
979 void sport_done(struct sport_device *sport) in sport_done() argument
981 if (sport == NULL) in sport_done()
984 sport_stop(sport); in sport_done()
985 if (sport->dma_rx_desc) in sport_done()
986 dma_free_coherent(NULL, sport->rx_desc_bytes, in sport_done()
987 sport->dma_rx_desc, 0); in sport_done()
988 if (sport->dma_tx_desc) in sport_done()
989 dma_free_coherent(NULL, sport->tx_desc_bytes, in sport_done()
990 sport->dma_tx_desc, 0); in sport_done()
993 l1_data_sram_free(sport->dummy_rx_desc); in sport_done()
994 l1_data_sram_free(sport->dummy_tx_desc); in sport_done()
995 l1_data_sram_free(sport->dummy_buf); in sport_done()
998 sport->dummy_rx_desc, 0); in sport_done()
1000 sport->dummy_tx_desc, 0); in sport_done()
1001 kfree(sport->dummy_buf); in sport_done()
1003 free_dma(sport->dma_rx_chan); in sport_done()
1004 free_dma(sport->dma_tx_chan); in sport_done()
1005 free_irq(sport->err_irq, sport); in sport_done()
1007 kfree(sport->private_data); in sport_done()
1008 peripheral_free_list(sport->pin_req); in sport_done()
1009 kfree(sport); in sport_done()
1018 int sport_send_and_recv(struct sport_device *sport, u8 *out_data, \ in sport_send_and_recv() argument
1030 sport->regs->tcr1, sport->regs->tcr2, in sport_send_and_recv()
1031 sport->regs->tclkdiv, sport->regs->tfsdiv, in sport_send_and_recv()
1032 sport->regs->mcmc1, sport->regs->mcmc2); in sport_send_and_recv()
1037 set_dma_start_addr(sport->dma_tx_chan, (unsigned long)out_data); in sport_send_and_recv()
1038 set_dma_x_count(sport->dma_tx_chan, len/2); in sport_send_and_recv()
1039 set_dma_x_modify(sport->dma_tx_chan, 2); in sport_send_and_recv()
1040 set_dma_config(sport->dma_tx_chan, dma_config); in sport_send_and_recv()
1041 enable_dma(sport->dma_tx_chan); in sport_send_and_recv()
1048 set_dma_start_addr(sport->dma_rx_chan, (unsigned long)in_data); in sport_send_and_recv()
1049 set_dma_x_count(sport->dma_rx_chan, len/2); in sport_send_and_recv()
1050 set_dma_x_modify(sport->dma_rx_chan, 2); in sport_send_and_recv()
1051 set_dma_config(sport->dma_rx_chan, dma_config); in sport_send_and_recv()
1052 enable_dma(sport->dma_rx_chan); in sport_send_and_recv()
1056 sport->regs->tcr1 |= TSPEN; in sport_send_and_recv()
1057 sport->regs->rcr1 |= RSPEN; in sport_send_and_recv()
1060 status = get_dma_curr_irqstat(sport->dma_tx_chan); in sport_send_and_recv()
1063 status = get_dma_curr_irqstat(sport->dma_tx_chan); in sport_send_and_recv()
1068 status = sport->regs->stat; in sport_send_and_recv()
1074 status = *(unsigned short *)&sport->regs->stat; in sport_send_and_recv()
1083 sport->regs->tcr1 &= ~TSPEN; in sport_send_and_recv()
1084 sport->regs->rcr1 &= ~RSPEN; in sport_send_and_recv()
1086 disable_dma(sport->dma_tx_chan); in sport_send_and_recv()
1088 clear_dma_irqstat(sport->dma_tx_chan); in sport_send_and_recv()
1090 disable_dma(sport->dma_rx_chan); in sport_send_and_recv()
1091 clear_dma_irqstat(sport->dma_rx_chan); in sport_send_and_recv()