ARM: tegra: split tegra_pmc_init() in two
authorStephen Warren <swarren@nvidia.com>
Tue, 20 Aug 2013 21:17:35 +0000 (15:17 -0600)
committerStephen Warren <swarren@nvidia.com>
Tue, 17 Sep 2013 19:42:17 +0000 (13:42 -0600)
commitd2207071b3c74b144a860cbe6a46496a44963972
tree957a2815fe853c85d16e4722c655ce148f16c373
parent272b98c6455f00884f0350f775c5342358ebb73f
ARM: tegra: split tegra_pmc_init() in two

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: Stephen Warren <swarren@nvidia.com>
arch/arm/mach-tegra/common.c
arch/arm/mach-tegra/pmc.c
arch/arm/mach-tegra/pmc.h
arch/arm/mach-tegra/tegra.c