Merge "ASoC: msm: qdsp6v2: Add TrueHD HDMI compress pass-though"
This commit is contained in:
commit
6f9ad72025
5 changed files with 23 additions and 10 deletions
|
@ -5057,6 +5057,7 @@ struct asm_amrwbplus_fmt_blk_v2 {
|
||||||
#define ASM_MEDIA_FMT_VORBIS 0x00010C15
|
#define ASM_MEDIA_FMT_VORBIS 0x00010C15
|
||||||
#define ASM_MEDIA_FMT_APE 0x00012F32
|
#define ASM_MEDIA_FMT_APE 0x00012F32
|
||||||
#define ASM_MEDIA_FMT_DSD 0x00012F3E
|
#define ASM_MEDIA_FMT_DSD 0x00012F3E
|
||||||
|
#define ASM_MEDIA_FMT_TRUEHD 0x00013215
|
||||||
|
|
||||||
/* Media format ID for adaptive transform acoustic coding. This
|
/* Media format ID for adaptive transform acoustic coding. This
|
||||||
* ID is used by the #ASM_STREAM_CMD_OPEN_WRITE_COMPRESSED command
|
* ID is used by the #ASM_STREAM_CMD_OPEN_WRITE_COMPRESSED command
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
#define FORMAT_DSD 0x001d
|
#define FORMAT_DSD 0x001d
|
||||||
#define FORMAT_APTX 0x001e
|
#define FORMAT_APTX 0x001e
|
||||||
#define FORMAT_GEN_COMPR 0x001f
|
#define FORMAT_GEN_COMPR 0x001f
|
||||||
|
#define FORMAT_TRUEHD 0x0020
|
||||||
|
|
||||||
#define ENCDEC_SBCBITRATE 0x0001
|
#define ENCDEC_SBCBITRATE 0x0001
|
||||||
#define ENCDEC_IMMEDIATE_DECODE 0x0002
|
#define ENCDEC_IMMEDIATE_DECODE 0x0002
|
||||||
|
|
|
@ -104,7 +104,8 @@
|
||||||
#define SND_AUDIOCODEC_APE ((__u32) 0x00000020)
|
#define SND_AUDIOCODEC_APE ((__u32) 0x00000020)
|
||||||
#define SND_AUDIOCODEC_DSD ((__u32) 0x00000021)
|
#define SND_AUDIOCODEC_DSD ((__u32) 0x00000021)
|
||||||
#define SND_AUDIOCODEC_APTX ((__u32) 0x00000022)
|
#define SND_AUDIOCODEC_APTX ((__u32) 0x00000022)
|
||||||
#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_APTX
|
#define SND_AUDIOCODEC_TRUEHD ((__u32) 0x00000023)
|
||||||
|
#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_TRUEHD
|
||||||
/*
|
/*
|
||||||
* Profile and modes are listed with bit masks. This allows for a
|
* Profile and modes are listed with bit masks. This allows for a
|
||||||
* more compact representation of fields that will not evolve
|
* more compact representation of fields that will not evolve
|
||||||
|
|
|
@ -187,7 +187,7 @@ struct msm_compr_audio {
|
||||||
|
|
||||||
const u32 compr_codecs[] = {
|
const u32 compr_codecs[] = {
|
||||||
SND_AUDIOCODEC_AC3, SND_AUDIOCODEC_EAC3, SND_AUDIOCODEC_DTS,
|
SND_AUDIOCODEC_AC3, SND_AUDIOCODEC_EAC3, SND_AUDIOCODEC_DTS,
|
||||||
SND_AUDIOCODEC_DSD};
|
SND_AUDIOCODEC_DSD, SND_AUDIOCODEC_TRUEHD};
|
||||||
|
|
||||||
struct query_audio_effect {
|
struct query_audio_effect {
|
||||||
uint32_t mod_id;
|
uint32_t mod_id;
|
||||||
|
@ -904,7 +904,7 @@ static void populate_codec_list(struct msm_compr_audio *prtd)
|
||||||
COMPR_PLAYBACK_MIN_NUM_FRAGMENTS;
|
COMPR_PLAYBACK_MIN_NUM_FRAGMENTS;
|
||||||
prtd->compr_cap.max_fragments =
|
prtd->compr_cap.max_fragments =
|
||||||
COMPR_PLAYBACK_MAX_NUM_FRAGMENTS;
|
COMPR_PLAYBACK_MAX_NUM_FRAGMENTS;
|
||||||
prtd->compr_cap.num_codecs = 15;
|
prtd->compr_cap.num_codecs = 16;
|
||||||
prtd->compr_cap.codecs[0] = SND_AUDIOCODEC_MP3;
|
prtd->compr_cap.codecs[0] = SND_AUDIOCODEC_MP3;
|
||||||
prtd->compr_cap.codecs[1] = SND_AUDIOCODEC_AAC;
|
prtd->compr_cap.codecs[1] = SND_AUDIOCODEC_AAC;
|
||||||
prtd->compr_cap.codecs[2] = SND_AUDIOCODEC_AC3;
|
prtd->compr_cap.codecs[2] = SND_AUDIOCODEC_AC3;
|
||||||
|
@ -920,6 +920,7 @@ static void populate_codec_list(struct msm_compr_audio *prtd)
|
||||||
prtd->compr_cap.codecs[12] = SND_AUDIOCODEC_DTS;
|
prtd->compr_cap.codecs[12] = SND_AUDIOCODEC_DTS;
|
||||||
prtd->compr_cap.codecs[13] = SND_AUDIOCODEC_DSD;
|
prtd->compr_cap.codecs[13] = SND_AUDIOCODEC_DSD;
|
||||||
prtd->compr_cap.codecs[14] = SND_AUDIOCODEC_APTX;
|
prtd->compr_cap.codecs[14] = SND_AUDIOCODEC_APTX;
|
||||||
|
prtd->compr_cap.codecs[15] = SND_AUDIOCODEC_TRUEHD;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream,
|
static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream,
|
||||||
|
@ -1174,6 +1175,10 @@ static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream,
|
||||||
pr_err("%s: CMD DSD Format block failed ret %d\n",
|
pr_err("%s: CMD DSD Format block failed ret %d\n",
|
||||||
__func__, ret);
|
__func__, ret);
|
||||||
break;
|
break;
|
||||||
|
case FORMAT_TRUEHD:
|
||||||
|
pr_debug("SND_AUDIOCODEC_TRUEHD\n");
|
||||||
|
/* no media format block needed */
|
||||||
|
break;
|
||||||
case FORMAT_APTX:
|
case FORMAT_APTX:
|
||||||
pr_debug("SND_AUDIOCODEC_APTX\n");
|
pr_debug("SND_AUDIOCODEC_APTX\n");
|
||||||
memset(&aptx_cfg, 0x0, sizeof(struct aptx_dec_bt_addr_cfg));
|
memset(&aptx_cfg, 0x0, sizeof(struct aptx_dec_bt_addr_cfg));
|
||||||
|
@ -1972,6 +1977,12 @@ static int msm_compr_set_params(struct snd_compr_stream *cstream,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case SND_AUDIOCODEC_TRUEHD: {
|
||||||
|
pr_debug("%s: SND_AUDIOCODEC_TRUEHD\n", __func__);
|
||||||
|
prtd->codec = FORMAT_TRUEHD;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case SND_AUDIOCODEC_APTX: {
|
case SND_AUDIOCODEC_APTX: {
|
||||||
pr_debug("%s: SND_AUDIOCODEC_APTX\n", __func__);
|
pr_debug("%s: SND_AUDIOCODEC_APTX\n", __func__);
|
||||||
prtd->codec = FORMAT_APTX;
|
prtd->codec = FORMAT_APTX;
|
||||||
|
@ -2836,20 +2847,14 @@ static int msm_compr_get_codec_caps(struct snd_compr_stream *cstream,
|
||||||
SND_AUDIOSTREAMFORMAT_RAW);
|
SND_AUDIOSTREAMFORMAT_RAW);
|
||||||
break;
|
break;
|
||||||
case SND_AUDIOCODEC_AC3:
|
case SND_AUDIOCODEC_AC3:
|
||||||
break;
|
|
||||||
case SND_AUDIOCODEC_EAC3:
|
case SND_AUDIOCODEC_EAC3:
|
||||||
break;
|
|
||||||
case SND_AUDIOCODEC_FLAC:
|
case SND_AUDIOCODEC_FLAC:
|
||||||
break;
|
|
||||||
case SND_AUDIOCODEC_VORBIS:
|
case SND_AUDIOCODEC_VORBIS:
|
||||||
break;
|
|
||||||
case SND_AUDIOCODEC_ALAC:
|
case SND_AUDIOCODEC_ALAC:
|
||||||
break;
|
|
||||||
case SND_AUDIOCODEC_APE:
|
case SND_AUDIOCODEC_APE:
|
||||||
break;
|
|
||||||
case SND_AUDIOCODEC_DTS:
|
case SND_AUDIOCODEC_DTS:
|
||||||
break;
|
|
||||||
case SND_AUDIOCODEC_DSD:
|
case SND_AUDIOCODEC_DSD:
|
||||||
|
case SND_AUDIOCODEC_TRUEHD:
|
||||||
case SND_AUDIOCODEC_APTX:
|
case SND_AUDIOCODEC_APTX:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -3318,6 +3323,7 @@ static int msm_compr_send_dec_params(struct snd_compr_stream *cstream,
|
||||||
switch (prtd->codec) {
|
switch (prtd->codec) {
|
||||||
case FORMAT_MP3:
|
case FORMAT_MP3:
|
||||||
case FORMAT_MPEG4_AAC:
|
case FORMAT_MPEG4_AAC:
|
||||||
|
case FORMAT_TRUEHD:
|
||||||
case FORMAT_APTX:
|
case FORMAT_APTX:
|
||||||
pr_debug("%s: no runtime parameters for codec: %d\n", __func__,
|
pr_debug("%s: no runtime parameters for codec: %d\n", __func__,
|
||||||
prtd->codec);
|
prtd->codec);
|
||||||
|
@ -3385,6 +3391,7 @@ static int msm_compr_dec_params_put(struct snd_kcontrol *kcontrol,
|
||||||
case FORMAT_APE:
|
case FORMAT_APE:
|
||||||
case FORMAT_DTS:
|
case FORMAT_DTS:
|
||||||
case FORMAT_DSD:
|
case FORMAT_DSD:
|
||||||
|
case FORMAT_TRUEHD:
|
||||||
case FORMAT_APTX:
|
case FORMAT_APTX:
|
||||||
pr_debug("%s: no runtime parameters for codec: %d\n", __func__,
|
pr_debug("%s: no runtime parameters for codec: %d\n", __func__,
|
||||||
prtd->codec);
|
prtd->codec);
|
||||||
|
|
|
@ -2782,6 +2782,9 @@ static int __q6asm_open_write(struct audio_client *ac, uint32_t format,
|
||||||
case FORMAT_GEN_COMPR:
|
case FORMAT_GEN_COMPR:
|
||||||
open.dec_fmt_id = ASM_MEDIA_FMT_GENERIC_COMPRESSED;
|
open.dec_fmt_id = ASM_MEDIA_FMT_GENERIC_COMPRESSED;
|
||||||
break;
|
break;
|
||||||
|
case FORMAT_TRUEHD:
|
||||||
|
open.dec_fmt_id = ASM_MEDIA_FMT_TRUEHD;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
pr_err("%s: Invalid format 0x%x\n", __func__, format);
|
pr_err("%s: Invalid format 0x%x\n", __func__, format);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
|
|
Loading…
Add table
Reference in a new issue