• Linus Walleij's avatar
    clk: nomadik: implement the Nomadik clocks properly · ef6eb322
    Linus Walleij authored
    The Nomadik clock implementation was a stub just using
    fixed clocks.
    
    This implements the clocks properly instead of relying
    on them all being on at boot and leaving them all on.
    
    The PLLs are on the top locking to the main chrystal
    oscillator, then the HCLK for the peripherals are
    below PLL2.
    
    The gated clocks are implemented with zero cells and
    given the clock ID as a property of each node, so every
    gate need to have its own node in the device tree.
    This is because the gate registers contain both HCLK
    gates and PCLK gates, where the latter has HCLK as
    parent. As can be seen from the register layout, this
    is a complete mixup, which means all these gates need
    their own node to properly model parent/child relations
    for PCLKs apart from the HCLKs.
    
    This driver also adds a helpful debugfs file to inspect
    the hardware state of the clock gates.
    
    This is the end result in <debugfs>/clk/clk_summary
    after applying a proper device tree:
    
    ulpiclk                0 ...
    ef6eb322
st,nomadik.txt 2.29 KB