24 #include <linux/module.h>
26 #include <linux/device.h>
27 #include <linux/i2c.h>
37 #include "../codecs/tlv320aic32x4.h"
41 #define MX27VIS_AMP_GAIN 0
42 #define MX27VIS_AMP_MUTE 1
44 static int mx27vis_amp_gain;
45 static int mx27vis_amp_mute;
46 static int mx27vis_amp_gain0_gpio;
47 static int mx27vis_amp_gain1_gpio;
48 static int mx27vis_amp_mutel_gpio;
49 static int mx27vis_amp_muter_gpio;
72 pr_err(
"%s: failed setting codec sysclk\n", __func__);
79 pr_err(
"can't set CPU system clock IMX_SSP_SYS_CLK\n");
86 static struct snd_soc_ops mx27vis_aic32x4_snd_ops = {
87 .hw_params = mx27vis_aic32x4_hw_params,
90 static int mx27vis_amp_set(
struct snd_kcontrol *kcontrol,
96 unsigned int reg = mc->
reg;
106 mx27vis_amp_gain =
value;
111 mx27vis_amp_mute =
value;
117 static int mx27vis_amp_get(
struct snd_kcontrol *kcontrol,
122 unsigned int reg = mc->
reg;
126 ucontrol->
value.integer.value[0] = mx27vis_amp_gain;
129 ucontrol->
value.integer.value[0] = mx27vis_amp_mute;
141 mx27vis_amp_get, mx27vis_amp_set, mx27vis_amp_tlv),
143 mx27vis_amp_get, mx27vis_amp_set),
151 {
"Mic Bias",
NULL,
"External Mic"},
152 {
"IN1_R",
NULL,
"Mic Bias"},
153 {
"IN2_R",
NULL,
"Mic Bias"},
154 {
"IN3_R",
NULL,
"Mic Bias"},
155 {
"IN1_L",
NULL,
"Mic Bias"},
156 {
"IN2_L",
NULL,
"Mic Bias"},
157 {
"IN3_L",
NULL,
"Mic Bias"},
161 .name =
"tlv320aic32x4",
162 .stream_name =
"TLV320AIC32X4",
163 .codec_dai_name =
"tlv320aic32x4-hifi",
164 .platform_name =
"imx-pcm-audio.0",
165 .codec_name =
"tlv320aic32x4.0-0018",
166 .cpu_dai_name =
"imx-ssi.0",
167 .ops = &mx27vis_aic32x4_snd_ops,
171 .name =
"visstrim_m10-audio",
173 .dai_link = &mx27vis_aic32x4_dai,
175 .controls = mx27vis_aic32x4_controls,
176 .num_controls =
ARRAY_SIZE(mx27vis_aic32x4_controls),
177 .dapm_widgets = aic32x4_dapm_widgets,
178 .num_dapm_widgets =
ARRAY_SIZE(aic32x4_dapm_widgets),
179 .dapm_routes = aic32x4_dapm_routes,
180 .num_dapm_routes =
ARRAY_SIZE(aic32x4_dapm_routes),
189 dev_err(&pdev->
dev,
"No platform data supplied\n");
198 mx27vis_aic32x4.
dev = &pdev->
dev;
201 dev_err(&pdev->
dev,
"snd_soc_register_card failed (%d)\n",
234 .probe = mx27vis_aic32x4_probe,