• Daniel Baluta's avatar
    firmware: imx: Add DSP IPC protocol interface · ffbf23d5
    Daniel Baluta authored
    Some of i.MX8 processors (e.g i.MX8QM, i.MX8QXP) contain
    the Tensilica HiFi4 DSP for advanced pre- and post-audio
    processing.
    
    The communication between Host CPU and DSP firmware is
    taking place using a shared memory area for message passing
    and a dedicated Messaging Unit for notifications.
    
    DSP IPC protocol offers a doorbell interface using
    imx-mailbox API.
    
    We use 4 MU channels (2 x TXDB, 2 x RXDB) to implement a
    request-reply protocol.
    
    Connection 0 (txdb0, rxdb0):
            - Host writes messasge to shared memory [SHMEM]
    	- Host sends a request [MU]
    	- DSP handles request [SHMEM]
    	- DSP sends reply [MU]
    
    Connection 1 (txdb1, rxdb1):
    	- DSP writes a message to shared memory [SHMEM]
    	- DSP sends a request [MU]
    	- Host handles request [SHMEM]
    	- Host sends reply [MU]
    
    The protocol interface will be used by a Host client to
    communicate with the DSP. First client will be the i.MX8
    part from Sound Open Firmware infrastructure.
    
    The protocol offers the following interface:
    
    On Tx:
       - imx_dsp_ring_doorbell, will be called to notify the DSP
       that it needs to handle a request.
    
    On Rx:
       - clients need to provide two callbacks:
    	.handle_reply
    	.handle_request
      - the callbacks will be used by the protocol on
        notification arrival from DSP.
    Signed-off-by: default avatarDaniel Baluta <daniel.baluta@nxp.com>
    Reviewed-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
    ffbf23d5
imx-dsp.c 3.44 KB