audio: Add binv setting [1/2]

PD#SWPL-4733

Problem:
  The Speaker has noise

Solution:
  The binv is not correct for TDM out c,
  we will use amixer to set it

Verify:
  A113

Change-Id: I7c8af8e00e3c8834533347947630a6944b7e2136
Signed-off-by: yujie.wu <yujie.wu@amlogic.com>
This commit is contained in:
yujie.wu
2019-02-22 13:47:22 +08:00
committed by Jianxin Pan
parent f090bc0e5a
commit c4e7cda7ce

View File

@@ -669,6 +669,40 @@ static int audio_inskew_set_enum(
return 0;
}
static const char *const tdmout_c_binv_texts[] = {
"0",
"1",
};
static const struct soc_enum tdmout_c_binv_enum =
SOC_ENUM_SINGLE(SND_SOC_NOPM, 0, ARRAY_SIZE(tdmout_c_binv_texts),
tdmout_c_binv_texts);
static int tdmout_c_binv_get_enum(
struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
unsigned int val;
val = audiobus_read(EE_AUDIO_CLK_TDMOUT_C_CTRL);
ucontrol->value.enumerated.item[0] = ((val >> 29) & 0x1);
return 0;
}
static int tdmout_c_binv_set_enum(
struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
int binv;
binv = ucontrol->value.enumerated.item[0];
audiobus_update_bits(EE_AUDIO_CLK_TDMOUT_C_CTRL, 0x1 << 29, binv << 29);
return 0;
}
#define SND_MIX(xname, type, xenum, xshift, xmask) \
@@ -977,6 +1011,11 @@ static const struct snd_kcontrol_new snd_auge_controls[] = {
audio_inskew_enum,
audio_inskew_get_enum,
audio_inskew_set_enum),
/* tdmc out binv */
SOC_ENUM_EXT("tdmout_c binv set",
tdmout_c_binv_enum,
tdmout_c_binv_get_enum,
tdmout_c_binv_set_enum),
};