• Suman Anna's avatar
    remoteproc: pru: Add a PRU remoteproc driver · d4ce2de7
    Suman Anna authored
    The Programmable Real-Time Unit Subsystem (PRUSS) consists of
    dual 32-bit RISC cores (Programmable Real-Time Units, or PRUs)
    for program execution. This patch adds a remoteproc platform
    driver for managing the individual PRU RISC cores life cycle.
    
    The PRUs do not have a unified address space (have an Instruction
    RAM and a primary Data RAM at both 0x0). The PRU remoteproc driver
    therefore uses a custom remoteproc core ELF loader ops. The added
    .da_to_va ops is only used to provide translations for the PRU
    Data RAMs. This remoteproc driver does not have support for error
    recovery and system suspend/resume features. Different compatibles
    are used to allow providing scalability for instance-specific device
    data if needed. The driver uses a default firmware-name retrieved
    from device-tree for each PRU core, and the firmwares are expected
    to be present in the standard Linux firmware search paths. They can
    also be adjusted by userspace if required through the sysfs interface
    provided by the remoteproc core.
    
    The PRU remoteproc driver uses a client-driven boot methodology: it
    does _not_ support auto-boot so that the PRU load and boot is dictated
    by the corresponding client drivers for achieving various usecases.
    This allows flexibility for the client drivers or applications to set
    a firmware name (if needed) based on their desired functionality and
    boot the PRU. The sysfs bind and unbind attributes have also been
    suppressed so that the PRU devices cannot be unbound and thereby
    shutdown a PRU from underneath a PRU client driver.
    
    The driver currently supports the AM335x, AM437x, AM57xx and 66AK2G
    SoCs, and support for other TI SoCs will be added in subsequent
    patches.
    Co-developed-by: default avatarAndrew F. Davis <afd@ti.com>
    Signed-off-by: default avatarAndrew F. Davis <afd@ti.com>
    Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
    Co-developed-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
    Signed-off-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
    Reviewed-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
    Link: https://lore.kernel.org/r/20201208141002.17777-3-grzegorz.jaszczyk@linaro.orgSigned-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
    d4ce2de7
Kconfig 9.04 KB