From d5cfb617e35a3791b6effae64b2b7c4366cec61e Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Wed, 14 Apr 2021 08:13:51 +0800 Subject: [PATCH] asoc: lpass-cdc: update correct offset to set IIR1 registers Update correct offset to set IIR1 registers to make sidetone work. Change-Id: I94cc7f54c5d68954565d683aee0d3e887eebedb3 Signed-off-by: Meng Wang --- asoc/codecs/bolero/bolero-cdc-regmap.c | 6 +++++- asoc/codecs/bolero/rx-macro.c | 4 ++-- asoc/codecs/lpass-cdc/lpass-cdc-rx-macro.c | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/asoc/codecs/bolero/bolero-cdc-regmap.c b/asoc/codecs/bolero/bolero-cdc-regmap.c index 84bbd78a16..a9eee4d4d6 100644 --- a/asoc/codecs/bolero/bolero-cdc-regmap.c +++ b/asoc/codecs/bolero/bolero-cdc-regmap.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. +/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. */ #include @@ -854,6 +854,10 @@ static bool bolero_is_volatile_register(struct device *dev, case BOLERO_CDC_RX_EC_ASRC2_STATUS_FMAX_CNTR_LSB: case BOLERO_CDC_RX_EC_ASRC2_STATUS_FMAX_CNTR_MSB: case BOLERO_CDC_RX_EC_ASRC2_STATUS_FIFO: + case BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B1_CTL: + case BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B2_CTL: + case BOLERO_CDC_RX_SIDETONE_IIR1_IIR_COEF_B1_CTL: + case BOLERO_CDC_RX_SIDETONE_IIR1_IIR_COEF_B2_CTL: return true; } return false; diff --git a/asoc/codecs/bolero/rx-macro.c b/asoc/codecs/bolero/rx-macro.c index 48c9158730..042a4e182a 100644 --- a/asoc/codecs/bolero/rx-macro.c +++ b/asoc/codecs/bolero/rx-macro.c @@ -2901,7 +2901,7 @@ static uint32_t get_iir_band_coeff(struct snd_soc_component *component, /* Mask bits top 2 bits since they are reserved */ value |= ((snd_soc_component_read(component, (BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B2_CTL + - 16 * iir_idx)) & 0x3F) << 24); + 0x80 * iir_idx)) & 0x3F) << 24); return value; } @@ -2988,7 +2988,7 @@ static int rx_macro_iir_band_audio_mixer_put(struct snd_kcontrol *kcontrol, * Updates addr automatically for each B2 write */ snd_soc_component_write(component, - (BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B1_CTL + 16 * iir_idx), + (BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B1_CTL + 0x80 * iir_idx), (band_idx * BAND_MAX * sizeof(uint32_t)) & 0x7F); /* Store the coefficients in sidetone coeff array */ diff --git a/asoc/codecs/lpass-cdc/lpass-cdc-rx-macro.c b/asoc/codecs/lpass-cdc/lpass-cdc-rx-macro.c index 06e6d427c7..de1f158c68 100644 --- a/asoc/codecs/lpass-cdc/lpass-cdc-rx-macro.c +++ b/asoc/codecs/lpass-cdc/lpass-cdc-rx-macro.c @@ -2931,7 +2931,7 @@ static uint32_t get_iir_band_coeff(struct snd_soc_component *component, /* Mask bits top 2 bits since they are reserved */ value |= ((snd_soc_component_read(component, (LPASS_CDC_RX_SIDETONE_IIR0_IIR_COEF_B2_CTL + - 16 * iir_idx)) & 0x3F) << 24); + 0x80 * iir_idx)) & 0x3F) << 24); return value; } @@ -3029,7 +3029,7 @@ static int lpass_cdc_rx_macro_iir_band_audio_mixer_put(struct snd_kcontrol *kcon * Updates addr automatically for each B2 write */ snd_soc_component_write(component, - (LPASS_CDC_RX_SIDETONE_IIR0_IIR_COEF_B1_CTL + 16 * iir_idx), + (LPASS_CDC_RX_SIDETONE_IIR0_IIR_COEF_B1_CTL + 0x80 * iir_idx), (band_idx * BAND_MAX * sizeof(uint32_t)) & 0x7F); /* Store the coefficients in sidetone coeff array */