| 53 |   | The coprocessor and the communication channels are activated by the ''get_coproc_run()'' system call.  | 
                      
                        | 54 |   |  * In '''MODE_MWMR''', each channel FSM  implements the 7 steps MWMR protocol, and transfer an "infinite" data stream, between one coprocessor port and a MWMR software FIFO in memory. The There is no transfer completion signaling, as the synchronisation is done through the MWMR FIFOs. The MWR IRQ is only asserted if a VCI error is reported in memory access.  | 
                      
                        | 55 |   |  * In '''MODE_DMA_IRQ''' or '''MODE_DMA_NO_IRQ''', each channel FSM transfers a single buffer between one coprocessor port and the memory. When transfer is completed, the channel FSM keep blocked until it is re-activated.  | 
                      
                        | 56 |   |    - In '''MODE_DMA_IRQ''', the calling task is descheduled, after coprocessor activation, in the ''giet_coproc_run()'' system call. The transfer completion is signaled by the MWR IRQ that updates the ''_coproc_status'' / ''_coproc_channel'' variables, deactivates the coprocessor, and resumes the calling task.  | 
                      
                        | 57 |   |    - In '''MODE_DMA_NO_IRQ''', the ''giet_coproc_run()'' system call returns after coprocessor activation. The user task must use the blocking ''giet_coproc_completed()'' system call that detect transfer completion by polling the coprocessor registers, and deactivates the coprocessor before returning. | 
                      
                        | 58 |   |  | 
                      
                        | 59 |   | '''WARNING''': For a given coprocessor, all channels must be running in the same mode. If this is not the case, the result is unpredictable. | 
                      
                      
                        |   | 53 | The coprocessor and the communication channels are activated by the ''giet_coproc_run()'' system call.  | 
                      
                        |   | 54 |  * In '''MODE_MWMR''', each channel FSM  implements the 7 steps MWMR protocol, and transfer an "infinite" data stream, between one coprocessor port and a MWMR software FIFO in memory. The ''giet_coproc_run()'' system call is non blocking, as the synchronisation is done through the MWMR FIFOs (no transfer completion event). The MWR IRQ is only asserted if a VCI error is reported in memory access.  | 
                      
                        |   | 55 |  * In '''MODE_DMA_IRQ''' or '''MODE_DMA_NO_IRQ''', each channel FSM transfers a single buffer between one coprocessor port and the memory, and keep blocked when the transfer is completed. In both DMA modes, the user application must use the ''giet_coproc_completed()'' system call to detect global completion and report the possible addressing errors. | 
                      
                        |   | 56 |    - In '''MODE_DMA_IRQ''', the calling task is descheduled, after coprocessor activation, in the ''giet_coproc_run()'' system call. It is rescheduled by the MWR IRQ signaling the global completion.   | 
                      
                        |   | 57 |    - In '''MODE_DMA_NO_IRQ''', the ''giet_coproc_run()'' system call returns after coprocessor activation, and the ''giet_coproc_completed()'' system call uses a polling to detect  completion and report errors. | 
                      
                        |   | 58 |  | 
                      
                        |   | 59 | '''WARNING''': For a given coprocessor, all channels must be running in the same mode. |