Thread (9 messages) 9 messages, 2 authors, 2011-02-22
STALE5584d
Revisions (3)
  1. v1 [diff vs current]
  2. v1 current
  3. v1 [diff vs current]

[PATCH 4/4] ARM: tegra: Move pinmux init call

From: Colin Cross <hidden>
Date: 2011-02-22 03:21:42
Also in: linux-tegra

On Sat, Feb 19, 2011 at 7:38 PM, Stephen Warren [off-list ref] wrote:
quoted hunk ↗ jump to hunk
In order for the clock initialization to pick up the results of the
pinmux initialization (which will initialize various parameters of
clocks cdev1, cdev2), the pinmux initialization must happen first.
Move the pinmux init to achieve this.

Signed-off-by: Stephen Warren <redacted>
---
?arch/arm/mach-tegra/board-harmony.c ? | ? ?4 ++--
?arch/arm/mach-tegra/board-trimslice.c | ? ?4 ++--
?2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c
index b9dbdb1..eea5ad6 100644
--- a/arch/arm/mach-tegra/board-harmony.c
+++ b/arch/arm/mach-tegra/board-harmony.c
@@ -104,12 +104,12 @@ static __initdata struct tegra_clk_init_table harmony_clk_init_table[] = {
?static void __init tegra_harmony_init(void)
?{
+ ? ? ? harmony_pinmux_init();
+
? ? ? ?tegra_common_init();

? ? ? ?tegra_clk_init_from_table(harmony_clk_init_table);

- ? ? ? harmony_pinmux_init();
-
? ? ? ?platform_add_devices(harmony_devices, ARRAY_SIZE(harmony_devices));
?}
diff --git a/arch/arm/mach-tegra/board-trimslice.c b/arch/arm/mach-tegra/board-trimslice.c
index ef233b2..aef6abb 100644
--- a/arch/arm/mach-tegra/board-trimslice.c
+++ b/arch/arm/mach-tegra/board-trimslice.c
@@ -85,12 +85,12 @@ subsys_initcall(tegra_trimslice_pci_init);
?static void __init tegra_trimslice_init(void)
?{
+ ? ? ? trimslice_pinmux_init();
+
? ? ? ?tegra_common_init();

? ? ? ?tegra_clk_init_from_table(trimslice_clk_init_table);

- ? ? ? trimslice_pinmux_init();
-
? ? ? ?platform_add_devices(trimslice_devices, ARRAY_SIZE(trimslice_devices));
?}
This isn't going to work any more.  In order for the timer to get a
reference to its clock, clocks have to be up before the system timer
is initialized, so Russell added an init_early hook for clock
initialization.  init_machine happens much later, so the per-board
pinmux init will always happen after clock init.

The calls from clk_dev1/2 init into tegra_pinmux_get_func should be
fine, but they will pick up the bootloader's settings instead of the
board pinmux table settings.  You would need to use the pinmux tables
to untristate the pins (or maybe add untristating, but not
re-tristating, to the clk_enable op?), and add clk_dev1/2 entries to
the clock init table to set the parent to get the correct pinmux
settings.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help