ASoc: msm: Add low latency playback and recording support.

- Add lowlatency pcm driver for Playback and Recording.
- Add support in target board files
- Add Recording Path to Multimedia5 FE DAI
- Add support in routing, platform, machine drivers
- Add low latency interfaces support in ASM and ADM drivers.

Change-Id: I1beb11db9010534e5aa91179ac6040a41622185d
Signed-off-by: Jayasena Sangaraboina <jsanga@codeaurora.org>
This commit is contained in:
Jayasena Sangaraboina
2012-07-17 12:03:08 -07:00
committed by Stephen Boyd
parent d36cb2935a
commit 978b65ca45
23 changed files with 1090 additions and 29 deletions

View File

@@ -561,6 +561,7 @@ struct adm_copp_open_command {
#define ADM_CMD_COPP_CLOSE 0x00010305
#define ADM_CMD_MULTI_CHANNEL_COPP_OPEN 0x00010310
#define ADM_CMD_MULTI_CHANNEL_COPP_OPEN_V3 0x00010333
struct adm_multi_ch_copp_open_command {
struct apr_hdr hdr;
u16 flags;
@@ -573,7 +574,6 @@ struct adm_multi_ch_copp_open_command {
u32 rate;
u8 dev_channel_mapping[8];
} __packed;
#define ADM_CMD_MEMORY_MAP 0x00010C30
struct adm_cmd_memory_map{
struct apr_hdr hdr;
@@ -618,6 +618,14 @@ struct adm_cmd_memory_unmap_regions{
#define VPM_TX_DM_FLUENCE_COPP_TOPOLOGY 0x00010F72
#define VPM_TX_QMIC_FLUENCE_COPP_TOPOLOGY 0x00010F75
#define LOWLATENCY_POPP_TOPOLOGY 0x00010C68
#define LOWLATENCY_COPP_TOPOLOGY 0x00010312
#define PCM_BITS_PER_SAMPLE 16
#define ASM_OPEN_WRITE_PERF_MODE_BIT (1<<28)
#define ASM_OPEN_READ_PERF_MODE_BIT (1<<29)
#define ADM_MULTI_CH_COPP_OPEN_PERF_MODE_BIT (1<<13)
/* SRS TRUMEDIA GUIDS */
/* topology */
#define SRS_TRUMEDIA_TOPOLOGY_ID 0x00010D90
@@ -741,6 +749,7 @@ struct adm_copp_open_respond {
} __attribute__ ((packed));
#define ADM_CMDRSP_MULTI_CHANNEL_COPP_OPEN 0x00010311
#define ADM_CMDRSP_MULTI_CHANNEL_COPP_OPEN_V3 0x00010334
#define ASM_STREAM_PRIORITY_NORMAL 0
@@ -1102,6 +1111,7 @@ struct asm_frame_meta_info {
/* Stream level commands */
#define ASM_STREAM_CMD_OPEN_READ 0x00010BCB
#define ASM_STREAM_CMD_OPEN_READ_V2_1 0x00010DB2
struct asm_stream_cmd_open_read {
struct apr_hdr hdr;
u32 uMode;
@@ -1110,6 +1120,16 @@ struct asm_stream_cmd_open_read {
u32 format;
} __attribute__((packed));
struct asm_stream_cmd_open_read_v2_1 {
struct apr_hdr hdr;
u32 uMode;
u32 src_endpoint;
u32 pre_proc_top;
u32 format;
u16 bits_per_sample;
u16 reserved;
} __packed;
/* Supported formats */
#define LINEAR_PCM 0x00010BE5
#define DTMF 0x00010BE6
@@ -1158,6 +1178,7 @@ struct asm_stream_cmd_open_read_compressed {
} __packed;
#define ASM_STREAM_CMD_OPEN_WRITE 0x00010BCA
#define ASM_STREAM_CMD_OPEN_WRITE_V2_1 0x00010DB1
struct asm_stream_cmd_open_write {
struct apr_hdr hdr;
u32 uMode;

View File

@@ -27,7 +27,7 @@ struct route_payload {
int adm_open(int port, int path, int rate, int mode, int topology);
int adm_multi_ch_copp_open(int port, int path, int rate, int mode,
int topology);
int topology, int perfmode);
int adm_memory_map_regions(uint32_t *buf_add, uint32_t mempool_id,
uint32_t *bufsz, uint32_t bufcnt);

View File

@@ -160,6 +160,7 @@ struct audio_client {
uint32_t io_mode;
uint64_t time_stamp;
atomic_t cmd_response;
bool perf_mode;
};
void q6asm_audio_client_free(struct audio_client *ac);
@@ -182,6 +183,7 @@ int q6asm_audio_client_buf_free_contiguous(unsigned int dir,
struct audio_client *ac);
int q6asm_open_read(struct audio_client *ac, uint32_t format);
int q6asm_open_read_v2_1(struct audio_client *ac, uint32_t format);
int q6asm_open_read_compressed(struct audio_client *ac,
uint32_t frames_per_buffer, uint32_t meta_data_mode);