• Stephen Warren's avatar
    ARM: tegra: split tegra_pmc_init() in two · d2207071
    Stephen Warren authored
    Tegra's board file currently initializes clocks much earlier than those
    for most other ARM SoCs. The reason is:
    
    * The PMC HW block is involved in the path of some interrupts (i.e. it
    inverts, or not, the IRQ input pin dedicated to the PMIC).
    
    * So, that part of the PMC must be initialized early so that the IRQ
    polarity is correct.
    
    * The PMC initialization is currently monolithic, and the PMC has some
    clock inputs, so the init routine ends up calling of_clk_get_by_name(),
    and hence clocks must be set up early too.
    
    In order to defer clock initialization to the more typical location,
    split out the portions of tegra_pmc_init() that are truly IRQ-related
    into a separate tegra_pmc_init_irq(), which can be called from the
    machine descriptor's .init_irq() function, and defer the rest until
    the machine descriptor's .init_machine() function. This allows the
    clock initiliazation to happen from the machine descriptor's
    .init_time() function, as is typical.
    Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
    d2207071
pmc.c 9.36 KB