• Roger Quadros's avatar
    remoteproc: pru: Add pru_rproc_set_ctable() function · 10285340
    Roger Quadros authored
    Some firmwares expect the OS drivers to configure the CTABLE
    entries publishing dynamically allocated memory regions. For
    example, the PRU Ethernet firmwares use the C28 and C30 entries
    for retrieving the Shared RAM and System SRAM (OCMC) areas
    allocated by the PRU Ethernet client driver.
    
    Provide a way for users to do that through a new API,
    pru_rproc_set_ctable(). The API returns 0 on success and
    a negative value on error.
    
    NOTE:
    The programmable CTABLE entries are typically re-programmed by
    the PRU firmwares when dealing with a certain block of memory
    during block processing. This API provides an interface to the
    PRU client drivers to publish a dynamically allocated memory
    block with the PRU firmware using a CTABLE entry instead of a
    negotiated address in shared memory. Additional synchronization
    may be needed between the PRU client drivers and firmwares if
    different addresses needs to be published at run-time reusing
    the same CTABLE entry.
    
    CTABLE for stands for "constant table".
    Each CTable entry just holds the upper address bits so PRU can
    reference to external memory with larger address bits.
    
    For use case please see
    prueth_sw_emac_config() in "drivers/net/ethernet/ti/prueth_switch.c"
    
                /* Set in constant table C28 of PRUn to ICSS Shared memory */
                 pru_rproc_set_ctable(prueth->pru0, PRU_C28, sharedramaddr);
                 pru_rproc_set_ctable(prueth->pru1, PRU_C28, sharedramaddr);
    
                /* Set in constant table C30 of PRUn to OCMC memory */
                 pru_rproc_set_ctable(prueth->pru0, PRU_C30, ocmcaddr);
                 pru_rproc_set_ctable(prueth->pru1, PRU_C30, ocmcaddr);
    Signed-off-by: default avatarAndrew F. Davis <afd@ti.com>
    Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
    Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
    Signed-off-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
    Signed-off-by: default avatarMD Danish Anwar <danishanwar@ti.com>
    Link: https://lore.kernel.org/r/20230106121046.886863-6-danishanwar@ti.comSigned-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
    10285340
pruss.h 1.63 KB