• Suman Anna's avatar
    soc: ti: pruss: Add support for PRU-ICSSs on AM437x SoCs · 78251639
    Suman Anna authored
    The AM437x SoCs have two different PRU-ICSS subsystems: PRU-ICSS1
    and a smaller PRU-ICSS0. Enhance the PRUSS platform driver to support
    both the PRU-ICSS sub-systems on these SoCs.
    
    The PRU-ICSS1 on AM437x is very similar to the PRU-ICSS on AM33xx
    except for few minor differences - increased Instruction RAM, increased
    Shared Data RAM2, and 1 less interrupt (PRUSS host interrupt 7 which is
    redirected to the other PRUSS) towards the MPU INTC. The PRU-ICSS0 is
    a cut-down version of the IP, with less DRAM per PRU, no Shared DRAM etc.
    It also does not have direct access to L3 bus regions, there is a single
    interface to L3 for both PRUSS0 and PRUSS1, and it would have to go
    through the PRUSS1's interface. The PRUSS_SYSCFG register is reserved on
    PRUSS0, so any external access requires the programming the corresponding
    PRUSS_SYSCFG register in PRUSS1. It does have its own dedicated I/O lines
    though. Note that this instance does not support any PRU Ethernet related
    use cases.
    
    The adaptation uses SoC-specific compatibles in the driver and uses
    a newly introduced pruss_match_private_data structure and the
    pruss_get_private_data() function to retrieve a PRUSS instance specific
    data using a device-name based lookup logic. The reset and the L3 external
    access are managed by the parent interconnect ti-sysc bus driver so that
    PRUSS1 and PRUSS0 can be independently supported.
    Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
    Signed-off-by: default avatarAndrew F. Davis <afd@ti.com>
    Signed-off-by: default avatarGrzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
    Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
    78251639
pruss.c 4.2 KB