Skip to content
  • Boris Brezillon's avatar
    clk: at91: add PMC base support · 0ad6125b
    Boris Brezillon authored
    
    
    This patch adds at91 PMC (Power Management Controller) base support.
    
    All at91 clocks managed by the PMC unit will use this framework.
    
    This framework provides the following fonctionalities:
    - define a new struct at91_pmc to hide PMC internals (lock, PMC memory
      mapping, irq domain, ...)
    - read/write helper functions (pmc_read/write) to access PMC registers
    - lock/unlock helper functions (pmc_lock/unlock) to lock/unlock access to
      pmc registers
    - a new irq domain and its associated irq chip to request PMC specific
      interrupts (useful for clk prepare callbacks)
    
    The PMC unit is declared as a dt clk provider (CLK_OF_DECLARE), and every
    clk using this framework will declare a table of of_at91_clk_init_cb_t
    and add it to the pmc_clk_ids table.
    
    When the pmc dt clock setup function is called (by of_clk_init function),
    it triggers the registration of every supported child clk (those matching
    the definitions in pmc_clk_ids).
    
    This patch copies at91_pmc_base (memory mapping) and at91sam9_idle
    (function) from arch/arm/mach-at91/clock.c (which is not compiled if
    COMMON_CLK_AT91 is enabled).
    
    Signed-off-by: default avatarBoris BREZILLON <b.brezillon@overkiz.com>
    Acked-by: default avatarMike Turquette <mturquette@linaro.org>
    Signed-off-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
    0ad6125b