Comment 881 for bug 1958019

Revision history for this message
In , soyer (soyer-linux-kernel-bugs) wrote :

Hi,

> there are a lot of entries, what exactly am I looking for?

Find the card with 'Speaker Force Firmware Load' control, then change the -c and numid parameters accordingly.

> What is the expected result of the above?

It reloads the program of the amplifiers before powering up the amplifiers. (amplifiers (software) shutdown occurs after 3 idle seconds)
If you set it to 0, the program will only be reloaded after module init and after wakeup/rewake.

you can check the value of the control with:
amixer -c 1 cget numid=3,name='Speaker Force Firmware Load'

Before bec7760a6c5fa59593dac264fa0c628e46815986 ("ALSA: hda/tas2781: do not reset cur_* values in runtime_suspend"), the driver reloaded the program and configuration every time, and this control wasn't effective.
Reloading the program and config takes 0.3 second or more, that's why I wanted to remove that behavior. It's annoying to wait every time you start anything.

I can only guess what could be wrong with tas2781 setups. Probably the amps will go into failure state or reset state after a while.

It would help if someone dumps the registers as root, when the amplifiers are not working:

rmmod snd_hda_scodec_tas2781_i2c
i2cset -y 3 0x70 0x00 0x00
i2cset -y 3 0x70 0x7f 0x00
i2cdump -y 3 0x70
modprobe snd_hda_scodec_tas2781_i2c

first line unloads the module
second line changes the page to 0x00
third line changes the book to 0x00
fourth line dumps the page
fifth line loads the module

The bus number (3) may be different.
The address of the second amplifier is 0x72.

Here is the data sheet, if anyone wants to dig :)
https://www.ti.com/lit/ds/symlink/tas2781.pdf