diff options
| author | Linus Torvalds <[email protected]> | 2021-02-21 14:21:35 -0800 | 
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2021-02-21 14:21:35 -0800 | 
| commit | 10e2ec8edece2566b40f69bae035a555ece71ab4 (patch) | |
| tree | 27eed009a4817948623bbc31a83911c5ace7a4b0 /sound/soc/codecs/lpass-wsa-macro.c | |
| parent | de1617578849acab8e16c9ffdce39b91fb50639d (diff) | |
| parent | c4294d7f057d05053412ebd0d5700228d0f2588d (diff) | |
Merge tag 'sound-5.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai:
 "A relatively calm release at this time, and no massive code changes
  are found in the stats, while a wide range of code refactoring and
  cleanup have been done.
  Note that this update includes the tree-wide trivial changes for
  dropping the return value from ISA remove callbacks, too.
  Below lists up some highlight:
  ALSA Core:
   - Support for the software jack injection via debugfs
   - Fixes for sync_stop PCM operations
  HD-audio and USB-audio:
   - A few usual HD-audio device quirks
   - Updates for Tegra HD-audio
   - More quirks for Pioneer and other USB-audio devices
   - Stricter state checks at USB-audio disconnection
  ASoC:
   - Continued code refactoring, cleanup and fixes in ASoC core API
   - A KUnit testsuite for the topology code
   - Lots of ASoC Intel driver Realtek codec updates, quirk additions
     and fixes
   - Support for Ingenic JZ4760(B), Intel AlderLake-P, DT configured
     nVidia cards, Qualcomm lpass-rx-macro and lpass-tx-macro
   - Removal of obsolete SIRF prima/atlas, Txx9 and ZTE zx drivers
  Others:
   - Drop return value from ISA driver remove callback
   - Cleanup with DIV_ROUND_UP() macro
   - FireWire updates, HDSP output loopback support"
* tag 'sound-5.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (322 commits)
  ALSA: hda: intel-dsp-config: add Alder Lake support
  ASoC: soc-pcm: fix hw param limits calculation for multi-DAI
  ASoC: Intel: bytcr_rt5640: Add quirk for the Acer One S1002 tablet
  ASoC: Intel: bytcr_rt5651: Add quirk for the Jumper EZpad 7 tablet
  ASoC: Intel: bytcr_rt5640: Add quirk for the Voyo Winpad A15 tablet
  ASoC: Intel: bytcr_rt5640: Add quirk for the Estar Beauty HD MID 7316R tablet
  ASoC: soc-pcm: fix hwparams min/max init for dpcm
  ALSA: hda/realtek: Quirk for HP Spectre x360 14 amp setup
  ALSA: usb-audio: Add implicit fb quirk for BOSS GP-10
  ALSA: hda: Add another CometLake-H PCI ID
  ASoC: soc-pcm: add soc_pcm_hw_update_format()
  ASoC: soc-pcm: add soc_pcm_hw_update_chan()
  ASoC: soc-pcm: add soc_pcm_hw_update_rate()
  ASoC: wm_adsp: Remove unused control callback structure
  ASoC: SOF: relax ABI checks and avoid unnecessary warnings
  ASoC: codecs: lpass-tx-macro: add dapm widgets and route
  ASoC: codecs: lpass-tx-macro: add support for lpass tx macro
  ASoC: qcom: dt-bindings: add bindings for lpass tx macro codec
  ASoC: codecs: lpass-rx-macro: add iir widgets
  ASoC: codecs: lpass-rx-macro: add dapm widgets and route
  ...
Diffstat (limited to 'sound/soc/codecs/lpass-wsa-macro.c')
| -rw-r--r-- | sound/soc/codecs/lpass-wsa-macro.c | 43 | 
1 files changed, 20 insertions, 23 deletions
| diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c index 25f1df214ca5..5ebcd935ba89 100644 --- a/sound/soc/codecs/lpass-wsa-macro.c +++ b/sound/soc/codecs/lpass-wsa-macro.c @@ -40,9 +40,11 @@  #define CDC_WSA_TOP_I2S_CLK			(0x00A4)  #define CDC_WSA_TOP_I2S_RESET			(0x00A8)  #define CDC_WSA_RX_INP_MUX_RX_INT0_CFG0		(0x0100) -#define CDC_WSA_RX_INTX_1_MIX_INP2_SEL_MASK	GENMASK(5, 3) -#define CDC_WSA_RX_INTX_2_SEL_MASK		GENMASK(2, 0) +#define CDC_WSA_RX_INTX_1_MIX_INP0_SEL_MASK	GENMASK(2, 0) +#define CDC_WSA_RX_INTX_1_MIX_INP1_SEL_MASK	GENMASK(5, 3)  #define CDC_WSA_RX_INP_MUX_RX_INT0_CFG1		(0x0104) +#define CDC_WSA_RX_INTX_2_SEL_MASK		GENMASK(2, 0) +#define CDC_WSA_RX_INTX_1_MIX_INP2_SEL_MASK	GENMASK(5, 3)  #define CDC_WSA_RX_INP_MUX_RX_INT1_CFG0		(0x0108)  #define CDC_WSA_RX_INP_MUX_RX_INT1_CFG1		(0x010C)  #define CDC_WSA_RX_INP_MUX_RX_MIX_CFG0		(0x0110) @@ -229,8 +231,6 @@  #define NUM_INTERPOLATORS 2  #define WSA_NUM_CLKS_MAX	5  #define WSA_MACRO_MCLK_FREQ 19200000 -#define WSA_MACRO_MUX_INP_SHFT 0x3 -#define WSA_MACRO_MUX_INP_MASK1 0x07  #define WSA_MACRO_MUX_INP_MASK2 0x38  #define WSA_MACRO_MUX_CFG_OFFSET 0x8  #define WSA_MACRO_MUX_CFG1_OFFSET 0x4 @@ -843,7 +843,6 @@ static int wsa_macro_set_prim_interpolator_rate(struct snd_soc_dai *dai,  	u32 j, port;  	u16 int_mux_cfg0, int_mux_cfg1;  	u16 int_fs_reg; -	u8 int_mux_cfg0_val, int_mux_cfg1_val;  	u8 inp0_sel, inp1_sel, inp2_sel;  	struct snd_soc_component *component = dai->component;  	struct wsa_macro *wsa = snd_soc_component_get_drvdata(component); @@ -865,15 +864,13 @@ static int wsa_macro_set_prim_interpolator_rate(struct snd_soc_dai *dai,  		 */  		for (j = 0; j < NUM_INTERPOLATORS; j++) {  			int_mux_cfg1 = int_mux_cfg0 + WSA_MACRO_MUX_CFG1_OFFSET; -			int_mux_cfg0_val = snd_soc_component_read(component, -								  int_mux_cfg0); -			int_mux_cfg1_val = snd_soc_component_read(component, -								  int_mux_cfg1); -			inp0_sel = int_mux_cfg0_val & WSA_MACRO_MUX_INP_MASK1; -			inp1_sel = (int_mux_cfg0_val >> WSA_MACRO_MUX_INP_SHFT) & -						WSA_MACRO_MUX_INP_MASK1; -			inp2_sel = (int_mux_cfg1_val >> WSA_MACRO_MUX_INP_SHFT) & -						WSA_MACRO_MUX_INP_MASK1; +			inp0_sel = snd_soc_component_read_field(component, int_mux_cfg0,  +								CDC_WSA_RX_INTX_1_MIX_INP0_SEL_MASK); +			inp1_sel = snd_soc_component_read_field(component, int_mux_cfg0,  +								CDC_WSA_RX_INTX_1_MIX_INP1_SEL_MASK); +			inp2_sel = snd_soc_component_read_field(component, int_mux_cfg1, +								CDC_WSA_RX_INTX_1_MIX_INP2_SEL_MASK); +  			if ((inp0_sel == int_1_mix1_inp + INTn_1_INP_SEL_RX0) ||  			    (inp1_sel == int_1_mix1_inp + INTn_1_INP_SEL_RX0) ||  			    (inp2_sel == int_1_mix1_inp + INTn_1_INP_SEL_RX0)) { @@ -912,9 +909,9 @@ static int wsa_macro_set_mix_interpolator_rate(struct snd_soc_dai *dai,  		int_mux_cfg1 = CDC_WSA_RX_INP_MUX_RX_INT0_CFG1;  		for (j = 0; j < NUM_INTERPOLATORS; j++) { -			int_mux_cfg1_val = snd_soc_component_read(component, -							int_mux_cfg1) & -							WSA_MACRO_MUX_INP_MASK1; +			int_mux_cfg1_val = snd_soc_component_read_field(component, int_mux_cfg1, +									CDC_WSA_RX_INTX_2_SEL_MASK); +  			if (int_mux_cfg1_val == int_2_inp + INTn_2_INP_SEL_RX0) {  				int_fs_reg = CDC_WSA_RX0_RX_PATH_MIX_CTL +  					WSA_MACRO_RX_PATH_OFFSET * j; @@ -1410,25 +1407,25 @@ static bool wsa_macro_adie_lb(struct snd_soc_component *component,  			      int interp_idx)  {  	u16 int_mux_cfg0,  int_mux_cfg1; -	u8 int_mux_cfg0_val, int_mux_cfg1_val;  	u8 int_n_inp0, int_n_inp1, int_n_inp2;  	int_mux_cfg0 = CDC_WSA_RX_INP_MUX_RX_INT0_CFG0 + interp_idx * 8;  	int_mux_cfg1 = int_mux_cfg0 + 4; -	int_mux_cfg0_val = snd_soc_component_read(component, int_mux_cfg0); -	int_mux_cfg1_val = snd_soc_component_read(component, int_mux_cfg1); -	int_n_inp0 = int_mux_cfg0_val & 0x0F; +	int_n_inp0 = snd_soc_component_read_field(component, int_mux_cfg0, +						  CDC_WSA_RX_INTX_1_MIX_INP0_SEL_MASK);  	if (int_n_inp0 == INTn_1_INP_SEL_DEC0 ||  		int_n_inp0 == INTn_1_INP_SEL_DEC1)  		return true; -	int_n_inp1 = int_mux_cfg0_val >> 4; +	int_n_inp1 = snd_soc_component_read_field(component, int_mux_cfg0, +						  CDC_WSA_RX_INTX_1_MIX_INP1_SEL_MASK);  	if (int_n_inp1 == INTn_1_INP_SEL_DEC0 ||  		int_n_inp1 == INTn_1_INP_SEL_DEC1)  		return true; -	int_n_inp2 = int_mux_cfg1_val >> 4; +	int_n_inp2 = snd_soc_component_read_field(component, int_mux_cfg1, +						  CDC_WSA_RX_INTX_1_MIX_INP2_SEL_MASK);  	if (int_n_inp2 == INTn_1_INP_SEL_DEC0 ||  		int_n_inp2 == INTn_1_INP_SEL_DEC1)  		return true; |