• Jolly Shah's avatar
    zynqmp: pm: Reimplement clock enable EEMI API · bd642dde
    Jolly Shah authored
    
    
    Clock enable EEMI API is reimplemented to use system-level clock
    and pll EEMI APIs rather than direct MMIO read/write accesses to clock
    and pll control registers.
    Since linux still uses clock enable API to trigger locking of the PLLs
    in the pm_clock_enable() implementation we need to workaround this by
    distinguishing two cases: 1) if the given clock ID corresponds to a PLL
    output clock ID; or 2) given clock ID is truly an on-chip clock that can
    be gated.
    For case 1) we'll call pm_api_clock_pll_enable() implemented in
    pm_api_clock.h/c. This function checks what is the buffered PLL mode and
    calls the system-level PLL set mode EEMI API with the buffered mode value
    specified as argument. Long term, if linux driver get fixed to use PLL
    EEMI API to control PLLs, this case could be removed from ATF.
    For case 2) we'll call the PMU to configure the clock gate. This is done
    using system-level clock enable EEMI API.
    Signed-off-by: default avatarMirela Simonovic <mirela.simonovic@aggios.com>
    Acked-by: default avatarWill Wong <WILLW@xilinx.com>
    Signed-off-by: default avatarJolly Shah <jollys@xilinx.com>
    bd642dde
pm_api_clock.c 76.9 KB