OSDN Git Service

ASoc: msm: Enable support for 32 bit format and 384Khz
authorAshish Jain <ashishj@codeaurora.org>
Mon, 3 Oct 2016 16:46:02 +0000 (22:16 +0530)
committerGerrit - the friendly Code Review server <code-review@localhost>
Wed, 5 Oct 2016 15:32:45 +0000 (08:32 -0700)
Add support for 32 bit data format (SNDRV_PCM_FORMAT_S32_LE)
and sampling rate of 384Khz. Also update platform drivers
to use latest version of pcm media format command
ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V4.

Change-Id: I6b7ea860a398a7e4dd5f7e23ac3906ff0c6f2b3e
Signed-off-by: Ashish Jain <ashishj@codeaurora.org>
sound/soc/msm/msm-dai-fe.c
sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c
sound/soc/msm/qdsp6v2/msm-dai-q6-v2.c
sound/soc/msm/qdsp6v2/msm-pcm-q6-v2.c
sound/soc/msm/qdsp6v2/msm-pcm-q6-v2.h

index 4cb62a6..ee9dcac 100644 (file)
@@ -96,7 +96,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                                SNDRV_PCM_FMTBIT_S24_LE |
-                                               SNDRV_PCM_FMTBIT_S24_3LE),
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -108,8 +109,9 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                        .rates = (SNDRV_PCM_RATE_8000_384000|
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
-                                   SNDRV_PCM_FMTBIT_S24_LE|
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_LE |
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 4,
                        .rate_min =     8000,
@@ -127,7 +129,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                                SNDRV_PCM_FMTBIT_S24_LE |
-                                               SNDRV_PCM_FMTBIT_S24_3LE),
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -140,7 +143,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -210,7 +214,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                                SNDRV_PCM_FMTBIT_S24_LE |
-                                               SNDRV_PCM_FMTBIT_S24_3LE),
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 6,
                        .rate_min =     8000,
@@ -222,7 +227,9 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                        .rates = (SNDRV_PCM_RATE_8000_384000|
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
-                                   SNDRV_PCM_FMTBIT_S24_LE),
+                                               SNDRV_PCM_FMTBIT_S24_LE |
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -240,7 +247,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                                SNDRV_PCM_FMTBIT_S24_LE |
-                                               SNDRV_PCM_FMTBIT_S24_3LE),
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -259,7 +267,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                                SNDRV_PCM_FMTBIT_S24_LE |
-                                               SNDRV_PCM_FMTBIT_S24_3LE),
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -271,8 +280,9 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                        .rates = (SNDRV_PCM_RATE_8000_48000|
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
-                                   SNDRV_PCM_FMTBIT_S24_LE|
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_LE |
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -290,7 +300,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                                SNDRV_PCM_FMTBIT_S24_LE |
-                                               SNDRV_PCM_FMTBIT_S24_3LE),
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -303,7 +314,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -321,7 +333,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                                SNDRV_PCM_FMTBIT_S24_LE |
-                                               SNDRV_PCM_FMTBIT_S24_3LE),
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -340,7 +353,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                                SNDRV_PCM_FMTBIT_S24_LE |
-                                               SNDRV_PCM_FMTBIT_S24_3LE),
+                                               SNDRV_PCM_FMTBIT_S24_3LE |
+                                               SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -353,7 +367,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                        SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -2220,7 +2235,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                  SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -2239,7 +2255,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                  SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -2258,7 +2275,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                  SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -2277,7 +2295,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                  SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -2296,7 +2315,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                  SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -2315,7 +2335,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                  SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
@@ -2334,7 +2355,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
                                  SNDRV_PCM_RATE_KNOT),
                        .formats = (SNDRV_PCM_FMTBIT_S16_LE |
                                    SNDRV_PCM_FMTBIT_S24_LE |
-                                   SNDRV_PCM_FMTBIT_S24_3LE),
+                                   SNDRV_PCM_FMTBIT_S24_3LE |
+                                   SNDRV_PCM_FMTBIT_S32_LE),
                        .channels_min = 1,
                        .channels_max = 8,
                        .rate_min =     8000,
index 841bb5b..770bd12 100644 (file)
@@ -709,6 +709,10 @@ static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream,
                }
 
                switch (prtd->codec_param.codec.format) {
+               case SNDRV_PCM_FORMAT_S32_LE:
+                       bit_width = 32;
+                       sample_word_size = 32;
+                       break;
                case SNDRV_PCM_FORMAT_S24_LE:
                        bit_width = 24;
                        sample_word_size = 32;
@@ -723,14 +727,16 @@ static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream,
                        sample_word_size = 16;
                        break;
                }
-               ret = q6asm_media_format_block_pcm_format_support_v3(
+               ret = q6asm_media_format_block_pcm_format_support_v4(
                                                        prtd->audio_client,
                                                        prtd->sample_rate,
                                                        prtd->num_channels,
                                                        bit_width, stream_id,
                                                        use_default_chmap,
                                                        chmap,
-                                                       sample_word_size);
+                                                       sample_word_size,
+                                                       ASM_LITTLE_ENDIAN,
+                                                       DEFAULT_QF);
                if (ret < 0)
                        pr_err("%s: CMD Format block failed\n", __func__);
 
@@ -1010,7 +1016,7 @@ static int msm_compr_configure_dsp(struct snd_compr_stream *cstream)
        } else {
                pr_debug("%s: stream_id %d bits_per_sample %d\n",
                                __func__, ac->stream_id, bits_per_sample);
-               ret = q6asm_stream_open_write_v3(ac,
+               ret = q6asm_stream_open_write_v4(ac,
                                prtd->codec, bits_per_sample,
                                ac->stream_id,
                                prtd->gapless_state.use_dsp_gapless_mode);
@@ -1942,7 +1948,7 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd)
 
                pr_debug("%s: open_write stream_id %d bits_per_sample %d",
                                __func__, stream_id, bits_per_sample);
-               rc = q6asm_stream_open_write_v3(prtd->audio_client,
+               rc = q6asm_stream_open_write_v4(prtd->audio_client,
                                prtd->codec, bits_per_sample,
                                stream_id,
                                prtd->gapless_state.use_dsp_gapless_mode);
index a89d88e..f0ad7da 100644 (file)
@@ -1607,8 +1607,13 @@ static int msm_dai_q6_usb_audio_hw_params(struct snd_pcm_hw_params *params,
                dai_data->port_config.usb_audio.bit_width = 16;
                break;
        case SNDRV_PCM_FORMAT_S24_LE:
+       case SNDRV_PCM_FORMAT_S24_3LE:
                dai_data->port_config.usb_audio.bit_width = 24;
                break;
+       case SNDRV_PCM_FORMAT_S32_LE:
+               dai_data->port_config.usb_audio.bit_width = 32;
+               break;
+
        default:
                dev_err(dai->dev, "%s: invalid format %d\n",
                        __func__, params_format(params));
@@ -2570,11 +2575,12 @@ static struct snd_soc_dai_driver msm_dai_q6_usb_rx_dai = {
                         SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
                         SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
                         SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |
-                        SNDRV_PCM_RATE_192000,
-               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
+                        SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_384000,
+               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE |
+                          SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE,
                .channels_min = 1,
                .channels_max = 8,
-               .rate_max = 192000,
+               .rate_max = 384000,
                .rate_min = 8000,
        },
        .ops = &msm_dai_q6_ops,
@@ -2591,11 +2597,12 @@ static struct snd_soc_dai_driver msm_dai_q6_usb_tx_dai = {
                         SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
                         SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
                         SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |
-                        SNDRV_PCM_RATE_192000,
-               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
+                        SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_384000,
+               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE |
+                          SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE,
                .channels_min = 1,
                .channels_max = 8,
-               .rate_max = 192000,
+               .rate_max = 384000,
                .rate_min = 8000,
        },
        .ops = &msm_dai_q6_ops,
index 4e93780..c5baf0e 100644 (file)
@@ -67,10 +67,11 @@ static struct snd_pcm_hardware msm_pcm_hardware_capture = {
                                SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME),
        .formats =              (SNDRV_PCM_FMTBIT_S16_LE |
                                SNDRV_PCM_FMTBIT_S24_LE |
-                               SNDRV_PCM_FMTBIT_S24_3LE),
-       .rates =                SNDRV_PCM_RATE_8000_48000,
+                               SNDRV_PCM_FMTBIT_S24_3LE |
+                               SNDRV_PCM_FMTBIT_S32_LE),
+       .rates =                SNDRV_PCM_RATE_8000_384000,
        .rate_min =             8000,
-       .rate_max =             48000,
+       .rate_max =             384000,
        .channels_min =         1,
        .channels_max =         4,
        .buffer_bytes_max =     CAPTURE_MAX_NUM_PERIODS *
@@ -90,10 +91,11 @@ static struct snd_pcm_hardware msm_pcm_hardware_playback = {
                                SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME),
        .formats =              (SNDRV_PCM_FMTBIT_S16_LE |
                                SNDRV_PCM_FMTBIT_S24_LE |
-                               SNDRV_PCM_FMTBIT_S24_3LE),
-       .rates =                SNDRV_PCM_RATE_8000_192000,
+                               SNDRV_PCM_FMTBIT_S24_3LE |
+                               SNDRV_PCM_FMTBIT_S32_LE),
+       .rates =                SNDRV_PCM_RATE_8000_384000,
        .rate_min =             8000,
-       .rate_max =             192000,
+       .rate_max =             384000,
        .channels_min =         1,
        .channels_max =         8,
        .buffer_bytes_max =     PLAYBACK_MAX_NUM_PERIODS *
@@ -108,7 +110,7 @@ static struct snd_pcm_hardware msm_pcm_hardware_playback = {
 /* Conventional and unconventional sample rate supported */
 static unsigned int supported_sample_rates[] = {
        8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000,
-       88200, 96000, 176400, 192000
+       88200, 96000, 176400, 192000, 384000
 };
 
 static struct snd_pcm_hw_constraint_list constraints_sample_rates = {
@@ -313,6 +315,10 @@ static int msm_pcm_playback_prepare(struct snd_pcm_substream *substream)
        pr_debug("%s: perf: %x\n", __func__, pdata->perf_mode);
 
        switch (params_format(params)) {
+       case SNDRV_PCM_FORMAT_S32_LE:
+               bits_per_sample = 32;
+               sample_word_size = 32;
+               break;
        case SNDRV_PCM_FORMAT_S24_LE:
                bits_per_sample = 24;
                sample_word_size = 32;
@@ -328,7 +334,7 @@ static int msm_pcm_playback_prepare(struct snd_pcm_substream *substream)
                break;
        }
 
-       ret = q6asm_open_write_v3(prtd->audio_client,
+       ret = q6asm_open_write_v4(prtd->audio_client,
                                  FORMAT_LINEAR_PCM, bits_per_sample);
 
        if (ret < 0) {
@@ -353,11 +359,12 @@ static int msm_pcm_playback_prepare(struct snd_pcm_substream *substream)
                return ret;
        }
 
-       ret = q6asm_media_format_block_multi_ch_pcm_v3(
+       ret = q6asm_media_format_block_multi_ch_pcm_v4(
                                prtd->audio_client, runtime->rate,
                                runtime->channels, !prtd->set_channel_map,
                                prtd->channel_map, bits_per_sample,
-                               sample_word_size);
+                               sample_word_size, ASM_LITTLE_ENDIAN,
+                               DEFAULT_QF);
        if (ret < 0)
                pr_info("%s: CMD Format block failed\n", __func__);
 
@@ -402,6 +409,8 @@ static int msm_pcm_capture_prepare(struct snd_pcm_substream *substream)
                if ((params_format(params) == SNDRV_PCM_FORMAT_S24_LE) ||
                        (params_format(params) == SNDRV_PCM_FORMAT_S24_3LE))
                        bits_per_sample = 24;
+               else if (params_format(params) == SNDRV_PCM_FORMAT_S32_LE)
+                       bits_per_sample = 32;
 
                /* ULL mode is not supported in capture path */
                if (pdata->perf_mode == LEGACY_PCM_MODE)
@@ -413,7 +422,7 @@ static int msm_pcm_capture_prepare(struct snd_pcm_substream *substream)
                                __func__, params_channels(params),
                                prtd->audio_client->perf_mode);
 
-               ret = q6asm_open_read_v3(prtd->audio_client, FORMAT_LINEAR_PCM,
+               ret = q6asm_open_read_v4(prtd->audio_client, FORMAT_LINEAR_PCM,
                                bits_per_sample);
                if (ret < 0) {
                        pr_err("%s: q6asm_open_read failed\n", __func__);
@@ -459,6 +468,10 @@ static int msm_pcm_capture_prepare(struct snd_pcm_substream *substream)
                return 0;
 
        switch (runtime->format) {
+       case SNDRV_PCM_FORMAT_S32_LE:
+               bits_per_sample = 32;
+               sample_word_size = 32;
+               break;
        case SNDRV_PCM_FORMAT_S24_LE:
                bits_per_sample = 24;
                sample_word_size = 32;
@@ -477,11 +490,13 @@ static int msm_pcm_capture_prepare(struct snd_pcm_substream *substream)
        pr_debug("%s: Samp_rate = %d Channel = %d bit width = %d, word size = %d\n",
                        __func__, prtd->samp_rate, prtd->channel_mode,
                        bits_per_sample, sample_word_size);
-       ret = q6asm_enc_cfg_blk_pcm_format_support_v3(prtd->audio_client,
+       ret = q6asm_enc_cfg_blk_pcm_format_support_v4(prtd->audio_client,
                                                      prtd->samp_rate,
                                                      prtd->channel_mode,
                                                      bits_per_sample,
-                                                     sample_word_size);
+                                                     sample_word_size,
+                                                     ASM_LITTLE_ENDIAN,
+                                                     DEFAULT_QF);
        if (ret < 0)
                pr_debug("%s: cmd cfg pcm was block failed", __func__);
 
index 72418ea..8fe3139 100644 (file)
@@ -59,11 +59,11 @@ struct msm_audio_in_frame_info {
 
 #define PLAYBACK_MIN_NUM_PERIODS    2
 #define PLAYBACK_MAX_NUM_PERIODS    8
-#define PLAYBACK_MAX_PERIOD_SIZE    12288
+#define PLAYBACK_MAX_PERIOD_SIZE    122880
 #define PLAYBACK_MIN_PERIOD_SIZE    128
 #define CAPTURE_MIN_NUM_PERIODS     2
 #define CAPTURE_MAX_NUM_PERIODS     8
-#define CAPTURE_MAX_PERIOD_SIZE     61440
+#define CAPTURE_MAX_PERIOD_SIZE     122880
 #define CAPTURE_MIN_PERIOD_SIZE     320
 
 struct msm_audio {