[alsa-devel] [PATCH] cmipci at 96kHz
Hi.
This patch adds support for 88.2k, 96k, and 128k samplerates on cmi8738-55 chip. Analog playback works fine on all channels. Analog capture works well too, though the extra samples seems interpolated by hardware. spdif playback and capture works fine.
Regards, Tim.
Timofei V. Bondarenko wrote:
This patch adds support for 88.2k, 96k, and 128k samplerates on cmi8738-55 chip. Analog playback works fine on all channels. Analog capture works well too, though the extra samples seems interpolated by hardware. spdif playback and capture works fine.
freq_ext = CM_CH0_SRATE_88K | CM_CH0_SRATE_96K;
I'd guess there should be a new symbol CM_CH0_SRATE_128K.
case 88200:
freq = 44100;
case 96000:
freq = 48000;
case 128000:
freq = 32000; /* not matter,
Wouldn't it be simpler to divide freq by two in all three cases?
Regards, Clemens
Clemens Ladisch wrote:
Timofei V. Bondarenko wrote:
This patch adds support for 88.2k, 96k, and 128k samplerates on cmi8738-55 chip. Analog playback works fine on all channels. Analog capture works well too, though the extra samples seems interpolated by hardware. spdif playback and capture works fine.
freq_ext = CM_CH0_SRATE_88K | CM_CH0_SRATE_96K;
I'd guess there should be a new symbol CM_CH0_SRATE_128K.
Ok. One more one-time-use symbol.
case 88200:
freq = 44100;
case 96000:
freq = 48000;
case 128000:
freq = 32000; /* not matter,
Wouldn't it be simpler to divide freq by two in all three cases?
Not so easy, 128/2 = 64 - is an invalid rate, snd_cmipci_rate_freq() will complain. On another hand an invalid 64k/2=32k (valid) - this make snd_BUG() in snd_cmipci_rate_freq() useless.
If the '68 chip also don't care about CM_REG_FUNCTRL1:ASFC/DSFC then freq can be set to 0 for all doubled frequencies.
Regards, Tim.
At Tue, 30 Oct 2007 17:22:50 +0300, Timofei V. Bondarenko wrote:
Clemens Ladisch wrote:
Timofei V. Bondarenko wrote:
This patch adds support for 88.2k, 96k, and 128k samplerates on cmi8738-55 chip. Analog playback works fine on all channels. Analog capture works well too, though the extra samples seems interpolated by hardware. spdif playback and capture works fine.
freq_ext = CM_CH0_SRATE_88K | CM_CH0_SRATE_96K;
I'd guess there should be a new symbol CM_CH0_SRATE_128K.
Ok. One more one-time-use symbol.
case 88200:
freq = 44100;
case 96000:
freq = 48000;
case 128000:
freq = 32000; /* not matter,
Wouldn't it be simpler to divide freq by two in all three cases?
Not so easy, 128/2 = 64 - is an invalid rate, snd_cmipci_rate_freq() will complain. On another hand an invalid 64k/2=32k (valid) - this make snd_BUG() in snd_cmipci_rate_freq() useless.
If the '68 chip also don't care about CM_REG_FUNCTRL1:ASFC/DSFC then freq can be set to 0 for all doubled frequencies.
The changes in your patch look good to me, but I'd like to ask you to fix the coding style. (At least, we should follow the standard coding style for new codes.)
Run checkpatch.pl script included in linux-kernel/scripts directory, and you'll see what I meant :)
Thanks,
Takashi
Takashi Iwai wrote:
At Tue, 30 Oct 2007 17:22:50 +0300, Timofei V. Bondarenko wrote:
Clemens Ladisch wrote:
Timofei V. Bondarenko wrote:
This patch adds support for 88.2k, 96k, and 128k samplerates on cmi8738-55 chip. Analog playback works fine on all channels. Analog capture works well too, though the extra samples seems interpolated by hardware. spdif playback and capture works fine.
freq_ext = CM_CH0_SRATE_88K | CM_CH0_SRATE_96K;
I'd guess there should be a new symbol CM_CH0_SRATE_128K.
Ok. One more one-time-use symbol.
case 88200:
freq = 44100;
case 96000:
freq = 48000;
case 128000:
freq = 32000; /* not matter,
Wouldn't it be simpler to divide freq by two in all three cases?
Not so easy, 128/2 = 64 - is an invalid rate, snd_cmipci_rate_freq() will complain. On another hand an invalid 64k/2=32k (valid) - this make snd_BUG() in snd_cmipci_rate_freq() useless.
If the '68 chip also don't care about CM_REG_FUNCTRL1:ASFC/DSFC then freq can be set to 0 for all doubled frequencies.
The changes in your patch look good to me, but I'd like to ask you to fix the coding style. (At least, we should follow the standard coding style for new codes.)
Run checkpatch.pl script included in linux-kernel/scripts directory, and you'll see what I meant :)
Nice tool. I should be using it before.
Regards, Tim.
At Wed, 31 Oct 2007 19:25:24 +0300, Timofei V. Bondarenko wrote:
Takashi Iwai wrote:
At Tue, 30 Oct 2007 17:22:50 +0300, Timofei V. Bondarenko wrote:
Clemens Ladisch wrote:
Timofei V. Bondarenko wrote:
This patch adds support for 88.2k, 96k, and 128k samplerates on cmi8738-55 chip. Analog playback works fine on all channels. Analog capture works well too, though the extra samples seems interpolated by hardware. spdif playback and capture works fine.
freq_ext = CM_CH0_SRATE_88K | CM_CH0_SRATE_96K;
I'd guess there should be a new symbol CM_CH0_SRATE_128K.
Ok. One more one-time-use symbol.
case 88200:
freq = 44100;
case 96000:
freq = 48000;
case 128000:
freq = 32000; /* not matter,
Wouldn't it be simpler to divide freq by two in all three cases?
Not so easy, 128/2 = 64 - is an invalid rate, snd_cmipci_rate_freq() will complain. On another hand an invalid 64k/2=32k (valid) - this make snd_BUG() in snd_cmipci_rate_freq() useless.
If the '68 chip also don't care about CM_REG_FUNCTRL1:ASFC/DSFC then freq can be set to 0 for all doubled frequencies.
The changes in your patch look good to me, but I'd like to ask you to fix the coding style. (At least, we should follow the standard coding style for new codes.)
Run checkpatch.pl script included in linux-kernel/scripts directory, and you'll see what I meant :)
Nice tool. I should be using it before.
Regards, Tim.
Thanks, now applied to HG tree (with small fixes, "if ((err = ...) < 0)" style isn't preferred any more).
Takashi
Takashi Iwai wrote:
At Wed, 31 Oct 2007 19:25:24 +0300, Timofei V. Bondarenko wrote:
Takashi Iwai wrote:
At Tue, 30 Oct 2007 17:22:50 +0300, Timofei V. Bondarenko wrote:
Clemens Ladisch wrote:
Timofei V. Bondarenko wrote:
This patch adds support for 88.2k, 96k, and 128k samplerates on cmi8738-55 chip. Analog playback works fine on all channels. Analog capture works well too, though the extra samples seems interpolated by hardware. spdif playback and capture works fine.
freq_ext = CM_CH0_SRATE_88K | CM_CH0_SRATE_96K;
I'd guess there should be a new symbol CM_CH0_SRATE_128K.
Ok. One more one-time-use symbol.
case 88200:
freq = 44100;
case 96000:
freq = 48000;
case 128000:
freq = 32000; /* not matter,
Wouldn't it be simpler to divide freq by two in all three cases?
Not so easy, 128/2 = 64 - is an invalid rate, snd_cmipci_rate_freq() will complain. On another hand an invalid 64k/2=32k (valid) - this make snd_BUG() in snd_cmipci_rate_freq() useless.
If the '68 chip also don't care about CM_REG_FUNCTRL1:ASFC/DSFC then freq can be set to 0 for all doubled frequencies.
The changes in your patch look good to me, but I'd like to ask you to fix the coding style. (At least, we should follow the standard coding style for new codes.)
Run checkpatch.pl script included in linux-kernel/scripts directory, and you'll see what I meant :)
Nice tool. I should be using it before.
Regards, Tim.
Thanks, now applied to HG tree (with small fixes, "if ((err = ...) < 0)" style isn't preferred any more).
Thanks, Timofei.
participants (3)
-
Clemens Ladisch
-
Takashi Iwai
-
Timofei V. Bondarenko