forked from Minki/linux
[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: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
878ac3ee76
commit
71e22a4b77
@ -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)
|
||||
value |= WM8785_OSR_DOUBLE;
|
||||
else if (params_rate(params) == 192000)
|
||||
value |= WM8785_OSR_QUAD;
|
||||
else
|
||||
if (params_rate(params) <= 48000)
|
||||
value |= WM8785_OSR_SINGLE;
|
||||
else if (params_rate(params) <= 96000)
|
||||
value |= WM8785_OSR_DOUBLE;
|
||||
else
|
||||
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,
|
||||
|
Loading…
Reference in New Issue
Block a user