mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
ALSA: ctxfi: Fix silent playback on Titanium HD (SB1270)
Commit4b490e0d10("ALSA: ctxfi: Add ADC helper functions for GPIO") moved the GPIO_DATA read into hw_adc_stop(), but the Titanium HD (SB1270) setup in hw_adc_init() uses the local data variable holding the GPIO_CTRL value. Writing this value to GPIO_DATA sets the output mute bits. Playback runs without errors, but the outputs stay muted. Re-read GPIO_DATA before setting the speed mode bits. Also, add the delay after writing the mode bits, as in the original sequence. On affected kernels, switching the output selection was reported to restore clean playback. Fixes:4b490e0d10("ALSA: ctxfi: Add ADC helper functions for GPIO") Cc: stable@vger.kernel.org Reported-by: Dany Patoine <dany_patoine@hotmail.com> Closes: https://lore.kernel.org/linux-sound/DM6PR02MB5433A42E81FEFAC400DD1905EA8B2@DM6PR02MB5433.namprd02.prod.outlook.com/ Signed-off-by: Harin Lee <me@harin.net> Link: https://patch.msgid.link/20260930115824.739412-1-me@harin.net Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
a154f7b9f1
commit
4fa0c91c2c
|
|
@ -1895,6 +1895,7 @@ static int hw_adc_init(struct hw *hw, const struct adc_conf *info)
|
|||
|
||||
if (hw->model == CTSB1270) {
|
||||
/* Set up the PCM4220 ADC on Titanium HD */
|
||||
data = hw_read_20kx(hw, GPIO_DATA);
|
||||
data &= ~0x0C;
|
||||
if (1 == info->msr)
|
||||
data |= 0x00; /* Single Speed Mode 32-50kHz */
|
||||
|
|
@ -1903,6 +1904,7 @@ static int hw_adc_init(struct hw *hw, const struct adc_conf *info)
|
|||
else
|
||||
data |= 0x04; /* Quad Speed Mode 108kHz-216kHz */
|
||||
hw_write_20kx(hw, GPIO_DATA, data);
|
||||
usleep_range(10000, 11000);
|
||||
}
|
||||
|
||||
hw_adc_start(hw);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user