Commit 19002fd5 authored by Przemyslaw Bruski's avatar Przemyslaw Bruski Committed by Takashi Iwai

ALSA: ctxfi - Fix microphone boost codes/comments

microphone boost was set at +12dB, not +20dB (like in Windows driver
and in adc_conf structure declaration), some comments added.
Signed-off-by: default avatarPrzemyslaw Bruski <pbruskispam@op.pl>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 7e79443c
...@@ -1307,10 +1307,10 @@ static int hw_pll_init(struct hw *hw, unsigned int rsr) ...@@ -1307,10 +1307,10 @@ static int hw_pll_init(struct hw *hw, unsigned int rsr)
set_field(&pllctl, PLLCTL_B, 0); set_field(&pllctl, PLLCTL_B, 0);
if (48000 == rsr) { if (48000 == rsr) {
set_field(&pllctl, PLLCTL_FD, 16 - 2); set_field(&pllctl, PLLCTL_FD, 16 - 2);
set_field(&pllctl, PLLCTL_RD, 1 - 1); set_field(&pllctl, PLLCTL_RD, 1 - 1); /* 3000*16/1 = 48000 */
} else { /* 44100 */ } else { /* 44100 */
set_field(&pllctl, PLLCTL_FD, 147 - 2); set_field(&pllctl, PLLCTL_FD, 147 - 2);
set_field(&pllctl, PLLCTL_RD, 10 - 1); set_field(&pllctl, PLLCTL_RD, 10 - 1); /* 3000*147/10 = 44100 */
} }
hw_write_20kx(hw, PLL_CTL, pllctl); hw_write_20kx(hw, PLL_CTL, pllctl);
mdelay(40); mdelay(40);
...@@ -1740,6 +1740,10 @@ static int hw_is_adc_input_selected(struct hw *hw, enum ADCSRC type) ...@@ -1740,6 +1740,10 @@ static int hw_is_adc_input_selected(struct hw *hw, enum ADCSRC type)
return data; return data;
} }
#define MIC_BOOST_0DB 0xCF
#define MIC_BOOST_STEPS_PER_DB 2
#define MIC_BOOST_20DB (MIC_BOOST_0DB + 20 * MIC_BOOST_STEPS_PER_DB)
static int hw_adc_input_select(struct hw *hw, enum ADCSRC type) static int hw_adc_input_select(struct hw *hw, enum ADCSRC type)
{ {
u32 data; u32 data;
...@@ -1751,10 +1755,12 @@ static int hw_adc_input_select(struct hw *hw, enum ADCSRC type) ...@@ -1751,10 +1755,12 @@ static int hw_adc_input_select(struct hw *hw, enum ADCSRC type)
hw_write_20kx(hw, GPIO_DATA, data); hw_write_20kx(hw, GPIO_DATA, data);
hw20k2_i2c_write(hw, MAKE_WM8775_ADDR(WM8775_ADCMC, 0x101), hw20k2_i2c_write(hw, MAKE_WM8775_ADDR(WM8775_ADCMC, 0x101),
MAKE_WM8775_DATA(0x101)); /* Mic-in */ MAKE_WM8775_DATA(0x101)); /* Mic-in */
hw20k2_i2c_write(hw, MAKE_WM8775_ADDR(WM8775_AADCL, 0xE7), hw20k2_i2c_write(hw,
MAKE_WM8775_DATA(0xE7)); /* +12dB boost */ MAKE_WM8775_ADDR(WM8775_AADCL, MIC_BOOST_20DB),
hw20k2_i2c_write(hw, MAKE_WM8775_ADDR(WM8775_AADCR, 0xE7), MAKE_WM8775_DATA(MIC_BOOST_20DB)); /* +20dB */
MAKE_WM8775_DATA(0xE7)); /* +12dB boost */ hw20k2_i2c_write(hw,
MAKE_WM8775_ADDR(WM8775_AADCR, MIC_BOOST_20DB),
MAKE_WM8775_DATA(MIC_BOOST_20DB)); /* +20dB */
break; break;
case ADC_LINEIN: case ADC_LINEIN:
data &= ~(0x1 << 14); data &= ~(0x1 << 14);
...@@ -1827,10 +1833,12 @@ static int hw_adc_init(struct hw *hw, const struct adc_conf *info) ...@@ -1827,10 +1833,12 @@ static int hw_adc_init(struct hw *hw, const struct adc_conf *info)
hw20k2_i2c_write(hw, MAKE_WM8775_ADDR(WM8775_ADCMC, 0x101), hw20k2_i2c_write(hw, MAKE_WM8775_ADDR(WM8775_ADCMC, 0x101),
MAKE_WM8775_DATA(0x101)); /* Mic-in */ MAKE_WM8775_DATA(0x101)); /* Mic-in */
hw20k2_i2c_write(hw, MAKE_WM8775_ADDR(WM8775_AADCL, 0xE7), hw20k2_i2c_write(hw,
MAKE_WM8775_DATA(0xE7)); /* +12dB boost */ MAKE_WM8775_ADDR(WM8775_AADCL, MIC_BOOST_20DB),
hw20k2_i2c_write(hw, MAKE_WM8775_ADDR(WM8775_AADCR, 0xE7), MAKE_WM8775_DATA(MIC_BOOST_20DB)); /* +20dB */
MAKE_WM8775_DATA(0xE7)); /* +12dB boost */ hw20k2_i2c_write(hw,
MAKE_WM8775_ADDR(WM8775_AADCR, MIC_BOOST_20DB),
MAKE_WM8775_DATA(MIC_BOOST_20DB)); /* +20dB */
} else if (mux == 2) { } else if (mux == 2) {
/* Configures GPIO data to select Line-in */ /* Configures GPIO data to select Line-in */
data &= ~(0x1 << 14); data &= ~(0x1 << 14);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment