summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2011-07-07 21:37:45 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:47:28 -0800
commitef4041b7783a32f7b49c22f4d3d3eefdb0fee168 (patch)
treea0542731e16bae1a9f63a782c2db26ee5c3dbc7b /arch
parent610c9c91b5f7cc631bc5e3890580cd2ca137af20 (diff)
ARM: tegra: clock: Save/restore Tegra3 audio sync clocks
Save/restore Tegra3 audio sync clocks on entry/exit to/from deep sleep. Original-Change-Id: I3a6ddd3d7291760e6b36731d1ec7e401b8081690 Reviewed-on: http://git-master/r/40125 Reviewed-by: Chih-Lung Huang <lhuang@nvidia.com> Tested-by: Chih-Lung Huang <lhuang@nvidia.com> Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com> Reviewed-by: Scott Williams <scwilliams@nvidia.com> Rebase-Id: Rb26a85d1d08725e6b357a50b53ef1f61d3f52ce4
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/tegra3_clocks.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/tegra3_clocks.c b/arch/arm/mach-tegra/tegra3_clocks.c
index 031d61bac167..c4b1b5342189 100644
--- a/arch/arm/mach-tegra/tegra3_clocks.c
+++ b/arch/arm/mach-tegra/tegra3_clocks.c
@@ -116,8 +116,14 @@
#define PERIPH_CLK_SOURCE_NUM2 \
((PERIPH_CLK_SOURCE_SE - PERIPH_CLK_SOURCE_G3D2) / 4 + 1)
+#define AUDIO_DLY_CLK 0x49c
+#define AUDIO_SYNC_CLK_SPDIF 0x4b4
+#define PERIPH_CLK_SOURCE_NUM3 \
+ ((AUDIO_SYNC_CLK_SPDIF - AUDIO_DLY_CLK) / 4 + 1)
+
#define PERIPH_CLK_SOURCE_NUM (PERIPH_CLK_SOURCE_NUM1 + \
- PERIPH_CLK_SOURCE_NUM2)
+ PERIPH_CLK_SOURCE_NUM2 + \
+ PERIPH_CLK_SOURCE_NUM3)
#define CPU_SOFTRST_CTRL 0x380
@@ -4216,6 +4222,9 @@ void tegra_clk_suspend(void)
off+=4) {
*ctx++ = clk_readl(off);
}
+ for (off = AUDIO_DLY_CLK; off <= AUDIO_SYNC_CLK_SPDIF; off+=4) {
+ *ctx++ = clk_readl(off);
+ }
*ctx++ = clk_readl(RST_DEVICES_L);
*ctx++ = clk_readl(RST_DEVICES_H);
@@ -4300,6 +4309,9 @@ void tegra_clk_resume(void)
off += 4) {
clk_writel(*ctx++, off);
}
+ for (off = AUDIO_DLY_CLK; off <= AUDIO_SYNC_CLK_SPDIF; off+=4) {
+ clk_writel(*ctx++, off);
+ }
wmb();
clk_writel(*ctx++, RST_DEVICES_L);