aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/imx/eukrea-tlv320.c
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2012-03-05 09:30:49 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-03-05 19:02:36 -0500
commit60282ede6b73d6ac7b571df5c65fa6a77db1a4a2 (patch)
tree46b76bb42a1345d55e65e58438054524ce8844c6 /sound/soc/imx/eukrea-tlv320.c
parentf13ebada17142438ab97afa0421aa5084ce174f2 (diff)
ASoC: imx: move eukrea audmux call into ASoC machine driver
It moves eukrea audmux configuration call from board file into ASoC machine driver eukrea-tlv320, so that it gets aligned wm1133-ev1 and mx27vis-aic32x4, and more importantly it will ease the moving of audmux into sound/soc/imx as a platform driver later. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/imx/eukrea-tlv320.c')
-rw-r--r--sound/soc/imx/eukrea-tlv320.c40
1 files changed, 36 insertions, 4 deletions
diff --git a/sound/soc/imx/eukrea-tlv320.c b/sound/soc/imx/eukrea-tlv320.c
index 1c1fdd10f73f..bfcb6d9768b8 100644
--- a/sound/soc/imx/eukrea-tlv320.c
+++ b/sound/soc/imx/eukrea-tlv320.c
@@ -23,6 +23,7 @@
23#include <sound/pcm.h> 23#include <sound/pcm.h>
24#include <sound/soc.h> 24#include <sound/soc.h>
25#include <asm/mach-types.h> 25#include <asm/mach-types.h>
26#include <mach/audmux.h>
26 27
27#include "../codecs/tlv320aic23.h" 28#include "../codecs/tlv320aic23.h"
28#include "imx-ssi.h" 29#include "imx-ssi.h"
@@ -97,12 +98,43 @@ static struct platform_device *eukrea_tlv320_snd_device;
97static int __init eukrea_tlv320_init(void) 98static int __init eukrea_tlv320_init(void)
98{ 99{
99 int ret; 100 int ret;
100 101 int int_port = 0, ext_port;
101 if (!machine_is_eukrea_cpuimx27() && !machine_is_eukrea_cpuimx25sd() 102
102 && !machine_is_eukrea_cpuimx35sd() 103 if (machine_is_eukrea_cpuimx27()) {
103 && !machine_is_eukrea_cpuimx51sd()) 104 mxc_audmux_v1_configure_port(MX27_AUDMUX_HPCR1_SSI0,
105 MXC_AUDMUX_V1_PCR_SYN |
106 MXC_AUDMUX_V1_PCR_TFSDIR |
107 MXC_AUDMUX_V1_PCR_TCLKDIR |
108 MXC_AUDMUX_V1_PCR_RFSDIR |
109 MXC_AUDMUX_V1_PCR_RCLKDIR |
110 MXC_AUDMUX_V1_PCR_TFCSEL(MX27_AUDMUX_HPCR3_SSI_PINS_4) |
111 MXC_AUDMUX_V1_PCR_RFCSEL(MX27_AUDMUX_HPCR3_SSI_PINS_4) |
112 MXC_AUDMUX_V1_PCR_RXDSEL(MX27_AUDMUX_HPCR3_SSI_PINS_4)
113 );
114 mxc_audmux_v1_configure_port(MX27_AUDMUX_HPCR3_SSI_PINS_4,
115 MXC_AUDMUX_V1_PCR_SYN |
116 MXC_AUDMUX_V1_PCR_RXDSEL(MX27_AUDMUX_HPCR1_SSI0)
117 );
118 } else if (machine_is_eukrea_cpuimx25sd() ||
119 machine_is_eukrea_cpuimx35sd() ||
120 machine_is_eukrea_cpuimx51sd()) {
121 ext_port = machine_is_eukrea_cpuimx25sd() ? 4 : 3;
122 mxc_audmux_v2_configure_port(int_port,
123 MXC_AUDMUX_V2_PTCR_SYN |
124 MXC_AUDMUX_V2_PTCR_TFSDIR |
125 MXC_AUDMUX_V2_PTCR_TFSEL(ext_port) |
126 MXC_AUDMUX_V2_PTCR_TCLKDIR |
127 MXC_AUDMUX_V2_PTCR_TCSEL(ext_port),
128 MXC_AUDMUX_V2_PDCR_RXDSEL(ext_port)
129 );
130 mxc_audmux_v2_configure_port(ext_port,
131 MXC_AUDMUX_V2_PTCR_SYN,
132 MXC_AUDMUX_V2_PDCR_RXDSEL(int_port)
133 );
134 } else {
104 /* return happy. We might run on a totally different machine */ 135 /* return happy. We might run on a totally different machine */
105 return 0; 136 return 0;
137 }
106 138
107 eukrea_tlv320_snd_device = platform_device_alloc("soc-audio", -1); 139 eukrea_tlv320_snd_device = platform_device_alloc("soc-audio", -1);
108 if (!eukrea_tlv320_snd_device) 140 if (!eukrea_tlv320_snd_device)