Loading include/sound/apr_audio-v2.h +70 −0 Original line number Diff line number Diff line Loading @@ -3341,6 +3341,16 @@ struct asm_multi_channel_pcm_fmt_blk_v3 { */ } __packed; /* * Payload of the multichannel PCM configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 media format. */ struct asm_multi_channel_pcm_fmt_blk_param_v3 { struct apr_hdr hdr; struct asm_data_cmd_media_fmt_update_v2 fmt_blk; struct asm_multi_channel_pcm_fmt_blk_v3 param; } __packed; struct asm_stream_cmd_set_encdec_param { u32 param_id; /* ID of the parameter. */ Loading Loading @@ -3376,6 +3386,66 @@ struct asm_dec_ddp_endp_param_v2 { int endp_param_value; } __packed; /* * Payload of the multichannel PCM encoder configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 media format. */ struct asm_multi_channel_pcm_enc_cfg_v3 { struct apr_hdr hdr; struct asm_stream_cmd_set_encdec_param encdec; struct asm_enc_cfg_blk_param_v2 encblk; uint16_t num_channels; /* * Number of PCM channels. * @values * - 0 -- Native mode * - 1 -- 8 channels * Native mode indicates that encoding must be performed with the number * of channels at the input. */ uint16_t bits_per_sample; /* * Number of bits per sample per channel. * @values 16, 24 */ uint32_t sample_rate; /* * Number of samples per second. * @values 0, 8000 to 48000 Hz * A value of 0 indicates the native sampling rate. Encoding is * performed at the input sampling rate. */ uint16_t is_signed; /* * Flag that indicates the PCM samples are signed (1). Currently, only * signed PCM samples are supported. */ uint16_t sample_word_size; /* * The size in bits of the word that holds a sample of a channel. * @values 16, 24, 32 * 16-bit samples are always placed in 16-bit words: * sample_word_size = 1. * 24-bit samples can be placed in 32-bit words or in consecutive * 24-bit words. * - If sample_word_size = 32, 24-bit samples are placed in the * most significant 24 bits of a 32-bit word. * - If sample_word_size = 24, 24-bit samples are placed in * 24-bit words. @tablebulletend */ uint8_t channel_mapping[8]; /* * Channel mapping array expected at the encoder output. * Channel[i] mapping describes channel i inside the buffer, where * 0 @le i < num_channels. All valid used channels must be present at * the beginning of the array. * If Native mode is set for the channels, this field is ignored. * @values See Section @xref{dox:PcmChannelDefs} */ }; /* @brief Multichannel PCM encoder configuration structure used * in the #ASM_PARAM_ID_ENCDEC_ENC_CFG_BLK_V2 command. */ Loading include/sound/q6asm-v2.h +39 −2 Original line number Diff line number Diff line Loading @@ -242,6 +242,9 @@ int q6asm_open_read(struct audio_client *ac, uint32_t format int q6asm_open_read_v2(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample); int q6asm_open_read_v3(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample); int q6asm_open_write(struct audio_client *ac, uint32_t format /*, uint16_t bits_per_sample*/); Loading @@ -251,10 +254,17 @@ int q6asm_open_write_v2(struct audio_client *ac, uint32_t format, int q6asm_open_shared_io(struct audio_client *ac, struct shared_io_config *c, int dir); int q6asm_open_write_v3(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample); int q6asm_stream_open_write_v2(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample, int32_t stream_id, bool is_gapless_mode); int q6asm_stream_open_write_v3(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample, int32_t stream_id, bool is_gapless_mode); int q6asm_open_write_compressed(struct audio_client *ac, uint32_t format, uint32_t passthrough_flag); Loading Loading @@ -355,10 +365,21 @@ int q6asm_enc_cfg_blk_pcm_v2(struct audio_client *ac, bool use_default_chmap, bool use_back_flavor, u8 *channel_map); int q6asm_enc_cfg_blk_pcm_v3(struct audio_client *ac, uint32_t rate, uint32_t channels, uint16_t bits_per_sample, bool use_default_chmap, bool use_back_flavor, u8 *channel_map, uint16_t sample_word_size); int q6asm_enc_cfg_blk_pcm_format_support(struct audio_client *ac, uint32_t rate, uint32_t channels, uint16_t bits_per_sample); int q6asm_enc_cfg_blk_pcm_format_support_v3(struct audio_client *ac, uint32_t rate, uint32_t channels, uint16_t bits_per_sample, uint16_t sample_word_size); int q6asm_set_encdec_chan_map(struct audio_client *ac, uint32_t num_channels); Loading Loading @@ -399,6 +420,15 @@ int q6asm_media_format_block_pcm_format_support_v2(struct audio_client *ac, uint16_t bits_per_sample, int stream_id, bool use_default_chmap, char *channel_map); int q6asm_media_format_block_pcm_format_support_v3(struct audio_client *ac, uint32_t rate, uint32_t channels, uint16_t bits_per_sample, int stream_id, bool use_default_chmap, char *channel_map, uint16_t sample_word_size); int q6asm_media_format_block_multi_ch_pcm(struct audio_client *ac, uint32_t rate, uint32_t channels, bool use_default_chmap, char *channel_map); Loading @@ -409,6 +439,13 @@ int q6asm_media_format_block_multi_ch_pcm_v2( bool use_default_chmap, char *channel_map, uint16_t bits_per_sample); int q6asm_media_format_block_multi_ch_pcm_v3(struct audio_client *ac, uint32_t rate, uint32_t channels, bool use_default_chmap, char *channel_map, uint16_t bits_per_sample, uint16_t sample_word_size); int q6asm_media_format_block_aac(struct audio_client *ac, struct asm_aac_cfg *cfg); Loading sound/soc/codecs/msm8x16-wcd.c +3 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,8 @@ #define MSM8X16_WCD_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000) #define MSM8X16_WCD_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE |\ SNDRV_PCM_FMTBIT_S24_3LE) #define NUM_INTERPOLATORS 3 #define BITS_PER_REG 8 Loading Loading @@ -4747,6 +4748,7 @@ static int msm8x16_wcd_hw_params(struct snd_pcm_substream *substream, MSM8X16_WCD_A_CDC_CLK_RX_I2S_CTL, 0x20, 0x20); break; case SNDRV_PCM_FORMAT_S24_LE: case SNDRV_PCM_FORMAT_S24_3LE: snd_soc_update_bits(dai->codec, MSM8X16_WCD_A_CDC_CLK_RX_I2S_CTL, 0x20, 0x00); break; Loading sound/soc/codecs/wcd9335.c +3 −1 Original line number Diff line number Diff line Loading @@ -57,10 +57,12 @@ SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000) #define TASHA_FORMATS_S16_S24_LE (SNDRV_PCM_FMTBIT_S16_LE | \ SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S24_3LE) #define TASHA_FORMATS_S16_S24_S32_LE (SNDRV_PCM_FMTBIT_S16_LE | \ SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S24_3LE | \ SNDRV_PCM_FMTBIT_S32_LE) #define TASHA_FORMATS (SNDRV_PCM_FMTBIT_S16_LE) Loading sound/soc/msm/msm-dai-fe.c +44 −22 Original line number Diff line number Diff line Loading @@ -93,7 +93,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -105,7 +106,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 4, .rate_min = 8000, Loading @@ -122,7 +124,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -134,7 +137,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading Loading @@ -203,7 +207,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 6, .rate_min = 8000, Loading Loading @@ -232,7 +237,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -244,7 +250,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -262,7 +269,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -274,7 +282,8 @@ 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_LE| SNDRV_PCM_FMTBIT_S24_3LE), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -291,7 +300,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -303,7 +313,8 @@ 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_LE | SNDRV_PCM_FMTBIT_S24_3LE), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -320,7 +331,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -338,7 +350,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -350,7 +363,8 @@ 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_LE | SNDRV_PCM_FMTBIT_S24_3LE), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading Loading @@ -1989,7 +2003,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading Loading @@ -2188,7 +2203,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2206,7 +2222,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2224,7 +2241,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2242,7 +2260,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2260,7 +2279,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2278,7 +2298,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2296,7 +2317,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading Loading
include/sound/apr_audio-v2.h +70 −0 Original line number Diff line number Diff line Loading @@ -3341,6 +3341,16 @@ struct asm_multi_channel_pcm_fmt_blk_v3 { */ } __packed; /* * Payload of the multichannel PCM configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 media format. */ struct asm_multi_channel_pcm_fmt_blk_param_v3 { struct apr_hdr hdr; struct asm_data_cmd_media_fmt_update_v2 fmt_blk; struct asm_multi_channel_pcm_fmt_blk_v3 param; } __packed; struct asm_stream_cmd_set_encdec_param { u32 param_id; /* ID of the parameter. */ Loading Loading @@ -3376,6 +3386,66 @@ struct asm_dec_ddp_endp_param_v2 { int endp_param_value; } __packed; /* * Payload of the multichannel PCM encoder configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 media format. */ struct asm_multi_channel_pcm_enc_cfg_v3 { struct apr_hdr hdr; struct asm_stream_cmd_set_encdec_param encdec; struct asm_enc_cfg_blk_param_v2 encblk; uint16_t num_channels; /* * Number of PCM channels. * @values * - 0 -- Native mode * - 1 -- 8 channels * Native mode indicates that encoding must be performed with the number * of channels at the input. */ uint16_t bits_per_sample; /* * Number of bits per sample per channel. * @values 16, 24 */ uint32_t sample_rate; /* * Number of samples per second. * @values 0, 8000 to 48000 Hz * A value of 0 indicates the native sampling rate. Encoding is * performed at the input sampling rate. */ uint16_t is_signed; /* * Flag that indicates the PCM samples are signed (1). Currently, only * signed PCM samples are supported. */ uint16_t sample_word_size; /* * The size in bits of the word that holds a sample of a channel. * @values 16, 24, 32 * 16-bit samples are always placed in 16-bit words: * sample_word_size = 1. * 24-bit samples can be placed in 32-bit words or in consecutive * 24-bit words. * - If sample_word_size = 32, 24-bit samples are placed in the * most significant 24 bits of a 32-bit word. * - If sample_word_size = 24, 24-bit samples are placed in * 24-bit words. @tablebulletend */ uint8_t channel_mapping[8]; /* * Channel mapping array expected at the encoder output. * Channel[i] mapping describes channel i inside the buffer, where * 0 @le i < num_channels. All valid used channels must be present at * the beginning of the array. * If Native mode is set for the channels, this field is ignored. * @values See Section @xref{dox:PcmChannelDefs} */ }; /* @brief Multichannel PCM encoder configuration structure used * in the #ASM_PARAM_ID_ENCDEC_ENC_CFG_BLK_V2 command. */ Loading
include/sound/q6asm-v2.h +39 −2 Original line number Diff line number Diff line Loading @@ -242,6 +242,9 @@ int q6asm_open_read(struct audio_client *ac, uint32_t format int q6asm_open_read_v2(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample); int q6asm_open_read_v3(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample); int q6asm_open_write(struct audio_client *ac, uint32_t format /*, uint16_t bits_per_sample*/); Loading @@ -251,10 +254,17 @@ int q6asm_open_write_v2(struct audio_client *ac, uint32_t format, int q6asm_open_shared_io(struct audio_client *ac, struct shared_io_config *c, int dir); int q6asm_open_write_v3(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample); int q6asm_stream_open_write_v2(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample, int32_t stream_id, bool is_gapless_mode); int q6asm_stream_open_write_v3(struct audio_client *ac, uint32_t format, uint16_t bits_per_sample, int32_t stream_id, bool is_gapless_mode); int q6asm_open_write_compressed(struct audio_client *ac, uint32_t format, uint32_t passthrough_flag); Loading Loading @@ -355,10 +365,21 @@ int q6asm_enc_cfg_blk_pcm_v2(struct audio_client *ac, bool use_default_chmap, bool use_back_flavor, u8 *channel_map); int q6asm_enc_cfg_blk_pcm_v3(struct audio_client *ac, uint32_t rate, uint32_t channels, uint16_t bits_per_sample, bool use_default_chmap, bool use_back_flavor, u8 *channel_map, uint16_t sample_word_size); int q6asm_enc_cfg_blk_pcm_format_support(struct audio_client *ac, uint32_t rate, uint32_t channels, uint16_t bits_per_sample); int q6asm_enc_cfg_blk_pcm_format_support_v3(struct audio_client *ac, uint32_t rate, uint32_t channels, uint16_t bits_per_sample, uint16_t sample_word_size); int q6asm_set_encdec_chan_map(struct audio_client *ac, uint32_t num_channels); Loading Loading @@ -399,6 +420,15 @@ int q6asm_media_format_block_pcm_format_support_v2(struct audio_client *ac, uint16_t bits_per_sample, int stream_id, bool use_default_chmap, char *channel_map); int q6asm_media_format_block_pcm_format_support_v3(struct audio_client *ac, uint32_t rate, uint32_t channels, uint16_t bits_per_sample, int stream_id, bool use_default_chmap, char *channel_map, uint16_t sample_word_size); int q6asm_media_format_block_multi_ch_pcm(struct audio_client *ac, uint32_t rate, uint32_t channels, bool use_default_chmap, char *channel_map); Loading @@ -409,6 +439,13 @@ int q6asm_media_format_block_multi_ch_pcm_v2( bool use_default_chmap, char *channel_map, uint16_t bits_per_sample); int q6asm_media_format_block_multi_ch_pcm_v3(struct audio_client *ac, uint32_t rate, uint32_t channels, bool use_default_chmap, char *channel_map, uint16_t bits_per_sample, uint16_t sample_word_size); int q6asm_media_format_block_aac(struct audio_client *ac, struct asm_aac_cfg *cfg); Loading
sound/soc/codecs/msm8x16-wcd.c +3 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,8 @@ #define MSM8X16_WCD_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000) #define MSM8X16_WCD_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE |\ SNDRV_PCM_FMTBIT_S24_3LE) #define NUM_INTERPOLATORS 3 #define BITS_PER_REG 8 Loading Loading @@ -4747,6 +4748,7 @@ static int msm8x16_wcd_hw_params(struct snd_pcm_substream *substream, MSM8X16_WCD_A_CDC_CLK_RX_I2S_CTL, 0x20, 0x20); break; case SNDRV_PCM_FORMAT_S24_LE: case SNDRV_PCM_FORMAT_S24_3LE: snd_soc_update_bits(dai->codec, MSM8X16_WCD_A_CDC_CLK_RX_I2S_CTL, 0x20, 0x00); break; Loading
sound/soc/codecs/wcd9335.c +3 −1 Original line number Diff line number Diff line Loading @@ -57,10 +57,12 @@ SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000) #define TASHA_FORMATS_S16_S24_LE (SNDRV_PCM_FMTBIT_S16_LE | \ SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S24_3LE) #define TASHA_FORMATS_S16_S24_S32_LE (SNDRV_PCM_FMTBIT_S16_LE | \ SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S24_3LE | \ SNDRV_PCM_FMTBIT_S32_LE) #define TASHA_FORMATS (SNDRV_PCM_FMTBIT_S16_LE) Loading
sound/soc/msm/msm-dai-fe.c +44 −22 Original line number Diff line number Diff line Loading @@ -93,7 +93,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -105,7 +106,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 4, .rate_min = 8000, Loading @@ -122,7 +124,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -134,7 +137,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading Loading @@ -203,7 +207,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 6, .rate_min = 8000, Loading Loading @@ -232,7 +237,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -244,7 +250,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -262,7 +269,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -274,7 +282,8 @@ 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_LE| SNDRV_PCM_FMTBIT_S24_3LE), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -291,7 +300,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -303,7 +313,8 @@ 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_LE | SNDRV_PCM_FMTBIT_S24_3LE), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -320,7 +331,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -338,7 +350,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -350,7 +363,8 @@ 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_LE | SNDRV_PCM_FMTBIT_S24_3LE), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading Loading @@ -1989,7 +2003,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000| 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading Loading @@ -2188,7 +2203,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2206,7 +2222,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2224,7 +2241,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2242,7 +2260,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2260,7 +2279,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2278,7 +2298,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading @@ -2296,7 +2317,8 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .rates = (SNDRV_PCM_RATE_8000_192000 | 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), .channels_min = 1, .channels_max = 8, .rate_min = 8000, Loading