• Gerhard Sittig's avatar
    clk: mpc512x: introduce COMMON_CLK for MPC512x (disabled) · 6d8cdb68
    Gerhard Sittig authored
    this change implements a clock driver for the MPC512x PowerPC platform
    which follows the COMMON_CLK approach and uses common clock drivers
    shared with other platforms
    
    this driver implements the publicly announced set of clocks (those
    listed in the dt-bindings header file), as well as generates additional
    'struct clk' items where the SoC hardware cannot easily get mapped to
    the common primitives (shared code) of the clock API, or requires
    "intermediate clock nodes" to represent clocks that have both gates and
    dividers
    
    the previous PPC_CLOCK implementation is kept in place and remains
    active for the moment, the newly introduced CCF clock driver will
    receive additional support for backwards compatibility in a subsequent
    patch before it gets enabled and will replace the PPC_CLOCK approach
    
    some of the clock items get pre-enabled in the clock driver to not have
    them automatically disabled by the underlying clock subsystem because of
    their being unused -- this approach is desirable because
    - some of the clocks are useful to have for diagnostics and information
      despite their not getting claimed by any drivers (CPU, internal and
      external RAM, internal busses, boot media)
    - some of the clocks aren't claimed by their peripheral drivers yet,
      either because of missing driver support or because device tree specs
      aren't available yet (but the workarounds will get removed as the
      drivers get adjusted and the device tree provides the clock specs)
    
    clkdev registration provides "alias names" for few clock items
    - to not break those peripheral drivers which encode their component
      index into the name that is used for clock lookup (UART, SPI, USB)
    - to not break those drivers which use names for the clock lookup which
      were encoded in the previous PPC_CLOCK implementation (NFC, VIU, CAN)
    this workaround will get removed as these drivers get adjusted after
    device tree based clock lookup has become available
    
    the COMMON_CLK implementation copes with device trees which lack an
    oscillator node (backwards compat), the REF clock is then derived from
    the IPS bus frequency and multiplier values fetched from hardware
    
    Cc: Mike Turquette <mturquette@linaro.org>
    Cc: Anatolij Gustschin <agust@denx.de>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Signed-off-by: default avatarGerhard Sittig <gsi@denx.de>
    Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>
    6d8cdb68
clk-provider.h 18.8 KB