aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/intel
diff options
context:
space:
mode:
authorJie Yang <yang.jie@intel.com>2014-07-14 05:37:36 -0400
committerMark Brown <broonie@linaro.org>2014-07-14 14:09:05 -0400
commit8e89761876611f06ef4be865b4780b4361caf4af (patch)
tree10c08443dfc014230764a08b505f0aabf41f9869 /sound/soc/intel
parentab6f7d0d932313cedfb1696e0536bdbe661cd9c9 (diff)
ASoC: Intel: Cleanup HSW pcm format support
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
Diffstat (limited to 'sound/soc/intel')
-rw-r--r--sound/soc/intel/sst-baytrail-pcm.c2
-rw-r--r--sound/soc/intel/sst-haswell-pcm.c27
2 files changed, 19 insertions, 10 deletions
diff --git a/sound/soc/intel/sst-baytrail-pcm.c b/sound/soc/intel/sst-baytrail-pcm.c
index 8eab97368ea7..599401c0c655 100644
--- a/sound/soc/intel/sst-baytrail-pcm.c
+++ b/sound/soc/intel/sst-baytrail-pcm.c
@@ -32,7 +32,7 @@ static const struct snd_pcm_hardware sst_byt_pcm_hardware = {
32 SNDRV_PCM_INFO_PAUSE | 32 SNDRV_PCM_INFO_PAUSE |
33 SNDRV_PCM_INFO_RESUME, 33 SNDRV_PCM_INFO_RESUME,
34 .formats = SNDRV_PCM_FMTBIT_S16_LE | 34 .formats = SNDRV_PCM_FMTBIT_S16_LE |
35 SNDRV_PCM_FORMAT_S24_LE, 35 SNDRV_PCM_FMTBIT_S24_LE,
36 .period_bytes_min = 384, 36 .period_bytes_min = 384,
37 .period_bytes_max = 48000, 37 .period_bytes_max = 48000,
38 .periods_min = 2, 38 .periods_min = 2,
diff --git a/sound/soc/intel/sst-haswell-pcm.c b/sound/soc/intel/sst-haswell-pcm.c
index 058efb17c568..61bf6da4bb02 100644
--- a/sound/soc/intel/sst-haswell-pcm.c
+++ b/sound/soc/intel/sst-haswell-pcm.c
@@ -80,7 +80,7 @@ static const struct snd_pcm_hardware hsw_pcm_hardware = {
80 SNDRV_PCM_INFO_PAUSE | 80 SNDRV_PCM_INFO_PAUSE |
81 SNDRV_PCM_INFO_RESUME | 81 SNDRV_PCM_INFO_RESUME |
82 SNDRV_PCM_INFO_NO_PERIOD_WAKEUP, 82 SNDRV_PCM_INFO_NO_PERIOD_WAKEUP,
83 .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FORMAT_S24_LE | 83 .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE |
84 SNDRV_PCM_FMTBIT_S32_LE, 84 SNDRV_PCM_FMTBIT_S32_LE,
85 .period_bytes_min = PAGE_SIZE, 85 .period_bytes_min = PAGE_SIZE,
86 .period_bytes_max = (HSW_PCM_PERIODS_MAX / HSW_PCM_PERIODS_MIN) * PAGE_SIZE, 86 .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,
400 sst_hsw_stream_set_valid(hsw, pcm_data->stream, 16); 400 sst_hsw_stream_set_valid(hsw, pcm_data->stream, 16);
401 break; 401 break;
402 case SNDRV_PCM_FORMAT_S24_LE: 402 case SNDRV_PCM_FORMAT_S24_LE:
403 bits = SST_HSW_DEPTH_24BIT; 403 bits = SST_HSW_DEPTH_32BIT;
404 sst_hsw_stream_set_valid(hsw, pcm_data->stream, 24);
405 break;
406 case SNDRV_PCM_FORMAT_S8:
407 bits = SST_HSW_DEPTH_8BIT;
408 sst_hsw_stream_set_valid(hsw, pcm_data->stream, 8);
409 break;
410 case SNDRV_PCM_FORMAT_S32_LE:
411 bits = SST_HSW_DEPTH_32BIT;
404 sst_hsw_stream_set_valid(hsw, pcm_data->stream, 32); 412 sst_hsw_stream_set_valid(hsw, pcm_data->stream, 32);
405 break; 413 break;
406 default: 414 default:
@@ -685,8 +693,9 @@ static int hsw_pcm_new(struct snd_soc_pcm_runtime *rtd)
685} 693}
686 694
687#define HSW_FORMATS \ 695#define HSW_FORMATS \
688 (SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S16_LE |\ 696 (SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S24_LE | \
689 SNDRV_PCM_FMTBIT_S32_LE) 697 SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S16_LE |\
698 SNDRV_PCM_FMTBIT_S8)
690 699
691static struct snd_soc_dai_driver hsw_dais[] = { 700static struct snd_soc_dai_driver hsw_dais[] = {
692 { 701 {
@@ -696,7 +705,7 @@ static struct snd_soc_dai_driver hsw_dais[] = {
696 .channels_min = 2, 705 .channels_min = 2,
697 .channels_max = 2, 706 .channels_max = 2,
698 .rates = SNDRV_PCM_RATE_48000, 707 .rates = SNDRV_PCM_RATE_48000,
699 .formats = SNDRV_PCM_FMTBIT_S16_LE, 708 .formats = SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE,
700 }, 709 },
701 }, 710 },
702 { 711 {
@@ -727,8 +736,8 @@ static struct snd_soc_dai_driver hsw_dais[] = {
727 .stream_name = "Loopback Capture", 736 .stream_name = "Loopback Capture",
728 .channels_min = 2, 737 .channels_min = 2,
729 .channels_max = 2, 738 .channels_max = 2,
730 .rates = SNDRV_PCM_RATE_8000_192000, 739 .rates = SNDRV_PCM_RATE_48000,
731 .formats = HSW_FORMATS, 740 .formats = SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE,
732 }, 741 },
733 }, 742 },
734 { 743 {
@@ -737,8 +746,8 @@ static struct snd_soc_dai_driver hsw_dais[] = {
737 .stream_name = "Analog Capture", 746 .stream_name = "Analog Capture",
738 .channels_min = 2, 747 .channels_min = 2,
739 .channels_max = 2, 748 .channels_max = 2,
740 .rates = SNDRV_PCM_RATE_8000_192000, 749 .rates = SNDRV_PCM_RATE_48000,
741 .formats = HSW_FORMATS, 750 .formats = SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE,
742 }, 751 },
743 }, 752 },
744}; 753};