Loading dsp/q6afe.c +10 −0 Original line number Diff line number Diff line Loading @@ -890,6 +890,8 @@ int afe_sizeof_cfg_cmd(u16 port_id) case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: default: pr_debug("%s: default case 0x%x\n", __func__, port_id); ret_size = SIZEOF_CFG_CMD(afe_param_id_pcm_cfg); Loading Loading @@ -3979,6 +3981,8 @@ static int __afe_port_start(u16 port_id, union afe_port_config *afe_config, case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: cfg_type = AFE_PARAM_ID_PCM_CONFIG; break; case PRIMARY_I2S_RX: Loading Loading @@ -4250,6 +4254,10 @@ int afe_get_port_index(u16 port_id) return IDX_AFE_PORT_ID_QUINARY_PCM_RX; case AFE_PORT_ID_QUINARY_PCM_TX: return IDX_AFE_PORT_ID_QUINARY_PCM_TX; case AFE_PORT_ID_SENARY_PCM_RX: return IDX_AFE_PORT_ID_SENARY_PCM_RX; case AFE_PORT_ID_SENARY_PCM_TX: return IDX_AFE_PORT_ID_SENARY_PCM_TX; case SECONDARY_I2S_RX: return IDX_SECONDARY_I2S_RX; case SECONDARY_I2S_TX: return IDX_SECONDARY_I2S_TX; case MI2S_RX: return IDX_MI2S_RX; Loading Loading @@ -4649,6 +4657,8 @@ int afe_open(u16 port_id, case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: cfg_type = AFE_PARAM_ID_PCM_CONFIG; break; case SECONDARY_I2S_RX: Loading dsp/q6audio-v2.c +12 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,10 @@ int q6audio_get_port_index(u16 port_id) return IDX_AFE_PORT_ID_QUINARY_PCM_RX; case AFE_PORT_ID_QUINARY_PCM_TX: return IDX_AFE_PORT_ID_QUINARY_PCM_TX; case AFE_PORT_ID_SENARY_PCM_RX: return IDX_AFE_PORT_ID_SENARY_PCM_RX; case AFE_PORT_ID_SENARY_PCM_TX: return IDX_AFE_PORT_ID_SENARY_PCM_TX; case SECONDARY_I2S_RX: return IDX_SECONDARY_I2S_RX; case SECONDARY_I2S_TX: return IDX_SECONDARY_I2S_TX; case MI2S_RX: return IDX_MI2S_RX; Loading Loading @@ -377,6 +381,10 @@ int q6audio_get_port_id(u16 port_id) return AFE_PORT_ID_QUINARY_PCM_RX; case AFE_PORT_ID_QUINARY_PCM_TX: return AFE_PORT_ID_QUINARY_PCM_TX; case AFE_PORT_ID_SENARY_PCM_RX: return AFE_PORT_ID_SENARY_PCM_RX; case AFE_PORT_ID_SENARY_PCM_TX: return AFE_PORT_ID_SENARY_PCM_TX; case SECONDARY_I2S_RX: return AFE_PORT_ID_SECONDARY_MI2S_RX; case SECONDARY_I2S_TX: return AFE_PORT_ID_SECONDARY_MI2S_TX; case MI2S_RX: return AFE_PORT_ID_PRIMARY_MI2S_RX; Loading Loading @@ -729,6 +737,8 @@ int q6audio_is_digital_pcm_interface(u16 port_id) case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: case SECONDARY_I2S_RX: case SECONDARY_I2S_TX: case MI2S_RX: Loading Loading @@ -898,6 +908,8 @@ int q6audio_validate_port(u16 port_id) case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: case SECONDARY_I2S_RX: case SECONDARY_I2S_TX: case MI2S_RX: Loading include/dsp/apr_audio-v2.h +493 −6 Original line number Diff line number Diff line Loading @@ -212,6 +212,17 @@ struct adm_cmd_matrix_map_routings_v5 { */ #define ADM_CMD_DEVICE_OPEN_V6 0x00010356 /* This command allows a client to open a COPP/Voice Proc the * way as ADM_CMD_DEVICE_OPEN_V8 but supports any number channel * of configuration. * * @return * #ADM_CMDRSP_DEVICE_OPEN_V8 with the resulting status and * COPP ID. */ #define ADM_CMD_DEVICE_OPEN_V8 0x0001036A /* Definition for a low latency stream session. */ #define ADM_LOW_LATENCY_DEVICE_SESSION 0x2000 Loading Loading @@ -490,6 +501,110 @@ struct adm_cmd_device_open_v6 { */ } __packed; /* ADM device open endpoint payload the * #ADM_CMD_DEVICE_OPEN_V8 command. */ struct adm_device_endpoint_payload { u16 dev_num_channel; /* Number of channels the audio COPP sends to/receives from * the endpoint. * Supported values: 1 to 32. * The value is ignored for the voice processor Tx block, * where channel * configuration is derived from the topology ID. */ u16 bit_width; /* Bit width (in bits) that the audio COPP sends to/receives * from the * endpoint. The value is ignored for the voice processing * Tx block, * where the PCM width is 16 bits. */ u32 sample_rate; /* Sampling rate at which the audio COPP/voice processor * Tx block * interfaces with the endpoint. * Supported values for voice processor Tx: 8000, 16000, * 48000 Hz * Supported values for audio COPP: >0 and <=192 kHz */ u8 dev_channel_mapping[32]; } __packed; /* ADM device open command payload of the * #ADM_CMD_DEVICE_OPEN_V8 command. */ struct adm_cmd_device_open_v8 { struct apr_hdr hdr; u16 flags; /* Bit width Native mode enabled : 11th bit of flag parameter * If 11th bit of flag is set then that means matrix mixer will be * running in native mode for bit width for this device session. * * Channel Native mode enabled : 12th bit of flag parameter * If 12th bit of flag is set then that means matrix mixer will be * running in native mode for channel configuration for this device session. * All other bits are reserved; clients must set them to 0. */ u16 mode_of_operation; /* Specifies whether the COPP must be opened on the Tx or Rx * path. Use the ADM_CMD_COPP_OPEN_MODE_OF_OPERATION_* macros for * supported values and interpretation. * Supported values: * - 0x1 -- Rx path COPP * - 0x2 -- Tx path live COPP * - 0x3 -- Tx path nonlive COPP * Live connections cause sample discarding in the Tx device * matrix if the destination output ports do not pull them * fast enough. Nonlive connections queue the samples * indefinitely. */ u32 topology_id; /* Audio COPP topology ID; 32-bit GUID. */ u16 endpoint_id_1; /* Logical and physical endpoint ID of the audio path. * If the ID is a voice processor Tx block, it receives near * samples. * Supported values: Any pseudoport, AFE Rx port, * or AFE Tx port For a list of valid IDs, refer to * @xhyperref{Q4,[Q4]}. * Q4 = Hexagon Multimedia: AFE Interface Specification */ u16 endpoint_id_2; /* Logical and physical endpoint ID 2 for a voice processor * Tx block. * This is not applicable to audio COPP. * Supported values: * - AFE Rx port * - 0xFFFF -- Endpoint 2 is unavailable and the voice * processor Tx * block ignores this endpoint * When the voice processor Tx block is created on the audio * record path, * it can receive far-end samples from an AFE Rx port if the * voice call * is active. The ID of the AFE port is provided in this * field. * For a list of valid IDs, refer @xhyperref{Q4,[Q4]}. */ u16 endpoint_id_3; /* * Logical and physical endpoint ID of the audio path. * This indicated afe rx port in ADM loopback use cases. * In all other use cases this should be set to 0xffff */ u16 reserved; } __packed; /* * This command allows the client to close a COPP and disconnect * the device session. Loading Loading @@ -620,6 +735,9 @@ struct adm_cmd_rsp_device_open_v5 { /* Returns the status and COPP ID to an #ADM_CMD_DEVICE_OPEN_V6 command. */ #define ADM_CMDRSP_DEVICE_OPEN_V6 0x00010357 /* Returns the status and COPP ID to an #ADM_CMD_DEVICE_OPEN_V8 command. */ #define ADM_CMDRSP_DEVICE_OPEN_V8 0x0001036B /* Payload of the #ADM_CMDRSP_DEVICE_OPEN_V6 message, * which returns the * status and COPP ID to an #ADM_CMD_DEVICE_OPEN_V6 command Loading Loading @@ -804,6 +922,12 @@ struct audproc_enable_param_t { */ #define ADM_CMD_MATRIX_RAMP_GAINS_V5 0x0001032C /* * Allows a client to control the gains on various session-to-COPP paths. * Maximum support 32 channels */ #define ADM_CMD_MATRIX_RAMP_GAINS_V7 0x0001036C /* Indicates that the target gain in the * current adm_session_copp_gain_v5 * structure is to be applied to all Loading Loading @@ -916,12 +1040,97 @@ struct adm_session_copp_gain_v5 { /* Target linear gain for channel 8 in Q13 format; */ } __packed; /* Payload of the #ADM_CMD_MATRIX_RAMP_GAINS_V7 command. * Immediately following this structure are num_gains of the * adm_session_copp_gain_v5structure. */ struct adm_cmd_matrix_ramp_gains_v7 { struct apr_hdr hdr; u32 matrix_id; /* Specifies whether the matrix ID is Audio Rx (0) or Audio Tx (1). * Use the ADM_MATRIX_ID_AUDIO_RX or ADM_MATRIX_ID_AUDIOX * macros to set this field. */ u16 num_gains; /* Number of gains being applied. */ u16 reserved_for_align; /* Reserved. This field must be set to zero.*/ } __packed; /* Session-to-COPP path gain structure, used by the * #ADM_CMD_MATRIX_RAMP_GAINS_V7 command. * This structure specifies the target * gain (per channel) that must be applied * to a particular session-to-COPP path in * the audio matrix. The structure can * also be used to apply the gain globally * to all session-to-COPP paths that * exist for the given session. * The aDSP uses device channel mapping to * determine which channel gains to * use from this command. For example, * if the device is configured as stereo, * the aDSP uses only target_gain_ch_1 and * target_gain_ch_2, and it ignores * the others. */ struct adm_session_copp_gain_v7 { u16 session_id; /* Handle of the ASM session. * Supported values: 1 to 8. */ u16 copp_id; /* Handle of the COPP. Gain will be applied on the Session ID * COPP ID path. */ u16 ramp_duration; /* Duration (in milliseconds) of the ramp over * which target gains are * to be applied. Use * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE * to indicate that gain must be applied immediately. */ u16 step_duration; /* Duration (in milliseconds) of each step in the ramp. * This parameter is ignored if ramp_duration is equal to * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE. * Supported value: 1 */ u16 ramp_curve; /* Type of ramping curve. * Supported value: #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_CURVE_LINEAR */ u16 stream_type; /* Type of stream_type. * Supported value: #STREAM_TYPE_ASM STREAM_TYPE_LSM */ u16 num_channels; /* Number of channels on which gain needs to be applied. * Supported value: 1 to 32. */ u16 reserved_for_align; /* Reserved. This field must be set to zero. */ } __packed; /* Allows to set mute/unmute on various session-to-COPP paths. * For every session-to-COPP path (stream-device interconnection), * mute/unmute can be set individually on the output channels. */ #define ADM_CMD_MATRIX_MUTE_V5 0x0001032D /* Allows to set mute/unmute on various session-to-COPP paths. * For every session-to-COPP path (stream-device interconnection), * mute/unmute can be set individually on the output channels. */ #define ADM_CMD_MATRIX_MUTE_V7 0x0001036D /* Indicates that mute/unmute in the * current adm_session_copp_mute_v5structure * is to be applied to all the session-to-COPP Loading Loading @@ -987,6 +1196,50 @@ struct adm_cmd_matrix_mute_v5 { /* Clients must set this field to zero.*/ } __packed; /* Payload of the #ADM_CMD_MATRIX_MUTE_V7 command*/ struct adm_cmd_matrix_mute_v7 { struct apr_hdr hdr; u32 matrix_id; /* Specifies whether the matrix ID is Audio Rx (0) or Audio Tx (1). * Use the ADM_MATRIX_ID_AUDIO_RX or ADM_MATRIX_ID_AUDIOX * macros to set this field. */ u16 session_id; /* Handle of the ASM session. * Supported values: 1 to . */ u16 copp_id; /* Handle of the COPP. * Use ADM_CMD_MATRIX_MUTE_COPP_ID_ALL_CONNECTED_COPPS * to indicate that mute/unmute must be applied to * all the COPPs connected to session_id. * Supported values: * - 0xFFFF -- Apply mute/unmute to all connected COPPs * - Other values -- Valid COPP ID */ u16 ramp_duration; /* Duration (in milliseconds) of the ramp over * which target gains are * to be applied. Use * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE * to indicate that gain must be applied immediately. */ u16 stream_type; /* Specify whether the stream type is connectedon the ASM or LSM * Supported value: 1 */ u16 num_channels; /* Number of channels on which gain needs to be applied * Supported value: 1 to 32 */ } __packed; #define ASM_PARAM_ID_AAC_STEREO_MIX_COEFF_SELECTION_FLAG_V2 (0x00010DD8) struct asm_aac_stereo_mix_coeff_selection_param_v2 { Loading Loading @@ -1238,10 +1491,16 @@ struct adm_cmd_connect_afe_port_v5 { #define AFE_PORT_ID_QUINARY_PCM_RX 0x103C #define AFE_PORT_ID_QUINARY_PCM_TX 0x103D /* ID of the senary auxiliary PCM Rx port. */ #define AFE_PORT_ID_SENARY_PCM_RX 0x103E /* ID of the senary auxiliary PCM Tx port. */ #define AFE_PORT_ID_SENARY_PCM_TX 0x103F #define AFE_PORT_ID_PRIMARY_SPDIF_RX 0x5000 #define AFE_PORT_ID_PRIMARY_SPDIF_TX 0x5001 #define AFE_PORT_ID_SECONDARY_SPDIF_RX 0x5002 #define AFE_PORT_ID_SECONDARY_SPDIF_TX 0x5003 #define AFE_PORT_ID_SPDIF_RX AFE_PORT_ID_PRIMARY_SPDIF_RX #define AFE_PORT_ID_RT_PROXY_PORT_001_RX 0x2000 #define AFE_PORT_ID_RT_PROXY_PORT_001_TX 0x2001 Loading Loading @@ -2248,6 +2507,17 @@ struct afe_port_data_cmd_rt_proxy_port_read_v2 { #define AFE_PORT_I2S_QUAD23 0x6 #define AFE_PORT_I2S_6CHS 0x7 #define AFE_PORT_I2S_8CHS 0x8 #define AFE_PORT_I2S_10CHS 0x9 #define AFE_PORT_I2S_12CHS 0xA #define AFE_PORT_I2S_14CHS 0xB #define AFE_PORT_I2S_16CHS 0xC #define AFE_PORT_I2S_SD4 0xD #define AFE_PORT_I2S_SD5 0xE #define AFE_PORT_I2S_SD6 0xF #define AFE_PORT_I2S_SD7 0x10 #define AFE_PORT_I2S_QUAD45 0x11 #define AFE_PORT_I2S_QUAD67 0x12 #define AFE_PORT_I2S_8CHS_2 0x13 #define AFE_PORT_I2S_MONO 0x0 #define AFE_PORT_I2S_STEREO 0x1 #define AFE_PORT_CONFIG_I2S_WS_SRC_EXTERNAL 0x0 Loading Loading @@ -2280,6 +2550,17 @@ struct afe_param_id_i2s_cfg { * - #AFE_PORT_I2S_QUAD23 * - #AFE_PORT_I2S_6CHS * - #AFE_PORT_I2S_8CHS * - #AFE_PORT_I2S_10CHS * - #AFE_PORT_I2S_12CHS * - #AFE_PORT_I2S_14CHS * - #AFE_PORT_I2S_16CHS * - #AFE_PORT_I2S_SD4 * - #AFE_PORT_I2S_SD5 * - #AFE_PORT_I2S_SD6 * - #AFE_PORT_I2S_SD7 * - #AFE_PORT_I2S_QUAD45 * - #AFE_PORT_I2S_QUAD67 * - #AFE_PORT_I2S_8CHS_2 */ u16 mono_stereo; Loading Loading @@ -4949,15 +5230,80 @@ struct asm_softvolume_params { /* Rear right of center. */ #define PCM_CHANNEL_RRC 16 /* Second low frequency channel. */ #define PCM_CHANNEL_LFE2 17 /* Side left channel. */ #define PCM_CHANNEL_SL 18 /* Side right channel. */ #define PCM_CHANNEL_SR 19 /* Top front left channel. */ #define PCM_CHANNEL_TFL 20 /* Left vertical height channel. */ #define PCM_CHANNEL_LVH 20 /* Top front right channel. */ #define PCM_CHANNEL_TFR 21 /* Right vertical height channel. */ #define PCM_CHANNEL_RVH 21 /* Top center channel. */ #define PCM_CHANNEL_TC 22 /* Top back left channel. */ #define PCM_CHANNEL_TBL 23 /* Top back right channel. */ #define PCM_CHANNEL_TBR 24 /* Top side left channel. */ #define PCM_CHANNEL_TSL 25 /* Top side right channel. */ #define PCM_CHANNEL_TSR 26 /* Top back center channel. */ #define PCM_CHANNEL_TBC 27 /* Bottom front center channel. */ #define PCM_CHANNEL_BFC 28 /* Bottom front left channel. */ #define PCM_CHANNEL_BFL 29 /* Bottom front right channel. */ #define PCM_CHANNEL_BFR 30 /* Left wide channel. */ #define PCM_CHANNEL_LW 31 /* Right wide channel. */ #define PCM_CHANNEL_RW 32 /* Left side direct channel. */ #define PCM_CHANNEL_LSD 33 /* Right side direct channel. */ #define PCM_CHANNEL_RSD 34 #define PCM_FORMAT_MAX_NUM_CHANNEL 8 #define PCM_FORMAT_MAX_CHANNELS_9 9 /* Used for ADM_CMD_DEVICE_OPEN_V8 */ #define PCM_FORMAT_MAX_NUM_CHANNEL_V8 32 #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V2 0x00010DA5 #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 0x00010DDC #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V4 0x0001320C #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V5 0x00013222 #define ASM_MEDIA_FMT_EVRCB_FS 0x00010BEF #define ASM_MEDIA_FMT_EVRCWB_FS 0x00010BF0 Loading Loading @@ -5172,6 +5518,56 @@ struct asm_multi_channel_pcm_fmt_blk_v4 { */ } __packed; struct asm_multi_channel_pcm_fmt_blk_v5 { uint16_t num_channels; /* * Number of channels * Supported values: 1 to 32 */ uint16_t bits_per_sample; /* * Number of bits per sample per channel * Supported values: 16, 24, 32 */ uint32_t sample_rate; /* * Number of samples per second * Supported values: 2000 to 48000, 96000,192000 Hz */ uint16_t is_signed; /* Flag that indicates that PCM samples are signed (1) */ uint16_t sample_word_size; /* * Size in bits of the word that holds a sample of a channel. * Supported values: 12,24,32 */ uint16_t endianness; /* * Flag to indicate the endianness of the pcm sample * Supported values: 0 - Little endian (all other formats) * 1 - Big endian (AIFF) */ uint16_t mode; /* * Mode to provide additional info about the pcm input data. * Supported values: 0 - Default QFs (Q15 for 16b, Q23 for packed 24b, * Q31 for unpacked 24b or 32b) * 15 - for 16 bit * 23 - for 24b packed or 8.24 format * 31 - for 24b unpacked or 32bit */ uint8_t channel_mapping[32]; /* * Each element, i, in the array describes channel i inside the buffer where * 0 <= i < num_channels. Unused channels are set to 0. */ } __packed; /* * Payload of the multichannel PCM configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 media format. Loading @@ -5192,6 +5588,16 @@ struct asm_multi_channel_pcm_fmt_blk_param_v4 { struct asm_multi_channel_pcm_fmt_blk_v4 param; } __packed; /* * Payload of the multichannel PCM configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V5 media format. */ struct asm_multi_channel_pcm_fmt_blk_param_v5 { struct apr_hdr hdr; struct asm_data_cmd_media_fmt_update_v2 fmt_blk; struct asm_multi_channel_pcm_fmt_blk_v5 param; } __packed; struct asm_stream_cmd_set_encdec_param { u32 param_id; /* ID of the parameter. */ Loading Loading @@ -5243,6 +5649,78 @@ 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_V5 media format. */ struct asm_multi_channel_pcm_enc_cfg_v5 { 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 */ uint16_t endianness; /* * Flag to indicate the endianness of the pcm sample * Supported values: 0 - Little endian (all other formats) * 1 - Big endian (AIFF) */ uint16_t mode; /* * Mode to provide additional info about the pcm input data. * Supported values: 0 - Default QFs (Q15 for 16b, Q23 for packed 24b, * Q31 for unpacked 24b or 32b) * 15 - for 16 bit * 23 - for 24b packed or 8.24 format */ uint8_t channel_mapping[PCM_FORMAT_MAX_NUM_CHANNEL_V8]; /* * 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} */ } __packed; /* * Payload of the multichannel PCM encoder configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V4 media format. Loading Loading @@ -10188,6 +10666,8 @@ struct avcs_fwk_ver_info { /* LSM Specific */ #define VW_FEAT_DIM (39) #define APRV2_IDS_SERVICE_ID_ADSP_ASM_V (0x7) #define APRV2_IDS_SERVICE_ID_ADSP_ADM_V (0x8) #define APRV2_IDS_SERVICE_ID_ADSP_LSM_V (0xD) #define APRV2_IDS_DOMAIN_ID_ADSP_V (0x4) #define APRV2_IDS_DOMAIN_ID_APPS_V (0x5) Loading Loading @@ -10505,6 +10985,10 @@ enum afe_lpass_clk_mode { #define Q6AFE_LPASS_CLK_ID_QUIN_PCM_EBIT 0x209 /* Clock ID for QUINARY PCM OSR */ #define Q6AFE_LPASS_CLK_ID_QUI_PCM_OSR 0x20A /* Clock ID for Senary PCM IBIT */ #define Q6AFE_LPASS_CLK_ID_SEN_PCM_IBIT 0x20B /* Clock ID for Senary PCM EBIT */ #define Q6AFE_LPASS_CLK_ID_SEN_PCM_EBIT 0x20C /** Clock ID for Primary TDM IBIT */ #define Q6AFE_LPASS_CLK_ID_PRI_TDM_IBIT 0x200 Loading Loading @@ -10549,6 +11033,9 @@ enum afe_lpass_clk_mode { */ #define AFE_CLOCK_SET_CLOCK_ID_SWR_NPL_CLK 0x307 /* Clock ID for MCLK5 */ #define Q6AFE_LPASS_CLK_ID_MCLK_5 0x308 /* Clock ID for AHB HDMI input */ #define Q6AFE_LPASS_CLK_ID_AHB_HDMI_INPUT 0x400 Loading include/dsp/q6afe-v2.h +8 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,10 @@ #define MSM_AFE_4CHANNELS 4 #define MSM_AFE_6CHANNELS 6 #define MSM_AFE_8CHANNELS 8 #define MSM_AFE_10CHANNELS 10 #define MSM_AFE_12CHANNELS 12 #define MSM_AFE_14CHANNELS 14 #define MSM_AFE_16CHANNELS 16 #define MSM_AFE_I2S_FORMAT_LPCM 0 #define MSM_AFE_I2S_FORMAT_COMPR 1 Loading Loading @@ -255,9 +259,12 @@ enum { IDX_SECONDARY_SPDIF_RX, IDX_PRIMARY_SPDIF_TX, IDX_SECONDARY_SPDIF_TX, /* IDX 185 to 187 */ /* IDX 185 to 186 */ IDX_SLIMBUS_9_RX, IDX_SLIMBUS_9_TX, /* IDX 187 -> 189 */ IDX_AFE_PORT_ID_SENARY_PCM_RX, IDX_AFE_PORT_ID_SENARY_PCM_TX, AFE_MAX_PORTS }; Loading Loading
dsp/q6afe.c +10 −0 Original line number Diff line number Diff line Loading @@ -890,6 +890,8 @@ int afe_sizeof_cfg_cmd(u16 port_id) case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: default: pr_debug("%s: default case 0x%x\n", __func__, port_id); ret_size = SIZEOF_CFG_CMD(afe_param_id_pcm_cfg); Loading Loading @@ -3979,6 +3981,8 @@ static int __afe_port_start(u16 port_id, union afe_port_config *afe_config, case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: cfg_type = AFE_PARAM_ID_PCM_CONFIG; break; case PRIMARY_I2S_RX: Loading Loading @@ -4250,6 +4254,10 @@ int afe_get_port_index(u16 port_id) return IDX_AFE_PORT_ID_QUINARY_PCM_RX; case AFE_PORT_ID_QUINARY_PCM_TX: return IDX_AFE_PORT_ID_QUINARY_PCM_TX; case AFE_PORT_ID_SENARY_PCM_RX: return IDX_AFE_PORT_ID_SENARY_PCM_RX; case AFE_PORT_ID_SENARY_PCM_TX: return IDX_AFE_PORT_ID_SENARY_PCM_TX; case SECONDARY_I2S_RX: return IDX_SECONDARY_I2S_RX; case SECONDARY_I2S_TX: return IDX_SECONDARY_I2S_TX; case MI2S_RX: return IDX_MI2S_RX; Loading Loading @@ -4649,6 +4657,8 @@ int afe_open(u16 port_id, case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: cfg_type = AFE_PARAM_ID_PCM_CONFIG; break; case SECONDARY_I2S_RX: Loading
dsp/q6audio-v2.c +12 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,10 @@ int q6audio_get_port_index(u16 port_id) return IDX_AFE_PORT_ID_QUINARY_PCM_RX; case AFE_PORT_ID_QUINARY_PCM_TX: return IDX_AFE_PORT_ID_QUINARY_PCM_TX; case AFE_PORT_ID_SENARY_PCM_RX: return IDX_AFE_PORT_ID_SENARY_PCM_RX; case AFE_PORT_ID_SENARY_PCM_TX: return IDX_AFE_PORT_ID_SENARY_PCM_TX; case SECONDARY_I2S_RX: return IDX_SECONDARY_I2S_RX; case SECONDARY_I2S_TX: return IDX_SECONDARY_I2S_TX; case MI2S_RX: return IDX_MI2S_RX; Loading Loading @@ -377,6 +381,10 @@ int q6audio_get_port_id(u16 port_id) return AFE_PORT_ID_QUINARY_PCM_RX; case AFE_PORT_ID_QUINARY_PCM_TX: return AFE_PORT_ID_QUINARY_PCM_TX; case AFE_PORT_ID_SENARY_PCM_RX: return AFE_PORT_ID_SENARY_PCM_RX; case AFE_PORT_ID_SENARY_PCM_TX: return AFE_PORT_ID_SENARY_PCM_TX; case SECONDARY_I2S_RX: return AFE_PORT_ID_SECONDARY_MI2S_RX; case SECONDARY_I2S_TX: return AFE_PORT_ID_SECONDARY_MI2S_TX; case MI2S_RX: return AFE_PORT_ID_PRIMARY_MI2S_RX; Loading Loading @@ -729,6 +737,8 @@ int q6audio_is_digital_pcm_interface(u16 port_id) case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: case SECONDARY_I2S_RX: case SECONDARY_I2S_TX: case MI2S_RX: Loading Loading @@ -898,6 +908,8 @@ int q6audio_validate_port(u16 port_id) case AFE_PORT_ID_QUATERNARY_PCM_TX: case AFE_PORT_ID_QUINARY_PCM_RX: case AFE_PORT_ID_QUINARY_PCM_TX: case AFE_PORT_ID_SENARY_PCM_RX: case AFE_PORT_ID_SENARY_PCM_TX: case SECONDARY_I2S_RX: case SECONDARY_I2S_TX: case MI2S_RX: Loading
include/dsp/apr_audio-v2.h +493 −6 Original line number Diff line number Diff line Loading @@ -212,6 +212,17 @@ struct adm_cmd_matrix_map_routings_v5 { */ #define ADM_CMD_DEVICE_OPEN_V6 0x00010356 /* This command allows a client to open a COPP/Voice Proc the * way as ADM_CMD_DEVICE_OPEN_V8 but supports any number channel * of configuration. * * @return * #ADM_CMDRSP_DEVICE_OPEN_V8 with the resulting status and * COPP ID. */ #define ADM_CMD_DEVICE_OPEN_V8 0x0001036A /* Definition for a low latency stream session. */ #define ADM_LOW_LATENCY_DEVICE_SESSION 0x2000 Loading Loading @@ -490,6 +501,110 @@ struct adm_cmd_device_open_v6 { */ } __packed; /* ADM device open endpoint payload the * #ADM_CMD_DEVICE_OPEN_V8 command. */ struct adm_device_endpoint_payload { u16 dev_num_channel; /* Number of channels the audio COPP sends to/receives from * the endpoint. * Supported values: 1 to 32. * The value is ignored for the voice processor Tx block, * where channel * configuration is derived from the topology ID. */ u16 bit_width; /* Bit width (in bits) that the audio COPP sends to/receives * from the * endpoint. The value is ignored for the voice processing * Tx block, * where the PCM width is 16 bits. */ u32 sample_rate; /* Sampling rate at which the audio COPP/voice processor * Tx block * interfaces with the endpoint. * Supported values for voice processor Tx: 8000, 16000, * 48000 Hz * Supported values for audio COPP: >0 and <=192 kHz */ u8 dev_channel_mapping[32]; } __packed; /* ADM device open command payload of the * #ADM_CMD_DEVICE_OPEN_V8 command. */ struct adm_cmd_device_open_v8 { struct apr_hdr hdr; u16 flags; /* Bit width Native mode enabled : 11th bit of flag parameter * If 11th bit of flag is set then that means matrix mixer will be * running in native mode for bit width for this device session. * * Channel Native mode enabled : 12th bit of flag parameter * If 12th bit of flag is set then that means matrix mixer will be * running in native mode for channel configuration for this device session. * All other bits are reserved; clients must set them to 0. */ u16 mode_of_operation; /* Specifies whether the COPP must be opened on the Tx or Rx * path. Use the ADM_CMD_COPP_OPEN_MODE_OF_OPERATION_* macros for * supported values and interpretation. * Supported values: * - 0x1 -- Rx path COPP * - 0x2 -- Tx path live COPP * - 0x3 -- Tx path nonlive COPP * Live connections cause sample discarding in the Tx device * matrix if the destination output ports do not pull them * fast enough. Nonlive connections queue the samples * indefinitely. */ u32 topology_id; /* Audio COPP topology ID; 32-bit GUID. */ u16 endpoint_id_1; /* Logical and physical endpoint ID of the audio path. * If the ID is a voice processor Tx block, it receives near * samples. * Supported values: Any pseudoport, AFE Rx port, * or AFE Tx port For a list of valid IDs, refer to * @xhyperref{Q4,[Q4]}. * Q4 = Hexagon Multimedia: AFE Interface Specification */ u16 endpoint_id_2; /* Logical and physical endpoint ID 2 for a voice processor * Tx block. * This is not applicable to audio COPP. * Supported values: * - AFE Rx port * - 0xFFFF -- Endpoint 2 is unavailable and the voice * processor Tx * block ignores this endpoint * When the voice processor Tx block is created on the audio * record path, * it can receive far-end samples from an AFE Rx port if the * voice call * is active. The ID of the AFE port is provided in this * field. * For a list of valid IDs, refer @xhyperref{Q4,[Q4]}. */ u16 endpoint_id_3; /* * Logical and physical endpoint ID of the audio path. * This indicated afe rx port in ADM loopback use cases. * In all other use cases this should be set to 0xffff */ u16 reserved; } __packed; /* * This command allows the client to close a COPP and disconnect * the device session. Loading Loading @@ -620,6 +735,9 @@ struct adm_cmd_rsp_device_open_v5 { /* Returns the status and COPP ID to an #ADM_CMD_DEVICE_OPEN_V6 command. */ #define ADM_CMDRSP_DEVICE_OPEN_V6 0x00010357 /* Returns the status and COPP ID to an #ADM_CMD_DEVICE_OPEN_V8 command. */ #define ADM_CMDRSP_DEVICE_OPEN_V8 0x0001036B /* Payload of the #ADM_CMDRSP_DEVICE_OPEN_V6 message, * which returns the * status and COPP ID to an #ADM_CMD_DEVICE_OPEN_V6 command Loading Loading @@ -804,6 +922,12 @@ struct audproc_enable_param_t { */ #define ADM_CMD_MATRIX_RAMP_GAINS_V5 0x0001032C /* * Allows a client to control the gains on various session-to-COPP paths. * Maximum support 32 channels */ #define ADM_CMD_MATRIX_RAMP_GAINS_V7 0x0001036C /* Indicates that the target gain in the * current adm_session_copp_gain_v5 * structure is to be applied to all Loading Loading @@ -916,12 +1040,97 @@ struct adm_session_copp_gain_v5 { /* Target linear gain for channel 8 in Q13 format; */ } __packed; /* Payload of the #ADM_CMD_MATRIX_RAMP_GAINS_V7 command. * Immediately following this structure are num_gains of the * adm_session_copp_gain_v5structure. */ struct adm_cmd_matrix_ramp_gains_v7 { struct apr_hdr hdr; u32 matrix_id; /* Specifies whether the matrix ID is Audio Rx (0) or Audio Tx (1). * Use the ADM_MATRIX_ID_AUDIO_RX or ADM_MATRIX_ID_AUDIOX * macros to set this field. */ u16 num_gains; /* Number of gains being applied. */ u16 reserved_for_align; /* Reserved. This field must be set to zero.*/ } __packed; /* Session-to-COPP path gain structure, used by the * #ADM_CMD_MATRIX_RAMP_GAINS_V7 command. * This structure specifies the target * gain (per channel) that must be applied * to a particular session-to-COPP path in * the audio matrix. The structure can * also be used to apply the gain globally * to all session-to-COPP paths that * exist for the given session. * The aDSP uses device channel mapping to * determine which channel gains to * use from this command. For example, * if the device is configured as stereo, * the aDSP uses only target_gain_ch_1 and * target_gain_ch_2, and it ignores * the others. */ struct adm_session_copp_gain_v7 { u16 session_id; /* Handle of the ASM session. * Supported values: 1 to 8. */ u16 copp_id; /* Handle of the COPP. Gain will be applied on the Session ID * COPP ID path. */ u16 ramp_duration; /* Duration (in milliseconds) of the ramp over * which target gains are * to be applied. Use * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE * to indicate that gain must be applied immediately. */ u16 step_duration; /* Duration (in milliseconds) of each step in the ramp. * This parameter is ignored if ramp_duration is equal to * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE. * Supported value: 1 */ u16 ramp_curve; /* Type of ramping curve. * Supported value: #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_CURVE_LINEAR */ u16 stream_type; /* Type of stream_type. * Supported value: #STREAM_TYPE_ASM STREAM_TYPE_LSM */ u16 num_channels; /* Number of channels on which gain needs to be applied. * Supported value: 1 to 32. */ u16 reserved_for_align; /* Reserved. This field must be set to zero. */ } __packed; /* Allows to set mute/unmute on various session-to-COPP paths. * For every session-to-COPP path (stream-device interconnection), * mute/unmute can be set individually on the output channels. */ #define ADM_CMD_MATRIX_MUTE_V5 0x0001032D /* Allows to set mute/unmute on various session-to-COPP paths. * For every session-to-COPP path (stream-device interconnection), * mute/unmute can be set individually on the output channels. */ #define ADM_CMD_MATRIX_MUTE_V7 0x0001036D /* Indicates that mute/unmute in the * current adm_session_copp_mute_v5structure * is to be applied to all the session-to-COPP Loading Loading @@ -987,6 +1196,50 @@ struct adm_cmd_matrix_mute_v5 { /* Clients must set this field to zero.*/ } __packed; /* Payload of the #ADM_CMD_MATRIX_MUTE_V7 command*/ struct adm_cmd_matrix_mute_v7 { struct apr_hdr hdr; u32 matrix_id; /* Specifies whether the matrix ID is Audio Rx (0) or Audio Tx (1). * Use the ADM_MATRIX_ID_AUDIO_RX or ADM_MATRIX_ID_AUDIOX * macros to set this field. */ u16 session_id; /* Handle of the ASM session. * Supported values: 1 to . */ u16 copp_id; /* Handle of the COPP. * Use ADM_CMD_MATRIX_MUTE_COPP_ID_ALL_CONNECTED_COPPS * to indicate that mute/unmute must be applied to * all the COPPs connected to session_id. * Supported values: * - 0xFFFF -- Apply mute/unmute to all connected COPPs * - Other values -- Valid COPP ID */ u16 ramp_duration; /* Duration (in milliseconds) of the ramp over * which target gains are * to be applied. Use * #ADM_CMD_MATRIX_RAMP_GAINS_RAMP_DURATION_IMMEDIATE * to indicate that gain must be applied immediately. */ u16 stream_type; /* Specify whether the stream type is connectedon the ASM or LSM * Supported value: 1 */ u16 num_channels; /* Number of channels on which gain needs to be applied * Supported value: 1 to 32 */ } __packed; #define ASM_PARAM_ID_AAC_STEREO_MIX_COEFF_SELECTION_FLAG_V2 (0x00010DD8) struct asm_aac_stereo_mix_coeff_selection_param_v2 { Loading Loading @@ -1238,10 +1491,16 @@ struct adm_cmd_connect_afe_port_v5 { #define AFE_PORT_ID_QUINARY_PCM_RX 0x103C #define AFE_PORT_ID_QUINARY_PCM_TX 0x103D /* ID of the senary auxiliary PCM Rx port. */ #define AFE_PORT_ID_SENARY_PCM_RX 0x103E /* ID of the senary auxiliary PCM Tx port. */ #define AFE_PORT_ID_SENARY_PCM_TX 0x103F #define AFE_PORT_ID_PRIMARY_SPDIF_RX 0x5000 #define AFE_PORT_ID_PRIMARY_SPDIF_TX 0x5001 #define AFE_PORT_ID_SECONDARY_SPDIF_RX 0x5002 #define AFE_PORT_ID_SECONDARY_SPDIF_TX 0x5003 #define AFE_PORT_ID_SPDIF_RX AFE_PORT_ID_PRIMARY_SPDIF_RX #define AFE_PORT_ID_RT_PROXY_PORT_001_RX 0x2000 #define AFE_PORT_ID_RT_PROXY_PORT_001_TX 0x2001 Loading Loading @@ -2248,6 +2507,17 @@ struct afe_port_data_cmd_rt_proxy_port_read_v2 { #define AFE_PORT_I2S_QUAD23 0x6 #define AFE_PORT_I2S_6CHS 0x7 #define AFE_PORT_I2S_8CHS 0x8 #define AFE_PORT_I2S_10CHS 0x9 #define AFE_PORT_I2S_12CHS 0xA #define AFE_PORT_I2S_14CHS 0xB #define AFE_PORT_I2S_16CHS 0xC #define AFE_PORT_I2S_SD4 0xD #define AFE_PORT_I2S_SD5 0xE #define AFE_PORT_I2S_SD6 0xF #define AFE_PORT_I2S_SD7 0x10 #define AFE_PORT_I2S_QUAD45 0x11 #define AFE_PORT_I2S_QUAD67 0x12 #define AFE_PORT_I2S_8CHS_2 0x13 #define AFE_PORT_I2S_MONO 0x0 #define AFE_PORT_I2S_STEREO 0x1 #define AFE_PORT_CONFIG_I2S_WS_SRC_EXTERNAL 0x0 Loading Loading @@ -2280,6 +2550,17 @@ struct afe_param_id_i2s_cfg { * - #AFE_PORT_I2S_QUAD23 * - #AFE_PORT_I2S_6CHS * - #AFE_PORT_I2S_8CHS * - #AFE_PORT_I2S_10CHS * - #AFE_PORT_I2S_12CHS * - #AFE_PORT_I2S_14CHS * - #AFE_PORT_I2S_16CHS * - #AFE_PORT_I2S_SD4 * - #AFE_PORT_I2S_SD5 * - #AFE_PORT_I2S_SD6 * - #AFE_PORT_I2S_SD7 * - #AFE_PORT_I2S_QUAD45 * - #AFE_PORT_I2S_QUAD67 * - #AFE_PORT_I2S_8CHS_2 */ u16 mono_stereo; Loading Loading @@ -4949,15 +5230,80 @@ struct asm_softvolume_params { /* Rear right of center. */ #define PCM_CHANNEL_RRC 16 /* Second low frequency channel. */ #define PCM_CHANNEL_LFE2 17 /* Side left channel. */ #define PCM_CHANNEL_SL 18 /* Side right channel. */ #define PCM_CHANNEL_SR 19 /* Top front left channel. */ #define PCM_CHANNEL_TFL 20 /* Left vertical height channel. */ #define PCM_CHANNEL_LVH 20 /* Top front right channel. */ #define PCM_CHANNEL_TFR 21 /* Right vertical height channel. */ #define PCM_CHANNEL_RVH 21 /* Top center channel. */ #define PCM_CHANNEL_TC 22 /* Top back left channel. */ #define PCM_CHANNEL_TBL 23 /* Top back right channel. */ #define PCM_CHANNEL_TBR 24 /* Top side left channel. */ #define PCM_CHANNEL_TSL 25 /* Top side right channel. */ #define PCM_CHANNEL_TSR 26 /* Top back center channel. */ #define PCM_CHANNEL_TBC 27 /* Bottom front center channel. */ #define PCM_CHANNEL_BFC 28 /* Bottom front left channel. */ #define PCM_CHANNEL_BFL 29 /* Bottom front right channel. */ #define PCM_CHANNEL_BFR 30 /* Left wide channel. */ #define PCM_CHANNEL_LW 31 /* Right wide channel. */ #define PCM_CHANNEL_RW 32 /* Left side direct channel. */ #define PCM_CHANNEL_LSD 33 /* Right side direct channel. */ #define PCM_CHANNEL_RSD 34 #define PCM_FORMAT_MAX_NUM_CHANNEL 8 #define PCM_FORMAT_MAX_CHANNELS_9 9 /* Used for ADM_CMD_DEVICE_OPEN_V8 */ #define PCM_FORMAT_MAX_NUM_CHANNEL_V8 32 #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V2 0x00010DA5 #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 0x00010DDC #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V4 0x0001320C #define ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V5 0x00013222 #define ASM_MEDIA_FMT_EVRCB_FS 0x00010BEF #define ASM_MEDIA_FMT_EVRCWB_FS 0x00010BF0 Loading Loading @@ -5172,6 +5518,56 @@ struct asm_multi_channel_pcm_fmt_blk_v4 { */ } __packed; struct asm_multi_channel_pcm_fmt_blk_v5 { uint16_t num_channels; /* * Number of channels * Supported values: 1 to 32 */ uint16_t bits_per_sample; /* * Number of bits per sample per channel * Supported values: 16, 24, 32 */ uint32_t sample_rate; /* * Number of samples per second * Supported values: 2000 to 48000, 96000,192000 Hz */ uint16_t is_signed; /* Flag that indicates that PCM samples are signed (1) */ uint16_t sample_word_size; /* * Size in bits of the word that holds a sample of a channel. * Supported values: 12,24,32 */ uint16_t endianness; /* * Flag to indicate the endianness of the pcm sample * Supported values: 0 - Little endian (all other formats) * 1 - Big endian (AIFF) */ uint16_t mode; /* * Mode to provide additional info about the pcm input data. * Supported values: 0 - Default QFs (Q15 for 16b, Q23 for packed 24b, * Q31 for unpacked 24b or 32b) * 15 - for 16 bit * 23 - for 24b packed or 8.24 format * 31 - for 24b unpacked or 32bit */ uint8_t channel_mapping[32]; /* * Each element, i, in the array describes channel i inside the buffer where * 0 <= i < num_channels. Unused channels are set to 0. */ } __packed; /* * Payload of the multichannel PCM configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V3 media format. Loading @@ -5192,6 +5588,16 @@ struct asm_multi_channel_pcm_fmt_blk_param_v4 { struct asm_multi_channel_pcm_fmt_blk_v4 param; } __packed; /* * Payload of the multichannel PCM configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V5 media format. */ struct asm_multi_channel_pcm_fmt_blk_param_v5 { struct apr_hdr hdr; struct asm_data_cmd_media_fmt_update_v2 fmt_blk; struct asm_multi_channel_pcm_fmt_blk_v5 param; } __packed; struct asm_stream_cmd_set_encdec_param { u32 param_id; /* ID of the parameter. */ Loading Loading @@ -5243,6 +5649,78 @@ 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_V5 media format. */ struct asm_multi_channel_pcm_enc_cfg_v5 { 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 */ uint16_t endianness; /* * Flag to indicate the endianness of the pcm sample * Supported values: 0 - Little endian (all other formats) * 1 - Big endian (AIFF) */ uint16_t mode; /* * Mode to provide additional info about the pcm input data. * Supported values: 0 - Default QFs (Q15 for 16b, Q23 for packed 24b, * Q31 for unpacked 24b or 32b) * 15 - for 16 bit * 23 - for 24b packed or 8.24 format */ uint8_t channel_mapping[PCM_FORMAT_MAX_NUM_CHANNEL_V8]; /* * 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} */ } __packed; /* * Payload of the multichannel PCM encoder configuration parameters in * the ASM_MEDIA_FMT_MULTI_CHANNEL_PCM_V4 media format. Loading Loading @@ -10188,6 +10666,8 @@ struct avcs_fwk_ver_info { /* LSM Specific */ #define VW_FEAT_DIM (39) #define APRV2_IDS_SERVICE_ID_ADSP_ASM_V (0x7) #define APRV2_IDS_SERVICE_ID_ADSP_ADM_V (0x8) #define APRV2_IDS_SERVICE_ID_ADSP_LSM_V (0xD) #define APRV2_IDS_DOMAIN_ID_ADSP_V (0x4) #define APRV2_IDS_DOMAIN_ID_APPS_V (0x5) Loading Loading @@ -10505,6 +10985,10 @@ enum afe_lpass_clk_mode { #define Q6AFE_LPASS_CLK_ID_QUIN_PCM_EBIT 0x209 /* Clock ID for QUINARY PCM OSR */ #define Q6AFE_LPASS_CLK_ID_QUI_PCM_OSR 0x20A /* Clock ID for Senary PCM IBIT */ #define Q6AFE_LPASS_CLK_ID_SEN_PCM_IBIT 0x20B /* Clock ID for Senary PCM EBIT */ #define Q6AFE_LPASS_CLK_ID_SEN_PCM_EBIT 0x20C /** Clock ID for Primary TDM IBIT */ #define Q6AFE_LPASS_CLK_ID_PRI_TDM_IBIT 0x200 Loading Loading @@ -10549,6 +11033,9 @@ enum afe_lpass_clk_mode { */ #define AFE_CLOCK_SET_CLOCK_ID_SWR_NPL_CLK 0x307 /* Clock ID for MCLK5 */ #define Q6AFE_LPASS_CLK_ID_MCLK_5 0x308 /* Clock ID for AHB HDMI input */ #define Q6AFE_LPASS_CLK_ID_AHB_HDMI_INPUT 0x400 Loading
include/dsp/q6afe-v2.h +8 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,10 @@ #define MSM_AFE_4CHANNELS 4 #define MSM_AFE_6CHANNELS 6 #define MSM_AFE_8CHANNELS 8 #define MSM_AFE_10CHANNELS 10 #define MSM_AFE_12CHANNELS 12 #define MSM_AFE_14CHANNELS 14 #define MSM_AFE_16CHANNELS 16 #define MSM_AFE_I2S_FORMAT_LPCM 0 #define MSM_AFE_I2S_FORMAT_COMPR 1 Loading Loading @@ -255,9 +259,12 @@ enum { IDX_SECONDARY_SPDIF_RX, IDX_PRIMARY_SPDIF_TX, IDX_SECONDARY_SPDIF_TX, /* IDX 185 to 187 */ /* IDX 185 to 186 */ IDX_SLIMBUS_9_RX, IDX_SLIMBUS_9_TX, /* IDX 187 -> 189 */ IDX_AFE_PORT_ID_SENARY_PCM_RX, IDX_AFE_PORT_ID_SENARY_PCM_TX, AFE_MAX_PORTS }; Loading