mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
Merge existing fixes from asoc/for-5.9
This commit is contained in:
commit
549ade5721
@ -138,7 +138,7 @@ static int acp3x_1015_hw_params(struct snd_pcm_substream *substream,
|
|||||||
srate = params_rate(params);
|
srate = params_rate(params);
|
||||||
|
|
||||||
for_each_rtd_codec_dais(rtd, i, codec_dai) {
|
for_each_rtd_codec_dais(rtd, i, codec_dai) {
|
||||||
if (strcmp(codec_dai->component->name, "rt1015-aif"))
|
if (strcmp(codec_dai->name, "rt1015-aif"))
|
||||||
continue;
|
continue;
|
||||||
ret = snd_soc_dai_set_bclk_ratio(codec_dai, 64);
|
ret = snd_soc_dai_set_bclk_ratio(codec_dai, 64);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -314,40 +314,30 @@ static int acp_pdm_dma_close(struct snd_soc_component *component,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int acp_pdm_dai_hw_params(struct snd_pcm_substream *substream,
|
|
||||||
struct snd_pcm_hw_params *params,
|
|
||||||
struct snd_soc_dai *dai)
|
|
||||||
{
|
|
||||||
struct pdm_stream_instance *rtd;
|
|
||||||
unsigned int ch_mask;
|
|
||||||
|
|
||||||
rtd = substream->runtime->private_data;
|
|
||||||
switch (params_channels(params)) {
|
|
||||||
case TWO_CH:
|
|
||||||
ch_mask = 0x00;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
rn_writel(ch_mask, rtd->acp_base + ACP_WOV_PDM_NO_OF_CHANNELS);
|
|
||||||
rn_writel(PDM_DECIMATION_FACTOR, rtd->acp_base +
|
|
||||||
ACP_WOV_PDM_DECIMATION_FACTOR);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int acp_pdm_dai_trigger(struct snd_pcm_substream *substream,
|
static int acp_pdm_dai_trigger(struct snd_pcm_substream *substream,
|
||||||
int cmd, struct snd_soc_dai *dai)
|
int cmd, struct snd_soc_dai *dai)
|
||||||
{
|
{
|
||||||
struct pdm_stream_instance *rtd;
|
struct pdm_stream_instance *rtd;
|
||||||
int ret;
|
int ret;
|
||||||
bool pdm_status;
|
bool pdm_status;
|
||||||
|
unsigned int ch_mask;
|
||||||
|
|
||||||
rtd = substream->runtime->private_data;
|
rtd = substream->runtime->private_data;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
switch (substream->runtime->channels) {
|
||||||
|
case TWO_CH:
|
||||||
|
ch_mask = 0x00;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case SNDRV_PCM_TRIGGER_START:
|
case SNDRV_PCM_TRIGGER_START:
|
||||||
case SNDRV_PCM_TRIGGER_RESUME:
|
case SNDRV_PCM_TRIGGER_RESUME:
|
||||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||||
|
rn_writel(ch_mask, rtd->acp_base + ACP_WOV_PDM_NO_OF_CHANNELS);
|
||||||
|
rn_writel(PDM_DECIMATION_FACTOR, rtd->acp_base +
|
||||||
|
ACP_WOV_PDM_DECIMATION_FACTOR);
|
||||||
rtd->bytescount = acp_pdm_get_byte_count(rtd,
|
rtd->bytescount = acp_pdm_get_byte_count(rtd,
|
||||||
substream->stream);
|
substream->stream);
|
||||||
pdm_status = check_pdm_dma_status(rtd->acp_base);
|
pdm_status = check_pdm_dma_status(rtd->acp_base);
|
||||||
@ -369,7 +359,6 @@ static int acp_pdm_dai_trigger(struct snd_pcm_substream *substream,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct snd_soc_dai_ops acp_pdm_dai_ops = {
|
static struct snd_soc_dai_ops acp_pdm_dai_ops = {
|
||||||
.hw_params = acp_pdm_dai_hw_params,
|
|
||||||
.trigger = acp_pdm_dai_trigger,
|
.trigger = acp_pdm_dai_trigger,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
#define CDC_D_REVISION1 (0xf000)
|
#define CDC_D_REVISION1 (0xf000)
|
||||||
#define CDC_D_PERPH_SUBTYPE (0xf005)
|
#define CDC_D_PERPH_SUBTYPE (0xf005)
|
||||||
#define CDC_D_INT_EN_SET (0x015)
|
#define CDC_D_INT_EN_SET (0xf015)
|
||||||
#define CDC_D_INT_EN_CLR (0x016)
|
#define CDC_D_INT_EN_CLR (0xf016)
|
||||||
#define MBHC_SWITCH_INT BIT(7)
|
#define MBHC_SWITCH_INT BIT(7)
|
||||||
#define MBHC_MIC_ELECTRICAL_INS_REM_DET BIT(6)
|
#define MBHC_MIC_ELECTRICAL_INS_REM_DET BIT(6)
|
||||||
#define MBHC_BUTTON_PRESS_DET BIT(5)
|
#define MBHC_BUTTON_PRESS_DET BIT(5)
|
||||||
|
@ -412,8 +412,12 @@ int wm8958_aif_ev(struct snd_soc_dapm_widget *w,
|
|||||||
struct snd_kcontrol *kcontrol, int event)
|
struct snd_kcontrol *kcontrol, int event)
|
||||||
{
|
{
|
||||||
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
||||||
|
struct wm8994 *control = dev_get_drvdata(component->dev->parent);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (control->type != WM8958)
|
||||||
|
return 0;
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case SND_SOC_DAPM_POST_PMU:
|
case SND_SOC_DAPM_POST_PMU:
|
||||||
case SND_SOC_DAPM_PRE_PMU:
|
case SND_SOC_DAPM_PRE_PMU:
|
||||||
|
@ -151,7 +151,6 @@ static const struct reg_default wm8962_reg[] = {
|
|||||||
{ 40, 0x0000 }, /* R40 - SPKOUTL volume */
|
{ 40, 0x0000 }, /* R40 - SPKOUTL volume */
|
||||||
{ 41, 0x0000 }, /* R41 - SPKOUTR volume */
|
{ 41, 0x0000 }, /* R41 - SPKOUTR volume */
|
||||||
|
|
||||||
{ 48, 0x0000 }, /* R48 - Additional control(4) */
|
|
||||||
{ 49, 0x0010 }, /* R49 - Class D Control 1 */
|
{ 49, 0x0010 }, /* R49 - Class D Control 1 */
|
||||||
{ 51, 0x0003 }, /* R51 - Class D Control 2 */
|
{ 51, 0x0003 }, /* R51 - Class D Control 2 */
|
||||||
|
|
||||||
@ -842,6 +841,7 @@ static bool wm8962_readable_register(struct device *dev, unsigned int reg)
|
|||||||
case WM8962_SPKOUTL_VOLUME:
|
case WM8962_SPKOUTL_VOLUME:
|
||||||
case WM8962_SPKOUTR_VOLUME:
|
case WM8962_SPKOUTR_VOLUME:
|
||||||
case WM8962_THERMAL_SHUTDOWN_STATUS:
|
case WM8962_THERMAL_SHUTDOWN_STATUS:
|
||||||
|
case WM8962_ADDITIONAL_CONTROL_4:
|
||||||
case WM8962_CLASS_D_CONTROL_1:
|
case WM8962_CLASS_D_CONTROL_1:
|
||||||
case WM8962_CLASS_D_CONTROL_2:
|
case WM8962_CLASS_D_CONTROL_2:
|
||||||
case WM8962_CLOCKING_4:
|
case WM8962_CLOCKING_4:
|
||||||
|
@ -43,10 +43,12 @@
|
|||||||
#define WM8994_NUM_DRC 3
|
#define WM8994_NUM_DRC 3
|
||||||
#define WM8994_NUM_EQ 3
|
#define WM8994_NUM_EQ 3
|
||||||
|
|
||||||
static struct {
|
struct wm8994_reg_mask {
|
||||||
unsigned int reg;
|
unsigned int reg;
|
||||||
unsigned int mask;
|
unsigned int mask;
|
||||||
} wm8994_vu_bits[] = {
|
};
|
||||||
|
|
||||||
|
static struct wm8994_reg_mask wm8994_vu_bits[] = {
|
||||||
{ WM8994_LEFT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU },
|
{ WM8994_LEFT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU },
|
||||||
{ WM8994_RIGHT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU },
|
{ WM8994_RIGHT_LINE_INPUT_1_2_VOLUME, WM8994_IN1_VU },
|
||||||
{ WM8994_LEFT_LINE_INPUT_3_4_VOLUME, WM8994_IN2_VU },
|
{ WM8994_LEFT_LINE_INPUT_3_4_VOLUME, WM8994_IN2_VU },
|
||||||
@ -60,14 +62,10 @@ static struct {
|
|||||||
|
|
||||||
{ WM8994_AIF1_DAC1_LEFT_VOLUME, WM8994_AIF1DAC1_VU },
|
{ WM8994_AIF1_DAC1_LEFT_VOLUME, WM8994_AIF1DAC1_VU },
|
||||||
{ WM8994_AIF1_DAC1_RIGHT_VOLUME, WM8994_AIF1DAC1_VU },
|
{ WM8994_AIF1_DAC1_RIGHT_VOLUME, WM8994_AIF1DAC1_VU },
|
||||||
{ WM8994_AIF1_DAC2_LEFT_VOLUME, WM8994_AIF1DAC2_VU },
|
|
||||||
{ WM8994_AIF1_DAC2_RIGHT_VOLUME, WM8994_AIF1DAC2_VU },
|
|
||||||
{ WM8994_AIF2_DAC_LEFT_VOLUME, WM8994_AIF2DAC_VU },
|
{ WM8994_AIF2_DAC_LEFT_VOLUME, WM8994_AIF2DAC_VU },
|
||||||
{ WM8994_AIF2_DAC_RIGHT_VOLUME, WM8994_AIF2DAC_VU },
|
{ WM8994_AIF2_DAC_RIGHT_VOLUME, WM8994_AIF2DAC_VU },
|
||||||
{ WM8994_AIF1_ADC1_LEFT_VOLUME, WM8994_AIF1ADC1_VU },
|
{ WM8994_AIF1_ADC1_LEFT_VOLUME, WM8994_AIF1ADC1_VU },
|
||||||
{ WM8994_AIF1_ADC1_RIGHT_VOLUME, WM8994_AIF1ADC1_VU },
|
{ WM8994_AIF1_ADC1_RIGHT_VOLUME, WM8994_AIF1ADC1_VU },
|
||||||
{ WM8994_AIF1_ADC2_LEFT_VOLUME, WM8994_AIF1ADC2_VU },
|
|
||||||
{ WM8994_AIF1_ADC2_RIGHT_VOLUME, WM8994_AIF1ADC2_VU },
|
|
||||||
{ WM8994_AIF2_ADC_LEFT_VOLUME, WM8994_AIF2ADC_VU },
|
{ WM8994_AIF2_ADC_LEFT_VOLUME, WM8994_AIF2ADC_VU },
|
||||||
{ WM8994_AIF2_ADC_RIGHT_VOLUME, WM8994_AIF1ADC2_VU },
|
{ WM8994_AIF2_ADC_RIGHT_VOLUME, WM8994_AIF1ADC2_VU },
|
||||||
{ WM8994_DAC1_LEFT_VOLUME, WM8994_DAC1_VU },
|
{ WM8994_DAC1_LEFT_VOLUME, WM8994_DAC1_VU },
|
||||||
@ -76,6 +74,14 @@ static struct {
|
|||||||
{ WM8994_DAC2_RIGHT_VOLUME, WM8994_DAC2_VU },
|
{ WM8994_DAC2_RIGHT_VOLUME, WM8994_DAC2_VU },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* VU bitfields for ADC2, DAC2 not available on WM1811 */
|
||||||
|
static struct wm8994_reg_mask wm8994_adc2_dac2_vu_bits[] = {
|
||||||
|
{ WM8994_AIF1_DAC2_LEFT_VOLUME, WM8994_AIF1DAC2_VU },
|
||||||
|
{ WM8994_AIF1_DAC2_RIGHT_VOLUME, WM8994_AIF1DAC2_VU },
|
||||||
|
{ WM8994_AIF1_ADC2_LEFT_VOLUME, WM8994_AIF1ADC2_VU },
|
||||||
|
{ WM8994_AIF1_ADC2_RIGHT_VOLUME, WM8994_AIF1ADC2_VU },
|
||||||
|
};
|
||||||
|
|
||||||
static int wm8994_drc_base[] = {
|
static int wm8994_drc_base[] = {
|
||||||
WM8994_AIF1_DRC1_1,
|
WM8994_AIF1_DRC1_1,
|
||||||
WM8994_AIF1_DRC2_1,
|
WM8994_AIF1_DRC2_1,
|
||||||
@ -1030,6 +1036,26 @@ static bool wm8994_check_class_w_digital(struct snd_soc_component *component)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void wm8994_update_vu_bits(struct snd_soc_component *component)
|
||||||
|
{
|
||||||
|
struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
|
||||||
|
struct wm8994 *control = wm8994->wm8994;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
|
||||||
|
snd_soc_component_write(component, wm8994_vu_bits[i].reg,
|
||||||
|
snd_soc_component_read(component,
|
||||||
|
wm8994_vu_bits[i].reg));
|
||||||
|
if (control->type == WM1811)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(wm8994_adc2_dac2_vu_bits); i++)
|
||||||
|
snd_soc_component_write(component,
|
||||||
|
wm8994_adc2_dac2_vu_bits[i].reg,
|
||||||
|
snd_soc_component_read(component,
|
||||||
|
wm8994_adc2_dac2_vu_bits[i].reg));
|
||||||
|
}
|
||||||
|
|
||||||
static int aif_mclk_set(struct snd_soc_component *component, int aif, bool enable)
|
static int aif_mclk_set(struct snd_soc_component *component, int aif, bool enable)
|
||||||
{
|
{
|
||||||
struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
|
struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
|
||||||
@ -1076,7 +1102,7 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w,
|
|||||||
struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
|
struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
|
||||||
struct wm8994 *control = wm8994->wm8994;
|
struct wm8994 *control = wm8994->wm8994;
|
||||||
int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA;
|
int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA;
|
||||||
int ret, i;
|
int ret;
|
||||||
int dac;
|
int dac;
|
||||||
int adc;
|
int adc;
|
||||||
int val;
|
int val;
|
||||||
@ -1144,10 +1170,7 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_SOC_DAPM_POST_PMU:
|
case SND_SOC_DAPM_POST_PMU:
|
||||||
for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
|
wm8994_update_vu_bits(component);
|
||||||
snd_soc_component_write(component, wm8994_vu_bits[i].reg,
|
|
||||||
snd_soc_component_read(component,
|
|
||||||
wm8994_vu_bits[i].reg));
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_SOC_DAPM_PRE_PMD:
|
case SND_SOC_DAPM_PRE_PMD:
|
||||||
@ -1181,7 +1204,7 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w,
|
|||||||
struct snd_kcontrol *kcontrol, int event)
|
struct snd_kcontrol *kcontrol, int event)
|
||||||
{
|
{
|
||||||
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
||||||
int ret, i;
|
int ret;
|
||||||
int dac;
|
int dac;
|
||||||
int adc;
|
int adc;
|
||||||
int val;
|
int val;
|
||||||
@ -1237,10 +1260,7 @@ static int aif2clk_ev(struct snd_soc_dapm_widget *w,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_SOC_DAPM_POST_PMU:
|
case SND_SOC_DAPM_POST_PMU:
|
||||||
for (i = 0; i < ARRAY_SIZE(wm8994_vu_bits); i++)
|
wm8994_update_vu_bits(component);
|
||||||
snd_soc_component_write(component, wm8994_vu_bits[i].reg,
|
|
||||||
snd_soc_component_read(component,
|
|
||||||
wm8994_vu_bits[i].reg));
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_SOC_DAPM_PRE_PMD:
|
case SND_SOC_DAPM_PRE_PMD:
|
||||||
@ -4346,6 +4366,14 @@ static int wm8994_component_probe(struct snd_soc_component *component)
|
|||||||
wm8994_vu_bits[i].mask,
|
wm8994_vu_bits[i].mask,
|
||||||
wm8994_vu_bits[i].mask);
|
wm8994_vu_bits[i].mask);
|
||||||
|
|
||||||
|
if (control->type != WM1811) {
|
||||||
|
for (i = 0; i < ARRAY_SIZE(wm8994_adc2_dac2_vu_bits); i++)
|
||||||
|
snd_soc_component_update_bits(component,
|
||||||
|
wm8994_adc2_dac2_vu_bits[i].reg,
|
||||||
|
wm8994_adc2_dac2_vu_bits[i].mask,
|
||||||
|
wm8994_adc2_dac2_vu_bits[i].mask);
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the low bit of the 3D stereo depth so TLV matches */
|
/* Set the low bit of the 3D stereo depth so TLV matches */
|
||||||
snd_soc_component_update_bits(component, WM8994_AIF1_DAC1_FILTERS_2,
|
snd_soc_component_update_bits(component, WM8994_AIF1_DAC1_FILTERS_2,
|
||||||
1 << WM8994_AIF1DAC1_3D_GAIN_SHIFT,
|
1 << WM8994_AIF1DAC1_3D_GAIN_SHIFT,
|
||||||
|
@ -73,6 +73,7 @@ struct cpu_priv {
|
|||||||
* @codec_priv: CODEC private data
|
* @codec_priv: CODEC private data
|
||||||
* @cpu_priv: CPU private data
|
* @cpu_priv: CPU private data
|
||||||
* @card: ASoC card structure
|
* @card: ASoC card structure
|
||||||
|
* @streams: Mask of current active streams
|
||||||
* @sample_rate: Current sample rate
|
* @sample_rate: Current sample rate
|
||||||
* @sample_format: Current sample format
|
* @sample_format: Current sample format
|
||||||
* @asrc_rate: ASRC sample rate used by Back-Ends
|
* @asrc_rate: ASRC sample rate used by Back-Ends
|
||||||
@ -89,6 +90,7 @@ struct fsl_asoc_card_priv {
|
|||||||
struct codec_priv codec_priv;
|
struct codec_priv codec_priv;
|
||||||
struct cpu_priv cpu_priv;
|
struct cpu_priv cpu_priv;
|
||||||
struct snd_soc_card card;
|
struct snd_soc_card card;
|
||||||
|
u8 streams;
|
||||||
u32 sample_rate;
|
u32 sample_rate;
|
||||||
snd_pcm_format_t sample_format;
|
snd_pcm_format_t sample_format;
|
||||||
u32 asrc_rate;
|
u32 asrc_rate;
|
||||||
@ -151,21 +153,17 @@ static int fsl_asoc_card_hw_params(struct snd_pcm_substream *substream,
|
|||||||
struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
|
struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
|
||||||
struct fsl_asoc_card_priv *priv = snd_soc_card_get_drvdata(rtd->card);
|
struct fsl_asoc_card_priv *priv = snd_soc_card_get_drvdata(rtd->card);
|
||||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||||
|
struct codec_priv *codec_priv = &priv->codec_priv;
|
||||||
struct cpu_priv *cpu_priv = &priv->cpu_priv;
|
struct cpu_priv *cpu_priv = &priv->cpu_priv;
|
||||||
struct device *dev = rtd->card->dev;
|
struct device *dev = rtd->card->dev;
|
||||||
|
unsigned int pll_out;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
priv->sample_rate = params_rate(params);
|
priv->sample_rate = params_rate(params);
|
||||||
priv->sample_format = params_format(params);
|
priv->sample_format = params_format(params);
|
||||||
|
priv->streams |= BIT(substream->stream);
|
||||||
|
|
||||||
/*
|
if (fsl_asoc_card_is_ac97(priv))
|
||||||
* If codec-dai is DAI Master and all configurations are already in the
|
|
||||||
* set_bias_level(), bypass the remaining settings in hw_params().
|
|
||||||
* Note: (dai_fmt & CBM_CFM) includes CBM_CFM and CBM_CFS.
|
|
||||||
*/
|
|
||||||
if ((priv->card.set_bias_level &&
|
|
||||||
priv->dai_fmt & SND_SOC_DAIFMT_CBM_CFM) ||
|
|
||||||
fsl_asoc_card_is_ac97(priv))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Specific configurations of DAIs starts from here */
|
/* Specific configurations of DAIs starts from here */
|
||||||
@ -174,7 +172,7 @@ static int fsl_asoc_card_hw_params(struct snd_pcm_substream *substream,
|
|||||||
cpu_priv->sysclk_dir[tx]);
|
cpu_priv->sysclk_dir[tx]);
|
||||||
if (ret && ret != -ENOTSUPP) {
|
if (ret && ret != -ENOTSUPP) {
|
||||||
dev_err(dev, "failed to set sysclk for cpu dai\n");
|
dev_err(dev, "failed to set sysclk for cpu dai\n");
|
||||||
return ret;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cpu_priv->slot_width) {
|
if (cpu_priv->slot_width) {
|
||||||
@ -182,6 +180,68 @@ static int fsl_asoc_card_hw_params(struct snd_pcm_substream *substream,
|
|||||||
cpu_priv->slot_width);
|
cpu_priv->slot_width);
|
||||||
if (ret && ret != -ENOTSUPP) {
|
if (ret && ret != -ENOTSUPP) {
|
||||||
dev_err(dev, "failed to set TDM slot for cpu dai\n");
|
dev_err(dev, "failed to set TDM slot for cpu dai\n");
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Specific configuration for PLL */
|
||||||
|
if (codec_priv->pll_id && codec_priv->fll_id) {
|
||||||
|
if (priv->sample_format == SNDRV_PCM_FORMAT_S24_LE)
|
||||||
|
pll_out = priv->sample_rate * 384;
|
||||||
|
else
|
||||||
|
pll_out = priv->sample_rate * 256;
|
||||||
|
|
||||||
|
ret = snd_soc_dai_set_pll(asoc_rtd_to_codec(rtd, 0),
|
||||||
|
codec_priv->pll_id,
|
||||||
|
codec_priv->mclk_id,
|
||||||
|
codec_priv->mclk_freq, pll_out);
|
||||||
|
if (ret) {
|
||||||
|
dev_err(dev, "failed to start FLL: %d\n", ret);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = snd_soc_dai_set_sysclk(asoc_rtd_to_codec(rtd, 0),
|
||||||
|
codec_priv->fll_id,
|
||||||
|
pll_out, SND_SOC_CLOCK_IN);
|
||||||
|
|
||||||
|
if (ret && ret != -ENOTSUPP) {
|
||||||
|
dev_err(dev, "failed to set SYSCLK: %d\n", ret);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
priv->streams &= ~BIT(substream->stream);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int fsl_asoc_card_hw_free(struct snd_pcm_substream *substream)
|
||||||
|
{
|
||||||
|
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||||
|
struct fsl_asoc_card_priv *priv = snd_soc_card_get_drvdata(rtd->card);
|
||||||
|
struct codec_priv *codec_priv = &priv->codec_priv;
|
||||||
|
struct device *dev = rtd->card->dev;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
priv->streams &= ~BIT(substream->stream);
|
||||||
|
|
||||||
|
if (!priv->streams && codec_priv->pll_id && codec_priv->fll_id) {
|
||||||
|
/* Force freq to be 0 to avoid error message in codec */
|
||||||
|
ret = snd_soc_dai_set_sysclk(asoc_rtd_to_codec(rtd, 0),
|
||||||
|
codec_priv->mclk_id,
|
||||||
|
0,
|
||||||
|
SND_SOC_CLOCK_IN);
|
||||||
|
if (ret) {
|
||||||
|
dev_err(dev, "failed to switch away from FLL: %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = snd_soc_dai_set_pll(asoc_rtd_to_codec(rtd, 0),
|
||||||
|
codec_priv->pll_id, 0, 0, 0);
|
||||||
|
if (ret && ret != -ENOTSUPP) {
|
||||||
|
dev_err(dev, "failed to stop FLL: %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -191,6 +251,7 @@ static int fsl_asoc_card_hw_params(struct snd_pcm_substream *substream,
|
|||||||
|
|
||||||
static const struct snd_soc_ops fsl_asoc_card_ops = {
|
static const struct snd_soc_ops fsl_asoc_card_ops = {
|
||||||
.hw_params = fsl_asoc_card_hw_params,
|
.hw_params = fsl_asoc_card_hw_params,
|
||||||
|
.hw_free = fsl_asoc_card_hw_free,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
static int be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
||||||
@ -254,75 +315,6 @@ static struct snd_soc_dai_link fsl_asoc_card_dai[] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int fsl_asoc_card_set_bias_level(struct snd_soc_card *card,
|
|
||||||
struct snd_soc_dapm_context *dapm,
|
|
||||||
enum snd_soc_bias_level level)
|
|
||||||
{
|
|
||||||
struct fsl_asoc_card_priv *priv = snd_soc_card_get_drvdata(card);
|
|
||||||
struct snd_soc_pcm_runtime *rtd;
|
|
||||||
struct snd_soc_dai *codec_dai;
|
|
||||||
struct codec_priv *codec_priv = &priv->codec_priv;
|
|
||||||
struct device *dev = card->dev;
|
|
||||||
unsigned int pll_out;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
rtd = snd_soc_get_pcm_runtime(card, &card->dai_link[0]);
|
|
||||||
codec_dai = asoc_rtd_to_codec(rtd, 0);
|
|
||||||
if (dapm->dev != codec_dai->dev)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
switch (level) {
|
|
||||||
case SND_SOC_BIAS_PREPARE:
|
|
||||||
if (dapm->bias_level != SND_SOC_BIAS_STANDBY)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (priv->sample_format == SNDRV_PCM_FORMAT_S24_LE)
|
|
||||||
pll_out = priv->sample_rate * 384;
|
|
||||||
else
|
|
||||||
pll_out = priv->sample_rate * 256;
|
|
||||||
|
|
||||||
ret = snd_soc_dai_set_pll(codec_dai, codec_priv->pll_id,
|
|
||||||
codec_priv->mclk_id,
|
|
||||||
codec_priv->mclk_freq, pll_out);
|
|
||||||
if (ret) {
|
|
||||||
dev_err(dev, "failed to start FLL: %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = snd_soc_dai_set_sysclk(codec_dai, codec_priv->fll_id,
|
|
||||||
pll_out, SND_SOC_CLOCK_IN);
|
|
||||||
if (ret && ret != -ENOTSUPP) {
|
|
||||||
dev_err(dev, "failed to set SYSCLK: %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SND_SOC_BIAS_STANDBY:
|
|
||||||
if (dapm->bias_level != SND_SOC_BIAS_PREPARE)
|
|
||||||
break;
|
|
||||||
|
|
||||||
ret = snd_soc_dai_set_sysclk(codec_dai, codec_priv->mclk_id,
|
|
||||||
codec_priv->mclk_freq,
|
|
||||||
SND_SOC_CLOCK_IN);
|
|
||||||
if (ret && ret != -ENOTSUPP) {
|
|
||||||
dev_err(dev, "failed to switch away from FLL: %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = snd_soc_dai_set_pll(codec_dai, codec_priv->pll_id, 0, 0, 0);
|
|
||||||
if (ret) {
|
|
||||||
dev_err(dev, "failed to stop FLL: %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int fsl_asoc_card_audmux_init(struct device_node *np,
|
static int fsl_asoc_card_audmux_init(struct device_node *np,
|
||||||
struct fsl_asoc_card_priv *priv)
|
struct fsl_asoc_card_priv *priv)
|
||||||
{
|
{
|
||||||
@ -611,7 +603,6 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
|
|||||||
/* Diversify the card configurations */
|
/* Diversify the card configurations */
|
||||||
if (of_device_is_compatible(np, "fsl,imx-audio-cs42888")) {
|
if (of_device_is_compatible(np, "fsl,imx-audio-cs42888")) {
|
||||||
codec_dai_name = "cs42888";
|
codec_dai_name = "cs42888";
|
||||||
priv->card.set_bias_level = NULL;
|
|
||||||
priv->cpu_priv.sysclk_freq[TX] = priv->codec_priv.mclk_freq;
|
priv->cpu_priv.sysclk_freq[TX] = priv->codec_priv.mclk_freq;
|
||||||
priv->cpu_priv.sysclk_freq[RX] = priv->codec_priv.mclk_freq;
|
priv->cpu_priv.sysclk_freq[RX] = priv->codec_priv.mclk_freq;
|
||||||
priv->cpu_priv.sysclk_dir[TX] = SND_SOC_CLOCK_OUT;
|
priv->cpu_priv.sysclk_dir[TX] = SND_SOC_CLOCK_OUT;
|
||||||
@ -628,26 +619,22 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
|
|||||||
priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
|
priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
|
||||||
} else if (of_device_is_compatible(np, "fsl,imx-audio-wm8962")) {
|
} else if (of_device_is_compatible(np, "fsl,imx-audio-wm8962")) {
|
||||||
codec_dai_name = "wm8962";
|
codec_dai_name = "wm8962";
|
||||||
priv->card.set_bias_level = fsl_asoc_card_set_bias_level;
|
|
||||||
priv->codec_priv.mclk_id = WM8962_SYSCLK_MCLK;
|
priv->codec_priv.mclk_id = WM8962_SYSCLK_MCLK;
|
||||||
priv->codec_priv.fll_id = WM8962_SYSCLK_FLL;
|
priv->codec_priv.fll_id = WM8962_SYSCLK_FLL;
|
||||||
priv->codec_priv.pll_id = WM8962_FLL;
|
priv->codec_priv.pll_id = WM8962_FLL;
|
||||||
priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
|
priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
|
||||||
} else if (of_device_is_compatible(np, "fsl,imx-audio-wm8960")) {
|
} else if (of_device_is_compatible(np, "fsl,imx-audio-wm8960")) {
|
||||||
codec_dai_name = "wm8960-hifi";
|
codec_dai_name = "wm8960-hifi";
|
||||||
priv->card.set_bias_level = fsl_asoc_card_set_bias_level;
|
|
||||||
priv->codec_priv.fll_id = WM8960_SYSCLK_AUTO;
|
priv->codec_priv.fll_id = WM8960_SYSCLK_AUTO;
|
||||||
priv->codec_priv.pll_id = WM8960_SYSCLK_AUTO;
|
priv->codec_priv.pll_id = WM8960_SYSCLK_AUTO;
|
||||||
priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
|
priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
|
||||||
} else if (of_device_is_compatible(np, "fsl,imx-audio-ac97")) {
|
} else if (of_device_is_compatible(np, "fsl,imx-audio-ac97")) {
|
||||||
codec_dai_name = "ac97-hifi";
|
codec_dai_name = "ac97-hifi";
|
||||||
priv->card.set_bias_level = NULL;
|
|
||||||
priv->dai_fmt = SND_SOC_DAIFMT_AC97;
|
priv->dai_fmt = SND_SOC_DAIFMT_AC97;
|
||||||
priv->card.dapm_routes = audio_map_ac97;
|
priv->card.dapm_routes = audio_map_ac97;
|
||||||
priv->card.num_dapm_routes = ARRAY_SIZE(audio_map_ac97);
|
priv->card.num_dapm_routes = ARRAY_SIZE(audio_map_ac97);
|
||||||
} else if (of_device_is_compatible(np, "fsl,imx-audio-mqs")) {
|
} else if (of_device_is_compatible(np, "fsl,imx-audio-mqs")) {
|
||||||
codec_dai_name = "fsl-mqs-dai";
|
codec_dai_name = "fsl-mqs-dai";
|
||||||
priv->card.set_bias_level = NULL;
|
|
||||||
priv->dai_fmt = SND_SOC_DAIFMT_LEFT_J |
|
priv->dai_fmt = SND_SOC_DAIFMT_LEFT_J |
|
||||||
SND_SOC_DAIFMT_CBS_CFS |
|
SND_SOC_DAIFMT_CBS_CFS |
|
||||||
SND_SOC_DAIFMT_NB_NF;
|
SND_SOC_DAIFMT_NB_NF;
|
||||||
@ -657,7 +644,6 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
|
|||||||
priv->card.num_dapm_routes = ARRAY_SIZE(audio_map_tx);
|
priv->card.num_dapm_routes = ARRAY_SIZE(audio_map_tx);
|
||||||
} else if (of_device_is_compatible(np, "fsl,imx-audio-wm8524")) {
|
} else if (of_device_is_compatible(np, "fsl,imx-audio-wm8524")) {
|
||||||
codec_dai_name = "wm8524-hifi";
|
codec_dai_name = "wm8524-hifi";
|
||||||
priv->card.set_bias_level = NULL;
|
|
||||||
priv->dai_fmt |= SND_SOC_DAIFMT_CBS_CFS;
|
priv->dai_fmt |= SND_SOC_DAIFMT_CBS_CFS;
|
||||||
priv->dai_link[1].dpcm_capture = 0;
|
priv->dai_link[1].dpcm_capture = 0;
|
||||||
priv->dai_link[2].dpcm_capture = 0;
|
priv->dai_link[2].dpcm_capture = 0;
|
||||||
|
@ -339,7 +339,6 @@ static int psc_dma_new(struct snd_soc_component *component,
|
|||||||
static void psc_dma_free(struct snd_soc_component *component,
|
static void psc_dma_free(struct snd_soc_component *component,
|
||||||
struct snd_pcm *pcm)
|
struct snd_pcm *pcm)
|
||||||
{
|
{
|
||||||
struct snd_soc_pcm_runtime *rtd = pcm->private_data;
|
|
||||||
struct snd_pcm_substream *substream;
|
struct snd_pcm_substream *substream;
|
||||||
int stream;
|
int stream;
|
||||||
|
|
||||||
|
@ -331,7 +331,7 @@ static int sst_media_open(struct snd_pcm_substream *substream,
|
|||||||
|
|
||||||
ret_val = power_up_sst(stream);
|
ret_val = power_up_sst(stream);
|
||||||
if (ret_val < 0)
|
if (ret_val < 0)
|
||||||
return ret_val;
|
goto out_power_up;
|
||||||
|
|
||||||
/* Make sure, that the period size is always even */
|
/* Make sure, that the period size is always even */
|
||||||
snd_pcm_hw_constraint_step(substream->runtime, 0,
|
snd_pcm_hw_constraint_step(substream->runtime, 0,
|
||||||
@ -340,8 +340,9 @@ static int sst_media_open(struct snd_pcm_substream *substream,
|
|||||||
return snd_pcm_hw_constraint_integer(runtime,
|
return snd_pcm_hw_constraint_integer(runtime,
|
||||||
SNDRV_PCM_HW_PARAM_PERIODS);
|
SNDRV_PCM_HW_PARAM_PERIODS);
|
||||||
out_ops:
|
out_ops:
|
||||||
kfree(stream);
|
|
||||||
mutex_unlock(&sst_lock);
|
mutex_unlock(&sst_lock);
|
||||||
|
out_power_up:
|
||||||
|
kfree(stream);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1150,206 +1150,206 @@ static int q6afe_of_xlate_dai_name(struct snd_soc_component *component,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const struct snd_soc_dapm_widget q6afe_dai_widgets[] = {
|
static const struct snd_soc_dapm_widget q6afe_dai_widgets[] = {
|
||||||
SND_SOC_DAPM_AIF_IN("HDMI_RX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_IN("HDMI_RX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SLIMBUS_0_RX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_IN("SLIMBUS_0_RX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SLIMBUS_1_RX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_IN("SLIMBUS_1_RX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SLIMBUS_2_RX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_IN("SLIMBUS_2_RX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SLIMBUS_3_RX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_IN("SLIMBUS_3_RX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SLIMBUS_4_RX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_IN("SLIMBUS_4_RX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SLIMBUS_5_RX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_IN("SLIMBUS_5_RX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SLIMBUS_6_RX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_IN("SLIMBUS_6_RX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_TX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_TX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_TX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_TX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_TX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_TX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_TX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_TX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_TX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_TX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_TX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_TX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_TX", NULL, 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_TX", NULL, 0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_MI2S_RX", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_MI2S_RX", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_TX", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_TX", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_MI2S_RX", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_MI2S_RX", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_MI2S_TX", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_MI2S_TX", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_MI2S_RX", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_MI2S_RX", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_MI2S_TX", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_MI2S_TX", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_MI2S_RX_SD1",
|
SND_SOC_DAPM_AIF_IN("SEC_MI2S_RX_SD1",
|
||||||
"Secondary MI2S Playback SD1",
|
"Secondary MI2S Playback SD1",
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("PRI_MI2S_RX", NULL,
|
SND_SOC_DAPM_AIF_IN("PRI_MI2S_RX", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRI_MI2S_TX", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRI_MI2S_TX", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
|
|
||||||
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_0", NULL,
|
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_1", NULL,
|
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_2", NULL,
|
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_3", NULL,
|
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_4", NULL,
|
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_5", NULL,
|
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_6", NULL,
|
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_7", NULL,
|
SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_0", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_1", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_2", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_3", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_4", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_5", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_6", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_7", NULL,
|
SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
|
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7", NULL,
|
SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7", NULL,
|
SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
|
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7", NULL,
|
SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7", NULL,
|
SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
|
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7", NULL,
|
SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
|
|
||||||
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0", NULL,
|
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1", NULL,
|
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2", NULL,
|
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3", NULL,
|
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4", NULL,
|
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5", NULL,
|
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6", NULL,
|
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7", NULL,
|
SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7", NULL,
|
SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7", NULL,
|
||||||
0, 0, 0, 0),
|
0, SND_SOC_NOPM, 0, 0),
|
||||||
SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT_RX", "NULL", 0, 0, 0, 0),
|
SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT_RX", "NULL", 0, SND_SOC_NOPM, 0, 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct snd_soc_component_driver q6afe_dai_component = {
|
static const struct snd_soc_component_driver q6afe_dai_component = {
|
||||||
|
@ -973,6 +973,20 @@ static int msm_routing_probe(struct snd_soc_component *c)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int q6routing_reg_read(struct snd_soc_component *component,
|
||||||
|
unsigned int reg)
|
||||||
|
{
|
||||||
|
/* default value */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int q6routing_reg_write(struct snd_soc_component *component,
|
||||||
|
unsigned int reg, unsigned int val)
|
||||||
|
{
|
||||||
|
/* dummy */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct snd_soc_component_driver msm_soc_routing_component = {
|
static const struct snd_soc_component_driver msm_soc_routing_component = {
|
||||||
.probe = msm_routing_probe,
|
.probe = msm_routing_probe,
|
||||||
.name = DRV_NAME,
|
.name = DRV_NAME,
|
||||||
@ -981,6 +995,8 @@ static const struct snd_soc_component_driver msm_soc_routing_component = {
|
|||||||
.num_dapm_widgets = ARRAY_SIZE(msm_qdsp6_widgets),
|
.num_dapm_widgets = ARRAY_SIZE(msm_qdsp6_widgets),
|
||||||
.dapm_routes = intercon,
|
.dapm_routes = intercon,
|
||||||
.num_dapm_routes = ARRAY_SIZE(intercon),
|
.num_dapm_routes = ARRAY_SIZE(intercon),
|
||||||
|
.read = q6routing_reg_read,
|
||||||
|
.write = q6routing_reg_write,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int q6pcm_routing_probe(struct platform_device *pdev)
|
static int q6pcm_routing_probe(struct platform_device *pdev)
|
||||||
|
@ -406,7 +406,7 @@ static unsigned int soc_component_read_no_lock(
|
|||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
soc_component_ret(component, ret);
|
return soc_component_ret(component, ret);
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ static int tegra186_dspk_put_control(struct snd_kcontrol *kcontrol,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tegra186_dspk_runtime_suspend(struct device *dev)
|
static int __maybe_unused tegra186_dspk_runtime_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra186_dspk *dspk = dev_get_drvdata(dev);
|
struct tegra186_dspk *dspk = dev_get_drvdata(dev);
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ static int tegra186_dspk_runtime_suspend(struct device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tegra186_dspk_runtime_resume(struct device *dev)
|
static int __maybe_unused tegra186_dspk_runtime_resume(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra186_dspk *dspk = dev_get_drvdata(dev);
|
struct tegra186_dspk *dspk = dev_get_drvdata(dev);
|
||||||
int err;
|
int err;
|
||||||
|
@ -219,7 +219,7 @@ static const struct regmap_config tegra186_admaif_regmap_config = {
|
|||||||
.cache_type = REGCACHE_FLAT,
|
.cache_type = REGCACHE_FLAT,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int tegra_admaif_runtime_suspend(struct device *dev)
|
static int __maybe_unused tegra_admaif_runtime_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra_admaif *admaif = dev_get_drvdata(dev);
|
struct tegra_admaif *admaif = dev_get_drvdata(dev);
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ static int tegra_admaif_runtime_suspend(struct device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tegra_admaif_runtime_resume(struct device *dev)
|
static int __maybe_unused tegra_admaif_runtime_resume(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra_admaif *admaif = dev_get_drvdata(dev);
|
struct tegra_admaif *admaif = dev_get_drvdata(dev);
|
||||||
|
|
||||||
|
@ -564,7 +564,7 @@ static const struct of_device_id tegra_ahub_of_match[] = {
|
|||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, tegra_ahub_of_match);
|
MODULE_DEVICE_TABLE(of, tegra_ahub_of_match);
|
||||||
|
|
||||||
static int tegra_ahub_runtime_suspend(struct device *dev)
|
static int __maybe_unused tegra_ahub_runtime_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra_ahub *ahub = dev_get_drvdata(dev);
|
struct tegra_ahub *ahub = dev_get_drvdata(dev);
|
||||||
|
|
||||||
@ -576,7 +576,7 @@ static int tegra_ahub_runtime_suspend(struct device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tegra_ahub_runtime_resume(struct device *dev)
|
static int __maybe_unused tegra_ahub_runtime_resume(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra_ahub *ahub = dev_get_drvdata(dev);
|
struct tegra_ahub *ahub = dev_get_drvdata(dev);
|
||||||
int err;
|
int err;
|
||||||
|
@ -40,7 +40,7 @@ static const struct reg_default tegra210_dmic_reg_defaults[] = {
|
|||||||
{ TEGRA210_DMIC_LP_BIQUAD_1_COEF_4, 0x0 },
|
{ TEGRA210_DMIC_LP_BIQUAD_1_COEF_4, 0x0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
static int tegra210_dmic_runtime_suspend(struct device *dev)
|
static int __maybe_unused tegra210_dmic_runtime_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra210_dmic *dmic = dev_get_drvdata(dev);
|
struct tegra210_dmic *dmic = dev_get_drvdata(dev);
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ static int tegra210_dmic_runtime_suspend(struct device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tegra210_dmic_runtime_resume(struct device *dev)
|
static int __maybe_unused tegra210_dmic_runtime_resume(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra210_dmic *dmic = dev_get_drvdata(dev);
|
struct tegra210_dmic *dmic = dev_get_drvdata(dev);
|
||||||
int err;
|
int err;
|
||||||
|
@ -164,7 +164,7 @@ static int tegra210_i2s_init(struct snd_soc_dapm_widget *w,
|
|||||||
return tegra210_i2s_sw_reset(compnt, is_playback);
|
return tegra210_i2s_sw_reset(compnt, is_playback);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tegra210_i2s_runtime_suspend(struct device *dev)
|
static int __maybe_unused tegra210_i2s_runtime_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra210_i2s *i2s = dev_get_drvdata(dev);
|
struct tegra210_i2s *i2s = dev_get_drvdata(dev);
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ static int tegra210_i2s_runtime_suspend(struct device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tegra210_i2s_runtime_resume(struct device *dev)
|
static int __maybe_unused tegra210_i2s_runtime_resume(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra210_i2s *i2s = dev_get_drvdata(dev);
|
struct tegra210_i2s *i2s = dev_get_drvdata(dev);
|
||||||
int err;
|
int err;
|
||||||
|
Loading…
Reference in New Issue
Block a user