Changes between Version 3 and Version 4 of mwr_driver


Ignore:
Timestamp:
Feb 28, 2015, 7:36:04 PM (9 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • mwr_driver

    v3 v4  
    88The vci_mwmr_dma component is a multi-channels hardware component that can be used to connect an hardware coprocesseur to a VCI interconnect.
    99This component provides the coprocessor one or several TO_COPROC or FROM_COPROC FIFO type communication channels, without address.
    10 Each T0_COPROC/FROM coproc port contains an hardware FIFO interface (data, r_wok, w_rok signals), plus three signals (REQ, ACK, BURSTS) allowing the coprocessor
    11 to request an integer number of data burst. Each burst contains a fixed number of 32 bits words. Each channel implements two running modes:
     10Each T0_COPROC/FROM_COPROC port contains an hardware FIFO interface (DATA, R_WOK, W_ROK signals), plus three signals (REQ, ACK, BURSTS) allowing the coprocessor
     11to request an integer number of data burst. Each burst contains a fixed number of 32 bits words. The burst length is an hardware parameter.
     12
     13Each channel implements two running modes:
    1214 * in '''MWMR''' mode the channel FSM transfer an infinite" stream of data to or from a MWMR software FIFO, implementing the 7 steps MWMR protocol.
    13  * in '''DMA''' mode the channel FSM transfer a fixed size chunk of data to or from a memory buffer, with a completion signaling interrupt.
     15 * in '''DMA''' mode the channel FSM transfer a fixed size chunk of data to or from a memory buffer, with an optional completion signaling interrupt.
    1416
    15 It is an ''internal'' peripheral, even if it is not replicated in all clusters.
     17It is an ''internal'' peripheral, that can be replicated in all clusters.
    1618
    17 WARNING : The MWR driver is not available yet.
     19The addressable registers map and command codes are defined [source:soft/giet_vm/giet_drivers/mwr_driver.h here].
     20
     21 === void '''_mwr_channel_init'''( unsigned int cluster_xy, unsigned int channel, unsigned int mode, unsigned long long buffer_paddr, unsigned int buffer_size, unsigned long long desc_paddr, unsigned long long lock_paddr ) ===
     22This function initialises all registers defining one communication channel for a given coprocessor.
     23 * '''cluster_xy''' is the cluster index
     24 * '''channel''' is the channel index
     25 * '''mode''' is the requested mode (MWMR / DMA_IRQ / DMA_NO_IRQ)
     26 * '''buffer_paddr''' is the memory buffer physical address
     27 * '''buffer_size''' is the memory buffer size (bytes)
     28 * '''desc_paddr''' is the MWMR descriptor physical address (only used in MWMR mode)
     29 * '''lock_paddr''' is the MWMR lock physical address (only used in MWMR mode)
     30
     31 === void '''_mwr_channel_start'''( unsigned int cluster_xy,  unsigned int channel ) ===
     32This function activates one communication channel for a given coprocessor.
     33 * '''cluster_xy''' is the cluster index
     34 * '''channel''' is the channel index
     35
     36 === void '''_mwr_channel_stop'''( unsigned int cluster_xy,  unsigned int channel ) ===
     37This function desactivates one communication channel for a given coprocessor.
     38 * '''cluster_xy''' is the cluster index
     39 * '''channel''' is the channel index