diff options
author | Olof Johansson <olof@lixom.net> | 2012-05-10 02:48:44 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-05-10 02:48:52 -0400 |
commit | 7a3252f8374749ae4b5cc60e02f9b9eba79311cc (patch) | |
tree | 4eaecb237905833cca0251329d9048dbbeebfefb /arch/arm/mach-tegra | |
parent | bd69e27304e754b18dd6be8d8575af37afbbd095 (diff) | |
parent | 8c6a3852f639736ca7cb0f5e7b3fd0f314b0fc6a (diff) |
Merge branch 'for-3.5/tegra30-audio' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra into next/drivers
By Stephen Warren (5) and Peter De Schrijver (1)
via Stephen Warren
* 'for-3.5/tegra30-audio' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra:
ARM: dt: tegra cardhu: basic audio support
ARM: dt: tegra30.dtsi: Add audio-related nodes
ARM: tegra: add AUXDATA required for audio
ARM: tegra: set up audio clocks for tegra30 dt
ARM: tegra: Initialize pll_p_out1
ARM: tegra: provide clock aliases for AHUB configlink
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r-- | arch/arm/mach-tegra/board-dt-tegra30.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-tegra/common.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-tegra/tegra30_clocks.c | 9 |
3 files changed, 31 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c index 5f7c03e972f..d96dae0b4aa 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/board-dt-tegra30.c | |||
@@ -51,12 +51,22 @@ struct of_dev_auxdata tegra30_auxdata_lookup[] __initdata = { | |||
51 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C500, "tegra-i2c.2", NULL), | 51 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C500, "tegra-i2c.2", NULL), |
52 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C700, "tegra-i2c.3", NULL), | 52 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C700, "tegra-i2c.3", NULL), |
53 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000D000, "tegra-i2c.4", NULL), | 53 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000D000, "tegra-i2c.4", NULL), |
54 | OF_DEV_AUXDATA("nvidia,tegra30-ahub", 0x70080000, "tegra30-ahub", NULL), | ||
54 | {} | 55 | {} |
55 | }; | 56 | }; |
56 | 57 | ||
57 | static __initdata struct tegra_clk_init_table tegra_dt_clk_init_table[] = { | 58 | static __initdata struct tegra_clk_init_table tegra_dt_clk_init_table[] = { |
58 | /* name parent rate enabled */ | 59 | /* name parent rate enabled */ |
59 | { "uarta", "pll_p", 408000000, true }, | 60 | { "uarta", "pll_p", 408000000, true }, |
61 | { "pll_a", "pll_p_out1", 564480000, true }, | ||
62 | { "pll_a_out0", "pll_a", 11289600, true }, | ||
63 | { "extern1", "pll_a_out0", 0, true }, | ||
64 | { "clk_out_1", "extern1", 0, true }, | ||
65 | { "i2s0", "pll_a_out0", 11289600, false}, | ||
66 | { "i2s1", "pll_a_out0", 11289600, false}, | ||
67 | { "i2s2", "pll_a_out0", 11289600, false}, | ||
68 | { "i2s3", "pll_a_out0", 11289600, false}, | ||
69 | { "i2s4", "pll_a_out0", 11289600, false}, | ||
60 | { NULL, NULL, 0, 0}, | 70 | { NULL, NULL, 0, 0}, |
61 | }; | 71 | }; |
62 | 72 | ||
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c index f18f615aa93..2d80566b538 100644 --- a/arch/arm/mach-tegra/common.c +++ b/arch/arm/mach-tegra/common.c | |||
@@ -95,6 +95,17 @@ static __initdata struct tegra_clk_init_table tegra20_clk_init_table[] = { | |||
95 | }; | 95 | }; |
96 | #endif | 96 | #endif |
97 | 97 | ||
98 | #ifdef CONFIG_ARCH_TEGRA_3x_SOC | ||
99 | static __initdata struct tegra_clk_init_table tegra30_clk_init_table[] = { | ||
100 | /* name parent rate enabled */ | ||
101 | { "clk_m", NULL, 0, true }, | ||
102 | { "pll_p", "clk_m", 408000000, true }, | ||
103 | { "pll_p_out1", "pll_p", 9600000, true }, | ||
104 | { NULL, NULL, 0, 0}, | ||
105 | }; | ||
106 | #endif | ||
107 | |||
108 | |||
98 | static void __init tegra_init_cache(u32 tag_latency, u32 data_latency) | 109 | static void __init tegra_init_cache(u32 tag_latency, u32 data_latency) |
99 | { | 110 | { |
100 | #ifdef CONFIG_CACHE_L2X0 | 111 | #ifdef CONFIG_CACHE_L2X0 |
@@ -129,6 +140,7 @@ void __init tegra30_init_early(void) | |||
129 | { | 140 | { |
130 | tegra_init_fuse(); | 141 | tegra_init_fuse(); |
131 | tegra30_init_clocks(); | 142 | tegra30_init_clocks(); |
143 | tegra_clk_init_from_table(tegra30_clk_init_table); | ||
132 | tegra_init_cache(0x441, 0x551); | 144 | tegra_init_cache(0x441, 0x551); |
133 | tegra_pmc_init(); | 145 | tegra_pmc_init(); |
134 | tegra_powergate_init(); | 146 | tegra_powergate_init(); |
diff --git a/arch/arm/mach-tegra/tegra30_clocks.c b/arch/arm/mach-tegra/tegra30_clocks.c index 6d08b53f92d..e33fe4b14a2 100644 --- a/arch/arm/mach-tegra/tegra30_clocks.c +++ b/arch/arm/mach-tegra/tegra30_clocks.c | |||
@@ -3015,6 +3015,15 @@ struct clk_duplicate tegra_clk_duplicates[] = { | |||
3015 | CLK_DUPLICATE("sbc6", "spi_slave_tegra.5", NULL), | 3015 | CLK_DUPLICATE("sbc6", "spi_slave_tegra.5", NULL), |
3016 | CLK_DUPLICATE("twd", "smp_twd", NULL), | 3016 | CLK_DUPLICATE("twd", "smp_twd", NULL), |
3017 | CLK_DUPLICATE("vcp", "nvavp", "vcp"), | 3017 | CLK_DUPLICATE("vcp", "nvavp", "vcp"), |
3018 | CLK_DUPLICATE("i2s0", NULL, "i2s0"), | ||
3019 | CLK_DUPLICATE("i2s1", NULL, "i2s1"), | ||
3020 | CLK_DUPLICATE("i2s2", NULL, "i2s2"), | ||
3021 | CLK_DUPLICATE("i2s3", NULL, "i2s3"), | ||
3022 | CLK_DUPLICATE("i2s4", NULL, "i2s4"), | ||
3023 | CLK_DUPLICATE("dam0", NULL, "dam0"), | ||
3024 | CLK_DUPLICATE("dam1", NULL, "dam1"), | ||
3025 | CLK_DUPLICATE("dam2", NULL, "dam2"), | ||
3026 | CLK_DUPLICATE("spdif_in", NULL, "spdif_in"), | ||
3018 | }; | 3027 | }; |
3019 | 3028 | ||
3020 | struct clk *tegra_ptr_clks[] = { | 3029 | struct clk *tegra_ptr_clks[] = { |