• Geert Uytterhoeven's avatar
    clk: renesas: r8a7795: Add support for R-Car H3 ES2.0 · 5573d194
    Geert Uytterhoeven authored
    The Clock Pulse Generator / Module Standby and Software Reset module in
    R-Car H3 ES2.0 differs from ES1.x in the following areas:
      - More core clocks (S0D2, S0D3, S0D6, S0D8, S0D12),
      - Different parent clocks for AUDMAC, EtherAVB, FCP, FDP, IMR,
        SYS-DMAC, VIN, VSPB, VSPI,
      - Removal of modules CSI21, FCPCI, FCPF2, FCPVD3, FCPVI2, FDP1-2,
        USB3-IF1, VSPD3, VSPI2,
      - Addition of modules EHCI3, HS-USB-IF3, USB-DMAC3-0, USB-DMAC3-1.
    
    The goal is twofold:
      1. Support both the ES1.x and ES2.0 SoC revisions in a single binary
         for now,
      2. Make it clear which code supports ES1.x, so it can easily be
         identified and removed later, when production SoCs are deemed
         ubiquitous.
    
    This is achieved by:
      - Updating the clock tables for the latest revision (ES2.0), but not
        removing clocks that only exist on earlier revisions (ES1.x),
      - Detecting the SoC revision at runtime using the new soc_device_match()
        API, and fixing up the clocks tables to match the actual SoC
        revision, by:
          - NULLifying core and module clocks of modules that do not exist,
          - Reparenting module clocks that have a different parent on ES1.x.
    
    Based on R-Car Gen3 Hardware User's Manual rev. 0.53E.
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    5573d194
r8a7795-cpg-mssr.c 17 KB