Loading dsp/q6asm.c +20 −0 Original line number Diff line number Diff line Loading @@ -10820,6 +10820,26 @@ int q6asm_get_apr_service_id(int session_id) return ((struct apr_svc *)(session[session_id].ac)->apr)->id; } uint8_t q6asm_get_asm_stream_id(int session_id) { uint8_t stream_id = 1; pr_debug("%s:\n", __func__); if (session_id <= 0 || session_id > ASM_ACTIVE_STREAMS_ALLOWED) { pr_err("%s: invalid session_id = %d\n", __func__, session_id); goto done; } if (session[session_id].ac == NULL) { pr_err("%s: session not created for session id = %d\n", __func__, session_id); goto done; } stream_id = (session[session_id].ac)->stream_id; done: return stream_id; } int q6asm_get_asm_topology(int session_id) { int topology = -EINVAL; Loading dsp/rtac.c +10 −2 Original line number Diff line number Diff line Loading @@ -985,6 +985,7 @@ int send_rtac_asm_apr(void *buf, u32 opcode) u32 user_buf_size = 0; u32 bytes_returned = 0; u32 session_id = 0; u8 stream_id = 0; u32 payload_size; u32 data_size = 0; struct apr_hdr asm_params; Loading Loading @@ -1044,6 +1045,13 @@ int send_rtac_asm_apr(void *buf, u32 opcode) goto err; } stream_id = q6asm_get_asm_stream_id(session_id); if ((stream_id != 1) && (stream_id != 2)) { pr_err("%s: Invalid stream id %u\n", __func__, stream_id); result = -EINVAL; goto err; } switch (opcode) { case ASM_STREAM_CMD_SET_PP_PARAMS_V2: case ASM_STREAM_CMD_SET_PP_PARAMS_V3: Loading Loading @@ -1103,10 +1111,10 @@ int send_rtac_asm_apr(void *buf, u32 opcode) payload_size); asm_params.src_svc = q6asm_get_apr_service_id(session_id); asm_params.src_domain = APR_DOMAIN_APPS; asm_params.src_port = (session_id << 8) | 0x0001; asm_params.src_port = (session_id << 8) | stream_id; asm_params.dest_svc = APR_SVC_ASM; asm_params.dest_domain = APR_DOMAIN_ADSP; asm_params.dest_port = (session_id << 8) | 0x0001; asm_params.dest_port = (session_id << 8) | stream_id; asm_params.token = session_id; asm_params.opcode = opcode; Loading include/dsp/q6asm-v2.h +1 −0 Original line number Diff line number Diff line Loading @@ -711,6 +711,7 @@ int q6asm_send_meta_data(struct audio_client *ac, uint32_t initial_samples, int q6asm_stream_send_meta_data(struct audio_client *ac, uint32_t stream_id, uint32_t initial_samples, uint32_t trailing_samples); uint8_t q6asm_get_asm_stream_id(int session_id); int q6asm_get_asm_topology(int session_id); int q6asm_get_asm_app_type(int session_id); Loading Loading
dsp/q6asm.c +20 −0 Original line number Diff line number Diff line Loading @@ -10820,6 +10820,26 @@ int q6asm_get_apr_service_id(int session_id) return ((struct apr_svc *)(session[session_id].ac)->apr)->id; } uint8_t q6asm_get_asm_stream_id(int session_id) { uint8_t stream_id = 1; pr_debug("%s:\n", __func__); if (session_id <= 0 || session_id > ASM_ACTIVE_STREAMS_ALLOWED) { pr_err("%s: invalid session_id = %d\n", __func__, session_id); goto done; } if (session[session_id].ac == NULL) { pr_err("%s: session not created for session id = %d\n", __func__, session_id); goto done; } stream_id = (session[session_id].ac)->stream_id; done: return stream_id; } int q6asm_get_asm_topology(int session_id) { int topology = -EINVAL; Loading
dsp/rtac.c +10 −2 Original line number Diff line number Diff line Loading @@ -985,6 +985,7 @@ int send_rtac_asm_apr(void *buf, u32 opcode) u32 user_buf_size = 0; u32 bytes_returned = 0; u32 session_id = 0; u8 stream_id = 0; u32 payload_size; u32 data_size = 0; struct apr_hdr asm_params; Loading Loading @@ -1044,6 +1045,13 @@ int send_rtac_asm_apr(void *buf, u32 opcode) goto err; } stream_id = q6asm_get_asm_stream_id(session_id); if ((stream_id != 1) && (stream_id != 2)) { pr_err("%s: Invalid stream id %u\n", __func__, stream_id); result = -EINVAL; goto err; } switch (opcode) { case ASM_STREAM_CMD_SET_PP_PARAMS_V2: case ASM_STREAM_CMD_SET_PP_PARAMS_V3: Loading Loading @@ -1103,10 +1111,10 @@ int send_rtac_asm_apr(void *buf, u32 opcode) payload_size); asm_params.src_svc = q6asm_get_apr_service_id(session_id); asm_params.src_domain = APR_DOMAIN_APPS; asm_params.src_port = (session_id << 8) | 0x0001; asm_params.src_port = (session_id << 8) | stream_id; asm_params.dest_svc = APR_SVC_ASM; asm_params.dest_domain = APR_DOMAIN_ADSP; asm_params.dest_port = (session_id << 8) | 0x0001; asm_params.dest_port = (session_id << 8) | stream_id; asm_params.token = session_id; asm_params.opcode = opcode; Loading
include/dsp/q6asm-v2.h +1 −0 Original line number Diff line number Diff line Loading @@ -711,6 +711,7 @@ int q6asm_send_meta_data(struct audio_client *ac, uint32_t initial_samples, int q6asm_stream_send_meta_data(struct audio_client *ac, uint32_t stream_id, uint32_t initial_samples, uint32_t trailing_samples); uint8_t q6asm_get_asm_stream_id(int session_id); int q6asm_get_asm_topology(int session_id); int q6asm_get_asm_app_type(int session_id); Loading