• Jolly Shah's avatar
    zynqmp: pm: Reimplement clock set parent EEMI API · be48511e
    Jolly Shah authored
    
    
    Clock set parent 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 set parent API to set pre_src, post_src, div2
    and bypass, in the implementation of pm_clock_set_parent() we need to
    workaround this by distinguishing two cases:
    1) if the given clock ID corresponds to a PLL-related clock ID (*_PRE_SRC,
    *_POST_SRC, *_INT_MUX or *PLL clock IDs); or 2) given clock ID is truly
    an on-chip clock.
    For case 1) we'll map the call onto PLL set parameter EEMI API with the
    respective parameter ID. Since clock set parent interface to EL1/2 receives
    parent index (mux select value), the value is just passed to PMU.
    Functions that appear to be unused after this change is made are removed.
    
    Setting the parent of *PLL clocks, that actually model bypass, is not
    possible. This is already ensured by the existing clock model having the
    CLK_SET_RATE_NO_REPARENT flag. The API also doesn't allow changing the
    bypass parent. Bypass is controlled only by the PMU firmware.
    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>
    be48511e
pm_api_sys.c 42.4 KB