mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
Revert "ALSA: hda/tas2781: Enable bass speakers support"
This reverts commit 3bc4fc135e.
The problem will be addressed in a more proper way later.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
50f413b83b
commit
a08e335c19
|
|
@ -91,18 +91,6 @@
|
|||
/* prm_TE_1_Beta1 */
|
||||
#define TAS2563_TE_DT_REG TASDEVICE_REG(0x00, 0x0f, 0x70)
|
||||
|
||||
/* TAS2563 ASI (Audio Serial Interface) Register Definitions */
|
||||
#define TAS2563_ASI_CFG_REG TASDEVICE_REG(0x00, 0x00, 0x06)
|
||||
#define TAS2563_ASI_SR_REG TASDEVICE_REG(0x00, 0x00, 0x07)
|
||||
#define TAS2563_ASI_FS_REG TASDEVICE_REG(0x00, 0x00, 0x08)
|
||||
#define TAS2563_ASI_DA_REG TASDEVICE_REG(0x00, 0x00, 0x0a)
|
||||
#define TAS2563_ASI_TDM_REG TASDEVICE_REG(0x00, 0x00, 0x0b)
|
||||
#define TAS2563_ASI_DL_REG TASDEVICE_REG(0x00, 0x00, 0x0c)
|
||||
#define TAS2563_ASI_SLOT_REG TASDEVICE_REG(0x00, 0x00, 0x30)
|
||||
|
||||
/* TAS2563 ASI Apply Register (triggers configuration update) */
|
||||
#define TAS2563_ASI_APPLY_REG TASDEVICE_REG(0x00, 0x00, 0x02)
|
||||
|
||||
#define TAS2781_PRM_INT_MASK_REG TASDEVICE_REG(0x00, 0x00, 0x3b)
|
||||
#define TAS2781_PRM_CLK_CFG_REG TASDEVICE_REG(0x00, 0x00, 0x5c)
|
||||
#define TAS2781_PRM_RSVD_REG TASDEVICE_REG(0x00, 0x01, 0x19)
|
||||
|
|
|
|||
|
|
@ -46,83 +46,6 @@
|
|||
#define TAS2563_CAL_TLIM TASDEVICE_REG(0, 0x10, 0x14)
|
||||
#define TAS2563_CAL_R0 TASDEVICE_REG(0, 0x0f, 0x34)
|
||||
|
||||
/*
|
||||
* TAS2563 Post-Firmware ASI Configuration.
|
||||
*
|
||||
* The DSP firmware loading can overwrite the ASI (Audio Serial Interface)
|
||||
* registers that configure the I2S/TDM audio path to the amplifier.
|
||||
* This function re-applies the correct ASI configuration after firmware load,
|
||||
* matching the reference initialization sequence used by the vendor script:
|
||||
* - Software reset
|
||||
* - ASI_CFG = 0x09 (I2S mode, master/slave config)
|
||||
* - ASI_SR = 0x02 (sample rate divider for 48 kHz)
|
||||
* - ASI_DA = 0xf1 (data alignment / slot assignment)
|
||||
* - ASI_TDM = 0x02 (TDM mode select)
|
||||
* - ASI_DL = 0x00 (delay line off)
|
||||
* - ASI_SLOT = 0x99 (slot enable mask for 2-channel stereo)
|
||||
* - CHNL_0 = 0x02 (channel mapping)
|
||||
* - ASI_FS = 0x1e or 0x2e (frame sync, device-specific: bit4 selects
|
||||
* which of the two devices is the "primary" for FS generation)
|
||||
* - ASI_APPLY= 0x00 (trigger configuration update)
|
||||
*/
|
||||
static void tas2563_post_fw_init(struct tasdevice_priv *tas_priv)
|
||||
{
|
||||
int i, ret;
|
||||
|
||||
dev_info(tas_priv->dev, "%s: ndev=%d, chip_id=%d\n",
|
||||
__func__, tas_priv->ndev, tas_priv->chip_id);
|
||||
|
||||
for (i = 0; i < tas_priv->ndev; i++) {
|
||||
struct tasdevice *tasdev = &tas_priv->tasdevice[i];
|
||||
u8 fs_val;
|
||||
|
||||
dev_info(tas_priv->dev,
|
||||
"%s: device[%d] dev_addr=0x%02x\n",
|
||||
__func__, i, tasdev->dev_addr);
|
||||
|
||||
/* Step 1: Software reset (matches script: 0x01 = 0x01) */
|
||||
ret = tasdevice_dev_write(tas_priv, i, TASDEVICE_REG_SWRESET,
|
||||
TASDEVICE_REG_SWRESET_RESET);
|
||||
dev_info(tas_priv->dev,
|
||||
"%s: chn=%d SWRESET ret=%d\n", __func__, i, ret);
|
||||
usleep_range(1000, 2000);
|
||||
|
||||
/* Step 2: ASI configuration registers */
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2563_ASI_CFG_REG, 0x09);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d ASI_CFG=0x09 ret=%d\n", __func__, i, ret);
|
||||
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2563_ASI_SR_REG, 0x02);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d ASI_SR=0x02 ret=%d\n", __func__, i, ret);
|
||||
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2563_ASI_DA_REG, 0xf1);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d ASI_DA=0xf1 ret=%d\n", __func__, i, ret);
|
||||
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2563_ASI_TDM_REG, 0x02);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d ASI_TDM=0x02 ret=%d\n", __func__, i, ret);
|
||||
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2563_ASI_DL_REG, 0x00);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d ASI_DL=0x00 ret=%d\n", __func__, i, ret);
|
||||
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2563_ASI_SLOT_REG, 0x99);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d ASI_SLOT=0x99 ret=%d\n", __func__, i, ret);
|
||||
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2781_PRM_CHNL_0_REG, 0x02);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d CHNL_0=0x02 ret=%d\n", __func__, i, ret);
|
||||
|
||||
/* Step 3: Device-specific frame sync (0x1e for dev0, 0x2e for dev1) */
|
||||
fs_val = 0x1e | ((i & 0x01) << 4);
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2563_ASI_FS_REG, fs_val);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d ASI_FS=0x%02x ret=%d\n",
|
||||
__func__, i, fs_val, ret);
|
||||
|
||||
/* Step 4: Apply ASI configuration */
|
||||
ret = tasdevice_dev_write(tas_priv, i, TAS2563_ASI_APPLY_REG, 0x00);
|
||||
dev_info(tas_priv->dev, "%s: chn=%d ASI_APPLY ret=%d\n", __func__, i, ret);
|
||||
|
||||
usleep_range(1000, 2000);
|
||||
}
|
||||
}
|
||||
|
||||
enum device_chip_id {
|
||||
HDA_TAS2563,
|
||||
HDA_TAS2770,
|
||||
|
|
@ -249,13 +172,6 @@ static void tas2781_hda_playback_hook(struct device *dev, int action)
|
|||
pm_runtime_get_sync(dev);
|
||||
scoped_guard(mutex, &tas_hda->priv->codec_lock) {
|
||||
tasdevice_tuning_switch(tas_hda->priv, 0, false);
|
||||
/* Re-apply ASI configuration for TAS2563 after
|
||||
* tuning switch - DSP firmware loading can
|
||||
* overwrite ASI registers.
|
||||
*/
|
||||
if (tas_hda->priv->chip_id == TAS2563)
|
||||
tas2563_post_fw_init(tas_hda->priv);
|
||||
|
||||
tas_hda->priv->playback_started = true;
|
||||
}
|
||||
break;
|
||||
|
|
@ -559,12 +475,6 @@ static void tasdevice_dspfw_init(void *context)
|
|||
tas_priv->rcabin.init_profile_id,
|
||||
TASDEVICE_BIN_BLK_PRE_POWER_UP);
|
||||
|
||||
/* Apply ASI configuration for TAS2563 after firmware load.
|
||||
* DSP firmware loading can overwrite ASI registers.
|
||||
*/
|
||||
if (tas_hda->priv->chip_id == TAS2563)
|
||||
tas2563_post_fw_init(tas_hda->priv);
|
||||
|
||||
/* If calibrated data occurs error, dsp will still works with default
|
||||
* calibrated data inside algo.
|
||||
*/
|
||||
|
|
@ -749,7 +659,6 @@ static int tas2781_hda_i2c_probe(struct i2c_client *clt)
|
|||
*/
|
||||
device_name = "INT8866";
|
||||
hda_priv->hda_chip_id = HDA_TAS2563;
|
||||
tas_hda->priv->chip_id = TAS2563;
|
||||
hda_priv->save_calibration = tas2563_save_calibration;
|
||||
tas_hda->priv->global_addr = TAS2563_GLOBAL_ADDR;
|
||||
} else if (strstarts(dev_name(&clt->dev), "i2c-TXNW5825")) {
|
||||
|
|
@ -873,13 +782,6 @@ static int tas2781_system_resume(struct device *dev)
|
|||
tas_hda->priv->rcabin.init_profile_id,
|
||||
TASDEVICE_BIN_BLK_PRE_POWER_UP);
|
||||
|
||||
/* Re-apply ASI configuration for TAS2563 after system sleep
|
||||
* resume — amplifiers may lose their register state during
|
||||
* suspend-to-ram or suspend-to-disk regardless of playback state.
|
||||
*/
|
||||
if (tas_hda->priv->chip_id == TAS2563)
|
||||
tas2563_post_fw_init(tas_hda->priv);
|
||||
|
||||
if (tas_hda->priv->playback_started)
|
||||
tasdevice_tuning_switch(tas_hda->priv, 0, false);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user