Merge "ASoc: msm: qdspv2: Fix latency calculation in pcm offload path"
This commit is contained in:
commit
8ac7aa1695
1 changed files with 20 additions and 8 deletions
|
@ -423,14 +423,22 @@ static void config_debug_fs_run(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void config_debug_fs_write(struct audio_buffer *ab)
|
static void config_debug_fs_write(struct audio_buffer *ab, int offset)
|
||||||
{
|
{
|
||||||
if (out_enable_flag) {
|
if (out_enable_flag) {
|
||||||
char zero_pattern[2] = {0x00, 0x00};
|
char zero_pattern[2] = {0x00, 0x00};
|
||||||
|
char *data;
|
||||||
|
|
||||||
|
if ((offset < 0) || (offset > ab->size)) {
|
||||||
|
pr_err("Invalid offset %d", offset);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = (char *)ab->data + offset;
|
||||||
/* If First two byte is non zero and last two byte
|
/* If First two byte is non zero and last two byte
|
||||||
is zero then it is warm output pattern */
|
is zero then it is warm output pattern */
|
||||||
if ((strncmp(((char *)ab->data), zero_pattern, 2)) &&
|
if ((strncmp(data, zero_pattern, 2)) &&
|
||||||
(!strncmp(((char *)ab->data + 2), zero_pattern, 2))) {
|
(!strncmp((data + 2), zero_pattern, 2))) {
|
||||||
do_gettimeofday(&out_warm_tv);
|
do_gettimeofday(&out_warm_tv);
|
||||||
pr_debug("%s: WARM:apr_send_pkt at %ld sec %ld microsec\n",
|
pr_debug("%s: WARM:apr_send_pkt at %ld sec %ld microsec\n",
|
||||||
__func__,
|
__func__,
|
||||||
|
@ -440,8 +448,8 @@ static void config_debug_fs_write(struct audio_buffer *ab)
|
||||||
}
|
}
|
||||||
/* If First two byte is zero and last two byte is
|
/* If First two byte is zero and last two byte is
|
||||||
non zero then it is cont ouput pattern */
|
non zero then it is cont ouput pattern */
|
||||||
else if ((!strncmp(((char *)ab->data), zero_pattern, 2))
|
else if ((!strncmp(data, zero_pattern, 2))
|
||||||
&& (strncmp(((char *)ab->data + 2), zero_pattern, 2))) {
|
&& (strncmp((data + 2), zero_pattern, 2))) {
|
||||||
do_gettimeofday(&out_cont_tv);
|
do_gettimeofday(&out_cont_tv);
|
||||||
pr_debug("%s: CONT:apr_send_pkt at %ld sec %ld microsec\n",
|
pr_debug("%s: CONT:apr_send_pkt at %ld sec %ld microsec\n",
|
||||||
__func__,
|
__func__,
|
||||||
|
@ -488,7 +496,7 @@ outbuf_fail:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static void config_debug_fs_write(struct audio_buffer *ab)
|
static void config_debug_fs_write(struct audio_buffer *ab, int offset)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -7979,6 +7987,7 @@ int q6asm_async_write(struct audio_client *ac,
|
||||||
u32 liomode;
|
u32 liomode;
|
||||||
u32 io_compressed;
|
u32 io_compressed;
|
||||||
u32 io_compressed_stream;
|
u32 io_compressed_stream;
|
||||||
|
int offset = 0;
|
||||||
|
|
||||||
if (ac == NULL) {
|
if (ac == NULL) {
|
||||||
pr_err("%s: APR handle NULL\n", __func__);
|
pr_err("%s: APR handle NULL\n", __func__);
|
||||||
|
@ -8040,7 +8049,10 @@ int q6asm_async_write(struct audio_client *ac,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
config_debug_fs_write(ab);
|
if (ab != NULL) {
|
||||||
|
offset = lbuf_phys_addr - ab->phys;
|
||||||
|
config_debug_fs_write(ab, offset);
|
||||||
|
}
|
||||||
|
|
||||||
rc = apr_send_pkt(ac->apr, (uint32_t *) &write);
|
rc = apr_send_pkt(ac->apr, (uint32_t *) &write);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
@ -8187,7 +8199,7 @@ int q6asm_write(struct audio_client *ac, uint32_t len, uint32_t msw_ts,
|
||||||
write.mem_map_handle);
|
write.mem_map_handle);
|
||||||
mutex_unlock(&port->lock);
|
mutex_unlock(&port->lock);
|
||||||
|
|
||||||
config_debug_fs_write(ab);
|
config_debug_fs_write(ab, 0);
|
||||||
|
|
||||||
rc = apr_send_pkt(ac->apr, (uint32_t *) &write);
|
rc = apr_send_pkt(ac->apr, (uint32_t *) &write);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue