summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAlan Tull <r80115@freescale.com>2010-10-06 15:04:28 -0500
committerJustin Waters <justin.waters@timesys.com>2010-12-13 16:10:29 -0500
commitdc143601eadd845ef977626d5eeaac370b3a89ee (patch)
tree0e7423881f5c066a1153ac038c3aff44812e7a7a /arch
parent25eee6282c9b2a37cfdfc4849cfdeb767e0d0ed1 (diff)
ENGR00132525-1 sgtl5000: audio clock gating
Turn off audio clock when possible. Empirical data says that we need to leave the clocks on for 300 mSec after all codec writes are done so schedule work to do that. This feature supported for i.Mx51 Babbage and i.Mx50 EVK (rdp) boards. Signed-off-by: Alan Tull <alan.tull@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mx5/mx50_rdp.c7
-rw-r--r--arch/arm/mach-mx5/mx51_babbage.c7
2 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/mach-mx5/mx50_rdp.c b/arch/arm/mach-mx5/mx50_rdp.c
index a4ca2374935e..45274b21d157 100644
--- a/arch/arm/mach-mx5/mx50_rdp.c
+++ b/arch/arm/mach-mx5/mx50_rdp.c
@@ -919,6 +919,12 @@ static int mxc_sgtl5000_amp_enable(int enable)
return 0;
}
+static int mxc_sgtl5000_clock_enable(int enable)
+{
+ gpio_set_value(SGTL_OSCEN, enable);
+ return 0;
+}
+
static int headphone_det_status(void)
{
return (gpio_get_value(HP_DETECT) == 0);
@@ -931,6 +937,7 @@ static struct mxc_audio_platform_data sgtl5000_data = {
.hp_irq = IOMUX_TO_IRQ_V3(HP_DETECT),
.hp_status = headphone_det_status,
.amp_enable = mxc_sgtl5000_amp_enable,
+ .clock_enable = mxc_sgtl5000_clock_enable,
.sysclk = 12288000,
};
diff --git a/arch/arm/mach-mx5/mx51_babbage.c b/arch/arm/mach-mx5/mx51_babbage.c
index f7eae32a4988..e2199c029759 100644
--- a/arch/arm/mach-mx5/mx51_babbage.c
+++ b/arch/arm/mach-mx5/mx51_babbage.c
@@ -900,6 +900,12 @@ static int mxc_sgtl5000_amp_enable(int enable)
return 0;
}
+static int mxc_sgtl5000_clock_enable(int enable)
+{
+ gpio_set_value(BABBAGE_AUDIO_CLK_EN, !enable);
+ return 0;
+}
+
static int headphone_det_status(void)
{
return (gpio_get_value(BABBAGE_HEADPHONE_DET) == 0);
@@ -912,6 +918,7 @@ static struct mxc_audio_platform_data sgtl5000_data = {
.hp_irq = IOMUX_TO_IRQ_V3(BABBAGE_HEADPHONE_DET),
.hp_status = headphone_det_status,
.amp_enable = mxc_sgtl5000_amp_enable,
+ .clock_enable = mxc_sgtl5000_clock_enable,
.sysclk = 12288000,
};