summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Tull <r80115@freescale.com>2010-10-06 15:04:28 -0500
committerAlan Tull <alan.tull@freescale.com>2010-10-15 11:23:51 -0500
commit814f3c198b051e140613a1b4a02266bd4a411d97 (patch)
tree0e7423881f5c066a1153ac038c3aff44812e7a7a
parentde51265112ce748d35d38d85acd9be6078a8fb83 (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>
-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,
};