123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- // SPDX-License-Identifier: GPL-2.0-only
- /*
- * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
- */
- #ifndef __LINUX_BTFM_CODEC_PKT_H
- #define __LINUX_BTFM_CODEC_PKT_H
- typedef uint32_t btm_opcode;
- struct btm_req {
- btm_opcode opcode;
- uint32_t len;
- uint8_t *data;
- }__attribute__((packed));
- struct btm_rsp {
- btm_opcode opcode;
- uint8_t status;
- }__attribute__((packed));
- struct btm_ind {
- btm_opcode opcode;
- uint32_t len;
- uint8_t *data;
- }__attribute__((packed));
- struct btm_ctrl_pkt {
- btm_opcode opcode;
- uint32_t len;
- uint8_t active_transport;
- uint8_t status;
- }__attribute__((packed));
- #define BTM_BTFMCODEC_PREPARE_AUDIO_BEARER_SWITCH_REQ 0x50000000
- #define BTM_BTFMCODEC_PREPARE_AUDIO_BEARER_SWITCH_RSP 0x50000001
- #define BTM_BTFMCODEC_MASTER_CONFIG_REQ 0x50000002
- #define BTM_BTFMCODEC_MASTER_CONFIG_RSP 0x50000003
- #define BTM_BTFMCODEC_MASTER_SHUTDOWN_REQ 0x50000004
- #define BTM_BTFMCODEC_CTRL_MASTER_SHUTDOWN_RSP 0x50000005
- #define BTM_BTFMCODEC_CODEC_CONFIG_DMA_REQ 0x58000006
- #define BTM_BTFMCODEC_CODEC_CONFIG_DMA_RSP 0x58000007
- #define BTM_BTFMCODEC_BEARER_SWITCH_IND 0x58000001
- #define BTM_BTFMCODEC_TRANSPORT_SWITCH_FAILED_IND 0x58000002
- #define BTM_BTFMCODEC_ADSP_STATE_IND 0x58000003
- #define BTM_BTFMCODEC_CTRL_LOG_LVL_IND 0x58000004
- #define BTM_MASTER_CONFIG_REQ_LEN 13
- #define BTM_MASTER_CONFIG_RSP_TIMEOUT 5000
- #define BTM_MASTER_DMA_CONFIG_RSP_TIMEOUT 5000
- #define BTM_HEADER_LEN 8
- #define BTM_PREPARE_AUDIO_BEARER_SWITCH_RSP_LEN 2
- #define BTM_MASTER_CONFIG_RSP_LEN 2
- #define BTM_CODEC_CONFIG_DMA_RSP_LEN 2
- #define BTM_MASTER_SHUTDOWN_REQ_LEN 1
- #define BTM_PREPARE_AUDIO_BEARER_SWITCH_REQ_LEN 1
- #define BTM_BEARER_SWITCH_IND_LEN 1
- #define BTM_LOG_LVL_IND_LEN 1
- #define BTM_ADSP_STATE_IND_LEN 4
- #define BTM_CODEC_CONFIG_DMA_REQ_LEN 11
- #define BTM_BTFMCODEC_USECASE_START_IND 0x58000008
- #define BTM_USECASE_START_IND_LEN 1
- enum rx_status {
- /* Waiting for response */
- BTM_WAITING_RSP,
- /* Response recevied */
- BTM_RSP_RECV,
- /* Response recevied with failure status*/
- BTM_FAIL_RESP_RECV,
- /* Response not recevied, but client killed */
- BTM_RSP_NOT_RECV_CLIENT_KILLED,
- };
- enum btfm_kp_status {
- /* KP processed message succesfully */
- MSG_SUCCESS = 0,
- /* Error while processing the message */
- MSG_FAILED,
- /* Wrong transport type selected by BTADV audio manager */
- MSG_WRONG_TRANSPORT_TYPE,
- /* Timeout triggered to receive bearer switch indications*/
- MSG_INTERNAL_TIMEOUT,
- MSG_FAILED_TO_CONFIGURE_HWEP,
- MSG_FAILED_TO_SHUTDOWN_HWEP,
- MSG_ERR_WHILE_SHUTING_DOWN_HWEP,
- };
- struct btm_master_config_req {
- btm_opcode opcode;
- uint32_t len;
- uint8_t stream_id;
- uint32_t device_id;
- uint32_t sample_rate;
- uint8_t bit_width;
- uint8_t num_channels;
- uint8_t channel_num;
- uint8_t codec_id;
- }__attribute__((packed));
- struct btm_dma_config_req {
- btm_opcode opcode;
- uint32_t len;
- uint8_t stream_id;
- uint32_t sample_rate;
- uint8_t bit_width;
- uint8_t num_channels;
- uint8_t codec_id;
- uint8_t lpaif; // Low power audio interface
- uint8_t inf_index; // interface index
- uint8_t active_channel_mask;
- } __packed;
- struct btm_usecase_start_ind {
- btm_opcode opcode;
- uint32_t len;
- uint8_t transport;
- } __packed;
- struct btm_master_shutdown_req {
- btm_opcode opcode;
- uint32_t len;
- uint8_t stream_id;
- }__attribute__((packed));
- struct btm_adsp_state_ind {
- btm_opcode opcode;
- uint32_t len;
- uint32_t action;
- } __attribute__((packed));
- int btfmcodec_dev_enqueue_pkt(struct btfmcodec_char_device *, void *, int);
- bool btfmcodec_is_valid_cache_avb(struct btfmcodec_data *);
- #endif /* __LINUX_BTFM_CODEC_PKT_H*/
|