ALSA: ctxfi - Fix supported PCM formats
authorTakashi Iwai <tiwai@suse.de>
Tue, 2 Jun 2009 12:39:05 +0000 (14:39 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 2 Jun 2009 13:54:46 +0000 (15:54 +0200)
The device seems supporting only U8, S16, S24_3LE, S32.  Other linear
formats result in bad outputs.

Also, added the support for 32bit float format, which wasn't listed
in the original code.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/ctxfi/ctatc.c
sound/pci/ctxfi/ctpcm.c

index 675dd4c..268ecc4 100644 (file)
@@ -170,16 +170,15 @@ static unsigned int convert_format(snd_pcm_format_t snd_format)
 {
        switch (snd_format) {
        case SNDRV_PCM_FORMAT_U8:
-       case SNDRV_PCM_FORMAT_S8:
                return SRC_SF_U8;
        case SNDRV_PCM_FORMAT_S16_LE:
-       case SNDRV_PCM_FORMAT_U16_LE:
                return SRC_SF_S16;
        case SNDRV_PCM_FORMAT_S24_3LE:
                return SRC_SF_S24;
-       case SNDRV_PCM_FORMAT_S24_LE:
        case SNDRV_PCM_FORMAT_S32_LE:
                return SRC_SF_S32;
+       case SNDRV_PCM_FORMAT_FLOAT_LE:
+               return SRC_SF_F32;
        default:
                printk(KERN_ERR "ctxfi: not recognized snd format is %d \n",
                        snd_format);
index 756d8b2..26d86dc 100644 (file)
@@ -26,12 +26,10 @@ static struct snd_pcm_hardware ct_pcm_playback_hw = {
                                   SNDRV_PCM_INFO_MMAP_VALID |
                                   SNDRV_PCM_INFO_PAUSE),
        .formats                = (SNDRV_PCM_FMTBIT_U8 |
-                                  SNDRV_PCM_FMTBIT_S8 |
                                   SNDRV_PCM_FMTBIT_S16_LE |
-                                  SNDRV_PCM_FMTBIT_U16_LE |
                                   SNDRV_PCM_FMTBIT_S24_3LE |
-                                  SNDRV_PCM_FMTBIT_S24_LE |
-                                  SNDRV_PCM_FMTBIT_S32_LE),
+                                  SNDRV_PCM_FMTBIT_S32_LE |
+                                  SNDRV_PCM_FMTBIT_FLOAT_LE),
        .rates                  = (SNDRV_PCM_RATE_CONTINUOUS |
                                   SNDRV_PCM_RATE_8000_192000),
        .rate_min               = 8000,
@@ -52,8 +50,7 @@ static struct snd_pcm_hardware ct_spdif_passthru_playback_hw = {
                                   SNDRV_PCM_INFO_BLOCK_TRANSFER |
                                   SNDRV_PCM_INFO_MMAP_VALID |
                                   SNDRV_PCM_INFO_PAUSE),
-       .formats                = (SNDRV_PCM_FMTBIT_S16_LE |
-                                  SNDRV_PCM_FMTBIT_U16_LE),
+       .formats                = SNDRV_PCM_FMTBIT_S16_LE,
        .rates                  = (SNDRV_PCM_RATE_48000 |
                                   SNDRV_PCM_RATE_44100 |
                                   SNDRV_PCM_RATE_32000),
@@ -77,12 +74,10 @@ static struct snd_pcm_hardware ct_pcm_capture_hw = {
                                   SNDRV_PCM_INFO_PAUSE |
                                   SNDRV_PCM_INFO_MMAP_VALID),
        .formats                = (SNDRV_PCM_FMTBIT_U8 |
-                                  SNDRV_PCM_FMTBIT_S8 |
                                   SNDRV_PCM_FMTBIT_S16_LE |
-                                  SNDRV_PCM_FMTBIT_U16_LE |
                                   SNDRV_PCM_FMTBIT_S24_3LE |
-                                  SNDRV_PCM_FMTBIT_S24_LE |
-                                  SNDRV_PCM_FMTBIT_S32_LE),
+                                  SNDRV_PCM_FMTBIT_S32_LE |
+                                  SNDRV_PCM_FMTBIT_FLOAT_LE),
        .rates                  = (SNDRV_PCM_RATE_CONTINUOUS |
                                   SNDRV_PCM_RATE_8000_96000),
        .rate_min               = 8000,