Commit 479747ca authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

media: cec: add support for Absolute Volume Control



Add support for this new CEC message. This was added in HDMI 2.1a.

Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 20694e96
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -239,6 +239,7 @@ ignore define CEC_OP_FEAT_DEV_HAS_DECK_CONTROL
ignore define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE
ignore define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX
ignore define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX
ignore define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL

ignore define CEC_MSG_GIVE_FEATURES

@@ -487,6 +488,7 @@ ignore define CEC_OP_SYS_AUD_STATUS_ON

ignore define CEC_MSG_SYSTEM_AUDIO_MODE_REQUEST
ignore define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS
ignore define CEC_MSG_SET_AUDIO_VOLUME_LEVEL

ignore define CEC_OP_AUD_FMT_ID_CEA861
ignore define CEC_OP_AUD_FMT_ID_CEA861_CXT
+1 −0
Original line number Diff line number Diff line
@@ -1027,6 +1027,7 @@ static const u8 cec_msg_size[256] = {
	[CEC_MSG_REPORT_SHORT_AUDIO_DESCRIPTOR] = 2 | DIRECTED,
	[CEC_MSG_REQUEST_SHORT_AUDIO_DESCRIPTOR] = 2 | DIRECTED,
	[CEC_MSG_SET_SYSTEM_AUDIO_MODE] = 3 | BOTH,
	[CEC_MSG_SET_AUDIO_VOLUME_LEVEL] = 3 | DIRECTED,
	[CEC_MSG_SYSTEM_AUDIO_MODE_REQUEST] = 2 | DIRECTED,
	[CEC_MSG_SYSTEM_AUDIO_MODE_STATUS] = 3 | DIRECTED,
	[CEC_MSG_SET_AUDIO_RATE] = 3 | DIRECTED,
+14 −0
Original line number Diff line number Diff line
@@ -1568,6 +1568,20 @@ static inline void cec_ops_request_short_audio_descriptor(const struct cec_msg *
	}
}

static inline void cec_msg_set_audio_volume_level(struct cec_msg *msg,
						  __u8 audio_volume_level)
{
	msg->len = 3;
	msg->msg[1] = CEC_MSG_SET_AUDIO_VOLUME_LEVEL;
	msg->msg[2] = audio_volume_level;
}

static inline void cec_ops_set_audio_volume_level(const struct cec_msg *msg,
						  __u8 *audio_volume_level)
{
	*audio_volume_level = msg->msg[2];
}


/* Audio Rate Control Feature */
static inline void cec_msg_set_audio_rate(struct cec_msg *msg,
+2 −0
Original line number Diff line number Diff line
@@ -768,6 +768,7 @@ struct cec_event {
#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE		0x08
#define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX			0x04
#define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX		0x02
#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL	0x01

#define CEC_MSG_GIVE_FEATURES				0xa5	/* HDMI 2.0 */

@@ -1059,6 +1060,7 @@ struct cec_event {
#define CEC_OP_AUD_FMT_ID_CEA861			0
#define CEC_OP_AUD_FMT_ID_CEA861_CXT			1

#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL			0x73

/* Audio Rate Control Feature */
#define CEC_MSG_SET_AUDIO_RATE				0x9a