The tas2781-hda driver can be modified to support tas2563 as well. Before knowing this information, I created another series for a new driver. https://lore.kernel.org/lkml/cover.1701733441.git.soyer@irl.hu/
This series now extends tas2781-hda, addresses differences and fixes various bugs.
The tas2563 is a smart amplifier. Similar to tas2562 but with DSP. Some Lenovo laptops have it to drive the bass speakers. By default, it is in software shutdown state.
To make the DSP work it needs a firmware and some calibration data. The latter can be read from the EFI in Lenovo laptops.
For the correct configuration it needs additional register data. It captured after running the Windows driver.
The firmware can be extracted as TAS2563Firmware.bin from the Windows driver with innoextract. https://download.lenovo.com/consumer/mobiles/h5yd037fbfyy7kd0.exe
The driver will search for it as TAS2XXX3870.bin with the 14ARB7. The captured registers extracted with TI's regtool: https://github.com/soyersoyer/tas2563rca/raw/main/INT8866RCA2.bin
Gergo Koteles (16): ASoC: tas2781: add support for fw version 0x0503 ALSA: hda/tas2781: leave hda_component in usable state ASoC: tas2781: disable regmap regcache ALSA: hda/tas2781: handle missing calibration data ALSA: hda/tas2781: fix typos in comment ASoC: tas2781: add ptrs to calibration functions ALSA: hda/tas2781: load_calibration just load ASoC: tas2781: add configurable global_addr ALSA: hda/tas2781: add TAS2563 support for 14ARB7 ASoC: tas2781: check negative indexes ASoC: tas2781: use 0 as default prog/conf index ASoC: tas2781: move set_drv_data outside tasdevice_init ALSA: hda/tas2781: remove sound controls in unbind ALSA: hda/tas2781: call cleaner functions only once ALSA: hda/tas2781: reset the amp before component_add ALSA: hda/tas2781: configure the amp after firmware load
include/sound/tas2781.h | 8 + sound/pci/hda/tas2781_hda_i2c.c | 364 +++++++++++++++++++----------- sound/soc/codecs/tas2781-comlib.c | 23 +- sound/soc/codecs/tas2781-fmwlib.c | 11 +- sound/soc/codecs/tas2781-i2c.c | 2 + 5 files changed, 270 insertions(+), 138 deletions(-)
base-commit: ffc253263a1375a65fa6c9f62a893e9767fbebfa