Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71e22a4b authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Jaroslav Kysela
Browse files

[ALSA] oxygen: allow more sample rates with WM8785



Allow to record with 32 kHz, 64 kHz, 88.2 kHz and 176.4 kHz with cards
that have a WM8785 ADC.

Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent 878ac3ee
Loading
Loading
Loading
Loading
+4 −17
Original line number Diff line number Diff line
@@ -232,18 +232,6 @@ static void generic_cleanup(struct oxygen *chip)
{
}

static void generic_pcm_hardware_filter(unsigned int channel,
					struct snd_pcm_hardware *hardware)
{
	if (channel == PCM_A) {
		hardware->rates = SNDRV_PCM_RATE_44100 |
				  SNDRV_PCM_RATE_48000 |
				  SNDRV_PCM_RATE_96000 |
				  SNDRV_PCM_RATE_192000;
		hardware->rate_min = 44100;
	}
}

static void set_ak4396_params(struct oxygen *chip,
			      struct snd_pcm_hw_params *params)
{
@@ -300,12 +288,12 @@ static void set_wm8785_params(struct oxygen *chip,
	wm8785_write(chip, WM8785_R7, 0);

	value = WM8785_MCR_SLAVE | WM8785_FORMAT_LJUST;
	if (params_rate(params) == 96000)
	if (params_rate(params) <= 48000)
		value |= WM8785_OSR_SINGLE;
	else if (params_rate(params) <= 96000)
		value |= WM8785_OSR_DOUBLE;
	else if (params_rate(params) == 192000)
		value |= WM8785_OSR_QUAD;
	else
		value |= WM8785_OSR_SINGLE;
		value |= WM8785_OSR_QUAD;
	wm8785_write(chip, WM8785_R0, value);

	if (snd_pcm_format_width(params_format(params)) <= 16)
@@ -349,7 +337,6 @@ static const struct oxygen_model model_generic = {
	.init = generic_init,
	.control_filter = ak4396_control_filter,
	.cleanup = generic_cleanup,
	.pcm_hardware_filter = generic_pcm_hardware_filter,
	.set_dac_params = set_ak4396_params,
	.set_adc_params = set_wm8785_params,
	.update_dac_volume = update_ak4396_volume,