diff options
Diffstat (limited to 'sound/soc/codecs/wm_adsp.c')
| -rw-r--r-- | sound/soc/codecs/wm_adsp.c | 40 | 
1 files changed, 38 insertions, 2 deletions
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 34f2905f015..3470b649c0b 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -31,6 +31,7 @@  #include <linux/mfd/arizona/registers.h> +#include "arizona.h"  #include "wm_adsp.h"  #define adsp_crit(_dsp, fmt, ...) \ @@ -254,17 +255,52 @@ static const struct soc_enum wm_adsp_fw_enum[] = {  	SOC_ENUM_SINGLE(0, 3, ARRAY_SIZE(wm_adsp_fw_text), wm_adsp_fw_text),  }; -const struct snd_kcontrol_new wm_adsp_fw_controls[] = { +const struct snd_kcontrol_new wm_adsp1_fw_controls[] = {  	SOC_ENUM_EXT("DSP1 Firmware", wm_adsp_fw_enum[0],  		     wm_adsp_fw_get, wm_adsp_fw_put),  	SOC_ENUM_EXT("DSP2 Firmware", wm_adsp_fw_enum[1],  		     wm_adsp_fw_get, wm_adsp_fw_put),  	SOC_ENUM_EXT("DSP3 Firmware", wm_adsp_fw_enum[2],  		     wm_adsp_fw_get, wm_adsp_fw_put), +}; +EXPORT_SYMBOL_GPL(wm_adsp1_fw_controls); + +#if IS_ENABLED(CONFIG_SND_SOC_ARIZONA) +static const struct soc_enum wm_adsp2_rate_enum[] = { +	SOC_VALUE_ENUM_SINGLE(ARIZONA_DSP1_CONTROL_1, +			      ARIZONA_DSP1_RATE_SHIFT, 0xf, +			      ARIZONA_RATE_ENUM_SIZE, +			      arizona_rate_text, arizona_rate_val), +	SOC_VALUE_ENUM_SINGLE(ARIZONA_DSP2_CONTROL_1, +			      ARIZONA_DSP1_RATE_SHIFT, 0xf, +			      ARIZONA_RATE_ENUM_SIZE, +			      arizona_rate_text, arizona_rate_val), +	SOC_VALUE_ENUM_SINGLE(ARIZONA_DSP3_CONTROL_1, +			      ARIZONA_DSP1_RATE_SHIFT, 0xf, +			      ARIZONA_RATE_ENUM_SIZE, +			      arizona_rate_text, arizona_rate_val), +	SOC_VALUE_ENUM_SINGLE(ARIZONA_DSP3_CONTROL_1, +			      ARIZONA_DSP1_RATE_SHIFT, 0xf, +			      ARIZONA_RATE_ENUM_SIZE, +			      arizona_rate_text, arizona_rate_val), +}; + +const struct snd_kcontrol_new wm_adsp2_fw_controls[] = { +	SOC_ENUM_EXT("DSP1 Firmware", wm_adsp_fw_enum[0], +		     wm_adsp_fw_get, wm_adsp_fw_put), +	SOC_ENUM("DSP1 Rate", wm_adsp2_rate_enum[0]), +	SOC_ENUM_EXT("DSP2 Firmware", wm_adsp_fw_enum[1], +		     wm_adsp_fw_get, wm_adsp_fw_put), +	SOC_ENUM("DSP2 Rate", wm_adsp2_rate_enum[1]), +	SOC_ENUM_EXT("DSP3 Firmware", wm_adsp_fw_enum[2], +		     wm_adsp_fw_get, wm_adsp_fw_put), +	SOC_ENUM("DSP3 Rate", wm_adsp2_rate_enum[2]),  	SOC_ENUM_EXT("DSP4 Firmware", wm_adsp_fw_enum[3],  		     wm_adsp_fw_get, wm_adsp_fw_put), +	SOC_ENUM("DSP4 Rate", wm_adsp2_rate_enum[3]),  }; -EXPORT_SYMBOL_GPL(wm_adsp_fw_controls); +EXPORT_SYMBOL_GPL(wm_adsp2_fw_controls); +#endif  static struct wm_adsp_region const *wm_adsp_find_region(struct wm_adsp *dsp,  							int type)  |