ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42
authorStefan Binding <sbinding@opensource.cirrus.com>
Wed, 11 Aug 2021 18:56:50 +0000 (19:56 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 12 Aug 2021 11:41:57 +0000 (13:41 +0200)
CS42L42 is configured to use a fixed sample rate of 48kHz.

Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20210811185654.6837-24-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_cs8409-tables.c
sound/pci/hda/patch_cs8409.c
sound/pci/hda/patch_cs8409.h

index a39b2c2..a9a0b8e 100644 (file)
@@ -45,6 +45,14 @@ const struct snd_kcontrol_new cs42l42_adc_volume_mixer = {
                         HDA_INPUT, CS42L42_VOL_ADC) | HDA_AMP_VAL_MIN_MUTE
 };
 
+const struct hda_pcm_stream cs42l42_48k_pcm_analog_playback = {
+       .rates = SNDRV_PCM_RATE_48000, /* fixed rate */
+};
+
+const struct hda_pcm_stream cs42l42_48k_pcm_analog_capture = {
+       .rates = SNDRV_PCM_RATE_48000, /* fixed rate */
+};
+
 /******************************************************************************
  *                   BULLSEYE / WARLOCK / CYBORG Specific Arrays
  *                               CS8409/CS42L42
index daf9c07..897c481 100644 (file)
@@ -912,6 +912,9 @@ void cs8409_cs42l42_fixups(struct hda_codec *codec, const struct hda_fixup *fix,
 
                break;
        case HDA_FIXUP_ACT_PROBE:
+               /* Fix Sample Rate to 48kHz */
+               spec->gen.stream_analog_playback = &cs42l42_48k_pcm_analog_playback;
+               spec->gen.stream_analog_capture = &cs42l42_48k_pcm_analog_capture;
                /* Set initial DMIC volume to -26 dB */
                snd_hda_codec_amp_init_stereo(codec, CS8409_CS42L42_DMIC_ADC_PIN_NID,
                                              HDA_INPUT, 0, 0xff, 0x19);
@@ -1105,6 +1108,9 @@ void dolphin_fixups(struct hda_codec *codec, const struct hda_fixup *fix, int ac
 
                break;
        case HDA_FIXUP_ACT_PROBE:
+               /* Fix Sample Rate to 48kHz */
+               spec->gen.stream_analog_playback = &cs42l42_48k_pcm_analog_playback;
+               spec->gen.stream_analog_capture = &cs42l42_48k_pcm_analog_capture;
                snd_hda_gen_add_kctl(&spec->gen, "Headphone Playback Volume",
                                     &cs42l42_dac_volume_mixer);
                snd_hda_gen_add_kctl(&spec->gen, "Mic Capture Volume", &cs42l42_adc_volume_mixer);
index 1b5a8d0..2208be2 100644 (file)
@@ -335,6 +335,8 @@ int cs42l42_volume_info(struct snd_kcontrol *kctrl, struct snd_ctl_elem_info *ui
 int cs42l42_volume_get(struct snd_kcontrol *kctrl, struct snd_ctl_elem_value *uctrl);
 int cs42l42_volume_put(struct snd_kcontrol *kctrl, struct snd_ctl_elem_value *uctrl);
 
+extern const struct hda_pcm_stream cs42l42_48k_pcm_analog_playback;
+extern const struct hda_pcm_stream cs42l42_48k_pcm_analog_capture;
 extern const struct snd_pci_quirk cs8409_fixup_tbl[];
 extern const struct hda_model_fixup cs8409_models[];
 extern const struct hda_fixup cs8409_fixups[];