From fe2246708470a339cb6389b2ce3827f81b2e1839 Mon Sep 17 00:00:00 2001 From: Han Lu Date: Thu, 1 Nov 2018 16:26:37 +0800 Subject: [PATCH] msm: ASoC: enable aptX HD decoder Enable decoder for media format aptX HD Change-Id: I5892dcdcf233f2c8c79b4f2c08d2d9014e05ed26 Signed-off-by: Han Lu --- include/sound/q6asm-v2.h | 1 + include/uapi/sound/compress_params.h | 3 ++- sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c | 12 ++++++++++++ sound/soc/msm/qdsp6v2/q6asm.c | 3 +++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/include/sound/q6asm-v2.h b/include/sound/q6asm-v2.h index 8af49bb6a9fa..d2d639ec462f 100644 --- a/include/sound/q6asm-v2.h +++ b/include/sound/q6asm-v2.h @@ -57,6 +57,7 @@ #define FORMAT_GEN_COMPR 0x001f #define FORMAT_TRUEHD 0x0020 #define FORMAT_IEC61937 0x0021 +#define FORMAT_APTXHD 0x0022 #define ENCDEC_SBCBITRATE 0x0001 #define ENCDEC_IMMEDIATE_DECODE 0x0002 diff --git a/include/uapi/sound/compress_params.h b/include/uapi/sound/compress_params.h index f4028e805cc7..6f57d4f60ce0 100644 --- a/include/uapi/sound/compress_params.h +++ b/include/uapi/sound/compress_params.h @@ -105,7 +105,8 @@ #define SND_AUDIOCODEC_DSD ((__u32) 0x00000021) #define SND_AUDIOCODEC_APTX ((__u32) 0x00000022) #define SND_AUDIOCODEC_TRUEHD ((__u32) 0x00000023) -#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_TRUEHD +#define SND_AUDIOCODEC_APTXHD ((__u32) 0x00000024) +#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_APTXHD /* * Profile and modes are listed with bit masks. This allows for a * more compact representation of fields that will not evolve diff --git a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c index b2aa6bd3f504..edbd6b485dac 100644 --- a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c +++ b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c @@ -946,6 +946,7 @@ static void populate_codec_list(struct msm_compr_audio *prtd) prtd->compr_cap.codecs[14] = SND_AUDIOCODEC_APTX; prtd->compr_cap.codecs[15] = SND_AUDIOCODEC_TRUEHD; prtd->compr_cap.codecs[16] = SND_AUDIOCODEC_IEC61937; + prtd->compr_cap.codecs[17] = SND_AUDIOCODEC_APTXHD; } static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream, @@ -1213,6 +1214,8 @@ static int msm_compr_send_media_format_block(struct snd_compr_stream *cstream, pr_err("%s: CMD IEC61937 Format block failed ret %d\n", __func__, ret); break; + case FORMAT_APTXHD: + pr_debug("SND_AUDIOCODEC_APTXHD\n"); case FORMAT_APTX: pr_debug("SND_AUDIOCODEC_APTX\n"); memset(&aptx_cfg, 0x0, sizeof(struct aptx_dec_bt_addr_cfg)); @@ -2106,6 +2109,12 @@ static int msm_compr_set_params(struct snd_compr_stream *cstream, break; } + case SND_AUDIOCODEC_APTXHD: { + pr_debug("%s: SND_AUDIOCODEC_APTXHD\n", __func__); + prtd->codec = FORMAT_APTXHD; + break; + } + default: pr_err("codec not supported, id =%d\n", params->codec.id); return -EINVAL; @@ -2974,6 +2983,7 @@ static int msm_compr_get_codec_caps(struct snd_compr_stream *cstream, case SND_AUDIOCODEC_TRUEHD: case SND_AUDIOCODEC_IEC61937: case SND_AUDIOCODEC_APTX: + case SND_AUDIOCODEC_APTXHD: break; default: pr_err("%s: Unsupported audio codec %d\n", @@ -3412,6 +3422,7 @@ static int msm_compr_send_dec_params(struct snd_compr_stream *cstream, case FORMAT_TRUEHD: case FORMAT_IEC61937: case FORMAT_APTX: + case FORMAT_APTXHD: pr_debug("%s: no runtime parameters for codec: %d\n", __func__, prtd->codec); break; @@ -3481,6 +3492,7 @@ static int msm_compr_dec_params_put(struct snd_kcontrol *kcontrol, case FORMAT_TRUEHD: case FORMAT_IEC61937: case FORMAT_APTX: + case FORMAT_APTXHD: pr_debug("%s: no runtime parameters for codec: %d\n", __func__, prtd->codec); break; diff --git a/sound/soc/msm/qdsp6v2/q6asm.c b/sound/soc/msm/qdsp6v2/q6asm.c index b7f85c504f7a..f6194eade877 100644 --- a/sound/soc/msm/qdsp6v2/q6asm.c +++ b/sound/soc/msm/qdsp6v2/q6asm.c @@ -3245,6 +3245,9 @@ static int __q6asm_open_write(struct audio_client *ac, uint32_t format, case FORMAT_APTX: open.dec_fmt_id = ASM_MEDIA_FMT_APTX; break; + case FORMAT_APTXHD: + open.dec_fmt_id = ASM_MEDIA_FMT_APTX_HD; + break; case FORMAT_GEN_COMPR: open.dec_fmt_id = ASM_MEDIA_FMT_GENERIC_COMPRESSED; break;