Merge "ASoC: msm8952-slimbus: add mixer control for btsco sampling rate"

This commit is contained in:
Linux Build Service Account 2015-05-27 04:17:50 -07:00 committed by Gerrit - the friendly Code Review server
commit 67ce3a92da
1 changed files with 39 additions and 1 deletions

View File

@ -34,6 +34,8 @@
#define DRV_NAME "msm8952-slimbus-wcd"
#define BTSCO_RATE_8KHZ 8000
#define BTSCO_RATE_16KHZ 16000
#define SAMPLING_RATE_8KHZ 8000
#define SAMPLING_RATE_16KHZ 16000
#define SAMPLING_RATE_32KHZ 32000
@ -58,6 +60,11 @@
#define Q6AFE_LPASS_OSR_CLK_9_P600_MHZ 0x927C00
enum btsco_rates {
RATE_8KHZ_ID,
RATE_16KHZ_ID,
};
static int slim0_rx_sample_rate = SAMPLING_RATE_48KHZ;
static int slim0_tx_sample_rate = SAMPLING_RATE_48KHZ;
static int slim0_rx_bit_format = SNDRV_PCM_FORMAT_S16_LE;
@ -629,9 +636,32 @@ static int slim0_tx_sample_rate_put(struct snd_kcontrol *kcontrol,
return rc;
}
static int msm_btsco_rate_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
pr_debug("%s: msm_btsco_rate = %d", __func__, msm_btsco_rate);
ucontrol->value.integer.value[0] = msm_btsco_rate;
return 0;
}
static int msm_btsco_rate_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
switch (ucontrol->value.integer.value[0]) {
case RATE_8KHZ_ID:
msm_btsco_rate = BTSCO_RATE_8KHZ;
break;
case RATE_16KHZ_ID:
msm_btsco_rate = BTSCO_RATE_16KHZ;
break;
default:
msm_btsco_rate = BTSCO_RATE_8KHZ;
break;
}
pr_debug("%s: msm_btsco_rate = %d\n", __func__, msm_btsco_rate);
return 0;
}
static const char *const spk_function[] = {"Off", "On"};
static const char *const slim0_rx_ch_text[] = {"One", "Two"};
@ -652,6 +682,12 @@ static const struct soc_enum msm_snd_enum[] = {
SOC_ENUM_SINGLE_EXT(2, vi_feed_ch_text),
};
static const char *const btsco_rate_text[] = {"BTSCO_RATE_8KHZ",
"BTSCO_RATE_16KHZ"};
static const struct soc_enum msm_btsco_enum[] = {
SOC_ENUM_SINGLE_EXT(2, btsco_rate_text),
};
static const struct snd_kcontrol_new msm_snd_controls[] = {
SOC_ENUM_EXT("Speaker Function", msm_snd_enum[0], msm8952_get_spk,
msm8952_set_spk),
@ -671,6 +707,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = {
slim0_tx_sample_rate_get, slim0_tx_sample_rate_put),
SOC_ENUM_EXT("SLIM_0_TX Format", msm_snd_enum[3],
slim0_tx_bit_format_get, slim0_tx_bit_format_put),
SOC_ENUM_EXT("Internal BTSCO SampleRate", msm_btsco_enum[0],
msm_btsco_rate_get, msm_btsco_rate_put),
};
int msm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,