ASoC: Intel: Cleanup HSW pcm format support
authorJie Yang <yang.jie@intel.com>
Mon, 14 Jul 2014 09:37:36 +0000 (17:37 +0800)
committerMark Brown <broonie@linaro.org>
Mon, 14 Jul 2014 18:09:05 +0000 (19:09 +0100)
This change removes unsupported formats from System,
Capture and Loopback FE DAIs.
Also it fixes S24_LE support on all DAIs.
While at this fix 24 bit flag for BYT as well.

Signed-off-by: Jie Yang <yang.jie@intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
sound/soc/intel/sst-baytrail-pcm.c
sound/soc/intel/sst-haswell-pcm.c

index 8eab97368ea7681f6a294a0e18a0987a7c88bfdf..599401c0c6551d59b1166359e0df5a45e74c8f8d 100644 (file)
@@ -32,7 +32,7 @@ static const struct snd_pcm_hardware sst_byt_pcm_hardware = {
                                  SNDRV_PCM_INFO_PAUSE |
                                  SNDRV_PCM_INFO_RESUME,
        .formats                = SNDRV_PCM_FMTBIT_S16_LE |
-                                 SNDRV_PCM_FORMAT_S24_LE,
+                                 SNDRV_PCM_FMTBIT_S24_LE,
        .period_bytes_min       = 384,
        .period_bytes_max       = 48000,
        .periods_min            = 2,
index 058efb17c568a83c1f665d4c3cf6bb62bb70f196..61bf6da4bb02211f0c64593e1ba249c38b7701a1 100644 (file)
@@ -80,7 +80,7 @@ static const struct snd_pcm_hardware hsw_pcm_hardware = {
                                  SNDRV_PCM_INFO_PAUSE |
                                  SNDRV_PCM_INFO_RESUME |
                                  SNDRV_PCM_INFO_NO_PERIOD_WAKEUP,
-       .formats                = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FORMAT_S24_LE |
+       .formats                = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE |
                                  SNDRV_PCM_FMTBIT_S32_LE,
        .period_bytes_min       = PAGE_SIZE,
        .period_bytes_max       = (HSW_PCM_PERIODS_MAX / HSW_PCM_PERIODS_MIN) * PAGE_SIZE,
@@ -400,7 +400,15 @@ static int hsw_pcm_hw_params(struct snd_pcm_substream *substream,
                sst_hsw_stream_set_valid(hsw, pcm_data->stream, 16);
                break;
        case SNDRV_PCM_FORMAT_S24_LE:
-               bits = SST_HSW_DEPTH_24BIT;
+               bits = SST_HSW_DEPTH_32BIT;
+               sst_hsw_stream_set_valid(hsw, pcm_data->stream, 24);
+               break;
+       case SNDRV_PCM_FORMAT_S8:
+               bits = SST_HSW_DEPTH_8BIT;
+               sst_hsw_stream_set_valid(hsw, pcm_data->stream, 8);
+               break;
+       case SNDRV_PCM_FORMAT_S32_LE:
+               bits = SST_HSW_DEPTH_32BIT;
                sst_hsw_stream_set_valid(hsw, pcm_data->stream, 32);
                break;
        default:
@@ -685,8 +693,9 @@ static int hsw_pcm_new(struct snd_soc_pcm_runtime *rtd)
 }
 
 #define HSW_FORMATS \
-       (SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S16_LE |\
-        SNDRV_PCM_FMTBIT_S32_LE)
+       (SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S24_LE | \
+       SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S16_LE |\
+       SNDRV_PCM_FMTBIT_S8)
 
 static struct snd_soc_dai_driver hsw_dais[] = {
        {
@@ -696,7 +705,7 @@ static struct snd_soc_dai_driver hsw_dais[] = {
                        .channels_min = 2,
                        .channels_max = 2,
                        .rates = SNDRV_PCM_RATE_48000,
-                       .formats = SNDRV_PCM_FMTBIT_S16_LE,
+                       .formats = SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE,
                },
        },
        {
@@ -727,8 +736,8 @@ static struct snd_soc_dai_driver hsw_dais[] = {
                        .stream_name = "Loopback Capture",
                        .channels_min = 2,
                        .channels_max = 2,
-                       .rates = SNDRV_PCM_RATE_8000_192000,
-                       .formats = HSW_FORMATS,
+                       .rates = SNDRV_PCM_RATE_48000,
+                       .formats = SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE,
                },
        },
        {
@@ -737,8 +746,8 @@ static struct snd_soc_dai_driver hsw_dais[] = {
                        .stream_name = "Analog Capture",
                        .channels_min = 2,
                        .channels_max = 2,
-                       .rates = SNDRV_PCM_RATE_8000_192000,
-                       .formats = HSW_FORMATS,
+                       .rates = SNDRV_PCM_RATE_48000,
+                       .formats = SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE,
                },
        },
 };