Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a26a58e8 authored by Lespiau, Damien's avatar Lespiau, Damien Committed by Dave Airlie
Browse files

gpu: host1x: Port the HDMI vendor infoframe code the common helpers



I just wrote the bits to define and pack HDMI vendor specific infoframe.
Port the host1x driver to use those so I can refactor the infoframe code
a bit more.

This changes the length of the infoframe payload from 6 to 5, which is
enough for the "frame packing" stereo format.

v2: Pimp up the commit message with the note about the length
    (Ville Syrjälä)

Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Terje Bergström <tbergstrom@nvidia.com>
Cc: linux-tegra@vger.kernel.org

Signed-off-by: default avatarDamien Lespiau <damien.lespiau@intel.com>
Reviewed-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarDave Airlie <airlied@gmail.com>
parent 7d27becb
Loading
Loading
Loading
Loading
+4 −20
Original line number Diff line number Diff line
@@ -539,7 +539,7 @@ static void tegra_hdmi_setup_audio_infoframe(struct tegra_hdmi *hdmi)

static void tegra_hdmi_setup_stereo_infoframe(struct tegra_hdmi *hdmi)
{
	struct hdmi_vendor_infoframe frame;
	struct hdmi_hdmi_infoframe frame;
	unsigned long value;
	u8 buffer[10];
	ssize_t err;
@@ -551,26 +551,10 @@ static void tegra_hdmi_setup_stereo_infoframe(struct tegra_hdmi *hdmi)
		return;
	}

	memset(&frame, 0, sizeof(frame));
	hdmi_hdmi_infoframe_init(&frame);
	frame.s3d_struct = HDMI_3D_STRUCTURE_FRAME_PACKING;

	frame.type = HDMI_INFOFRAME_TYPE_VENDOR;
	frame.version = 0x01;
	frame.length = 6;

	frame.data[0] = 0x03; /* regid0 */
	frame.data[1] = 0x0c; /* regid1 */
	frame.data[2] = 0x00; /* regid2 */
	frame.data[3] = 0x02 << 5; /* video format */

	/* TODO: 74 MHz limit? */
	if (1) {
		frame.data[4] = 0x00 << 4; /* 3D structure */
	} else {
		frame.data[4] = 0x08 << 4; /* 3D structure */
		frame.data[5] = 0x00 << 4; /* 3D ext. data */
	}

	err = hdmi_vendor_infoframe_pack(&frame, buffer, sizeof(buffer));
	err = hdmi_hdmi_infoframe_pack(&frame, buffer, sizeof(buffer));
	if (err < 0) {
		dev_err(hdmi->dev, "failed to pack vendor infoframe: %zd\n",
			err);