ASoC: msm: qdsp6v2: Support to set session start delay
Update compress driver to support session start delay. Userspace can use this param to delay start of playback session. CRs-Fixed: 1112258 Change-Id: I0b31a4bae12f9f2b1f8a3e003909741529458772 Signed-off-by: Manish Dewangan <manish@codeaurora.org>
This commit is contained in:
parent
479baf1cf7
commit
9da92fae03
2 changed files with 10 additions and 1 deletions
|
@ -148,6 +148,7 @@ struct snd_compr_audio_info {
|
||||||
* @SNDRV_COMPRESS_RENDER_MODE: dsp render mode (audio master or stc)
|
* @SNDRV_COMPRESS_RENDER_MODE: dsp render mode (audio master or stc)
|
||||||
* @SNDRV_COMPRESS_CLK_REC_MODE: clock recovery mode ( none or auto)
|
* @SNDRV_COMPRESS_CLK_REC_MODE: clock recovery mode ( none or auto)
|
||||||
* @SNDRV_COMPRESS_RENDER_WINDOW: render window
|
* @SNDRV_COMPRESS_RENDER_WINDOW: render window
|
||||||
|
* @SNDRV_COMPRESS_START_DELAY: start delay
|
||||||
*/
|
*/
|
||||||
enum sndrv_compress_encoder {
|
enum sndrv_compress_encoder {
|
||||||
SNDRV_COMPRESS_ENCODER_PADDING = 1,
|
SNDRV_COMPRESS_ENCODER_PADDING = 1,
|
||||||
|
@ -158,12 +159,14 @@ enum sndrv_compress_encoder {
|
||||||
SNDRV_COMPRESS_RENDER_MODE = 6,
|
SNDRV_COMPRESS_RENDER_MODE = 6,
|
||||||
SNDRV_COMPRESS_CLK_REC_MODE = 7,
|
SNDRV_COMPRESS_CLK_REC_MODE = 7,
|
||||||
SNDRV_COMPRESS_RENDER_WINDOW = 8,
|
SNDRV_COMPRESS_RENDER_WINDOW = 8,
|
||||||
|
SNDRV_COMPRESS_START_DELAY = 9,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SNDRV_COMPRESS_PATH_DELAY SNDRV_COMPRESS_PATH_DELAY
|
#define SNDRV_COMPRESS_PATH_DELAY SNDRV_COMPRESS_PATH_DELAY
|
||||||
#define SNDRV_COMPRESS_RENDER_MODE SNDRV_COMPRESS_RENDER_MODE
|
#define SNDRV_COMPRESS_RENDER_MODE SNDRV_COMPRESS_RENDER_MODE
|
||||||
#define SNDRV_COMPRESS_CLK_REC_MODE SNDRV_COMPRESS_CLK_REC_MODE
|
#define SNDRV_COMPRESS_CLK_REC_MODE SNDRV_COMPRESS_CLK_REC_MODE
|
||||||
#define SNDRV_COMPRESS_RENDER_WINDOW SNDRV_COMPRESS_RENDER_WINDOW
|
#define SNDRV_COMPRESS_RENDER_WINDOW SNDRV_COMPRESS_RENDER_WINDOW
|
||||||
|
#define SNDRV_COMPRESS_START_DELAY SNDRV_COMPRESS_START_DELAY
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct snd_compr_metadata - compressed stream metadata
|
* struct snd_compr_metadata - compressed stream metadata
|
||||||
|
|
|
@ -161,6 +161,8 @@ struct msm_compr_audio {
|
||||||
uint32_t next_stream;
|
uint32_t next_stream;
|
||||||
|
|
||||||
uint32_t run_mode;
|
uint32_t run_mode;
|
||||||
|
uint32_t start_delay_lsw;
|
||||||
|
uint32_t start_delay_msw;
|
||||||
|
|
||||||
uint64_t marker_timestamp;
|
uint64_t marker_timestamp;
|
||||||
|
|
||||||
|
@ -2058,7 +2060,8 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd)
|
||||||
msm_compr_read_buffer(prtd);
|
msm_compr_read_buffer(prtd);
|
||||||
}
|
}
|
||||||
/* issue RUN command for the stream */
|
/* issue RUN command for the stream */
|
||||||
q6asm_run_nowait(prtd->audio_client, prtd->run_mode, 0, 0);
|
q6asm_run_nowait(prtd->audio_client, prtd->run_mode,
|
||||||
|
prtd->start_delay_msw, prtd->start_delay_lsw);
|
||||||
break;
|
break;
|
||||||
case SNDRV_PCM_TRIGGER_STOP:
|
case SNDRV_PCM_TRIGGER_STOP:
|
||||||
spin_lock_irqsave(&prtd->lock, flags);
|
spin_lock_irqsave(&prtd->lock, flags);
|
||||||
|
@ -2839,6 +2842,9 @@ static int msm_compr_set_metadata(struct snd_compr_stream *cstream,
|
||||||
metadata->value[1],
|
metadata->value[1],
|
||||||
metadata->value[2],
|
metadata->value[2],
|
||||||
metadata->value[3]);
|
metadata->value[3]);
|
||||||
|
} else if (metadata->key == SNDRV_COMPRESS_START_DELAY) {
|
||||||
|
prtd->start_delay_lsw = metadata->value[0];
|
||||||
|
prtd->start_delay_msw = metadata->value[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue