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

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

video/hdmi: Use hdmi_vendor_infoframe for the HDMI specific infoframe



We just got rid of the version of hdmi_vendor_infoframe that had a byte
array for anyone to poke at. It's now time to shuffle around the naming
of hdmi_hdmi_infoframe to make hdmi_vendor_infoframe become the HDMI
vendor specific structure.

Cc: Thierry Reding <thierry.reding@gmail.com>
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 af3e95b4
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line 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)
static void tegra_hdmi_setup_stereo_infoframe(struct tegra_hdmi *hdmi)
{
{
	struct hdmi_hdmi_infoframe frame;
	struct hdmi_vendor_infoframe frame;
	unsigned long value;
	unsigned long value;
	u8 buffer[10];
	u8 buffer[10];
	ssize_t err;
	ssize_t err;
@@ -551,10 +551,10 @@ static void tegra_hdmi_setup_stereo_infoframe(struct tegra_hdmi *hdmi)
		return;
		return;
	}
	}


	hdmi_hdmi_infoframe_init(&frame);
	hdmi_vendor_infoframe_init(&frame);
	frame.s3d_struct = HDMI_3D_STRUCTURE_FRAME_PACKING;
	frame.s3d_struct = HDMI_3D_STRUCTURE_FRAME_PACKING;


	err = hdmi_hdmi_infoframe_pack(&frame, buffer, sizeof(buffer));
	err = hdmi_vendor_infoframe_pack(&frame, buffer, sizeof(buffer));
	if (err < 0) {
	if (err < 0) {
		dev_err(hdmi->dev, "failed to pack vendor infoframe: %zd\n",
		dev_err(hdmi->dev, "failed to pack vendor infoframe: %zd\n",
			err);
			err);
+13 −12
Original line number Original line Diff line number Diff line
@@ -288,12 +288,12 @@ ssize_t hdmi_audio_infoframe_pack(struct hdmi_audio_infoframe *frame,
EXPORT_SYMBOL(hdmi_audio_infoframe_pack);
EXPORT_SYMBOL(hdmi_audio_infoframe_pack);


/**
/**
 * hdmi_hdmi_infoframe_init() - initialize an HDMI vendor infoframe
 * hdmi_vendor_infoframe_init() - initialize an HDMI vendor infoframe
 * @frame: HDMI vendor infoframe
 * @frame: HDMI vendor infoframe
 *
 *
 * Returns 0 on success or a negative error code on failure.
 * Returns 0 on success or a negative error code on failure.
 */
 */
int hdmi_hdmi_infoframe_init(struct hdmi_hdmi_infoframe *frame)
int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame)
{
{
	memset(frame, 0, sizeof(*frame));
	memset(frame, 0, sizeof(*frame));


@@ -310,10 +310,10 @@ int hdmi_hdmi_infoframe_init(struct hdmi_hdmi_infoframe *frame)


	return 0;
	return 0;
}
}
EXPORT_SYMBOL(hdmi_hdmi_infoframe_init);
EXPORT_SYMBOL(hdmi_vendor_infoframe_init);


/**
/**
 * hdmi_hdmi_infoframe_pack() - write a HDMI vendor infoframe to binary buffer
 * hdmi_vendor_infoframe_pack() - write a HDMI vendor infoframe to binary buffer
 * @frame: HDMI infoframe
 * @frame: HDMI infoframe
 * @buffer: destination buffer
 * @buffer: destination buffer
 * @size: size of buffer
 * @size: size of buffer
@@ -326,7 +326,7 @@ EXPORT_SYMBOL(hdmi_hdmi_infoframe_init);
 * Returns the number of bytes packed into the binary buffer or a negative
 * Returns the number of bytes packed into the binary buffer or a negative
 * error code on failure.
 * error code on failure.
 */
 */
ssize_t hdmi_hdmi_infoframe_pack(struct hdmi_hdmi_infoframe *frame,
ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
				 void *buffer, size_t size)
				 void *buffer, size_t size)
{
{
	u8 *ptr = buffer;
	u8 *ptr = buffer;
@@ -377,19 +377,20 @@ ssize_t hdmi_hdmi_infoframe_pack(struct hdmi_hdmi_infoframe *frame,


	return length;
	return length;
}
}
EXPORT_SYMBOL(hdmi_hdmi_infoframe_pack);
EXPORT_SYMBOL(hdmi_vendor_infoframe_pack);


/*
/*
 * hdmi_vendor_infoframe_pack() - write a vendor infoframe to binary buffer
 * hdmi_vendor_any_infoframe_pack() - write a vendor infoframe to binary buffer
 */
 */
static ssize_t hdmi_vendor_infoframe_pack(union hdmi_vendor_infoframe *frame,
static ssize_t
hdmi_vendor_any_infoframe_pack(union hdmi_vendor_any_infoframe *frame,
			   void *buffer, size_t size)
			   void *buffer, size_t size)
{
{
	/* we only know about HDMI vendor infoframes */
	/* we only know about HDMI vendor infoframes */
	if (frame->any.oui != HDMI_IDENTIFIER)
	if (frame->any.oui != HDMI_IDENTIFIER)
		return -EINVAL;
		return -EINVAL;


	return hdmi_hdmi_infoframe_pack(&frame->hdmi, buffer, size);
	return hdmi_vendor_infoframe_pack(&frame->hdmi, buffer, size);
}
}


/**
/**
@@ -422,7 +423,7 @@ hdmi_infoframe_pack(union hdmi_infoframe *frame, void *buffer, size_t size)
		length = hdmi_audio_infoframe_pack(&frame->audio, buffer, size);
		length = hdmi_audio_infoframe_pack(&frame->audio, buffer, size);
		break;
		break;
	case HDMI_INFOFRAME_TYPE_VENDOR:
	case HDMI_INFOFRAME_TYPE_VENDOR:
		length = hdmi_vendor_infoframe_pack(&frame->vendor,
		length = hdmi_vendor_any_infoframe_pack(&frame->vendor,
							buffer, size);
							buffer, size);
		break;
		break;
	default:
	default:
+8 −7
Original line number Original line Diff line number Diff line
@@ -237,7 +237,8 @@ enum hdmi_3d_structure {
	HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8,
	HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8,
};
};


struct hdmi_hdmi_infoframe {

struct hdmi_vendor_infoframe {
	enum hdmi_infoframe_type type;
	enum hdmi_infoframe_type type;
	unsigned char version;
	unsigned char version;
	unsigned char length;
	unsigned char length;
@@ -247,25 +248,25 @@ struct hdmi_hdmi_infoframe {
	unsigned int s3d_ext_data;
	unsigned int s3d_ext_data;
};
};


int hdmi_hdmi_infoframe_init(struct hdmi_hdmi_infoframe *frame);
int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame);
ssize_t hdmi_hdmi_infoframe_pack(struct hdmi_hdmi_infoframe *frame,
ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
				   void *buffer, size_t size);
				   void *buffer, size_t size);


union hdmi_vendor_infoframe {
union hdmi_vendor_any_infoframe {
	struct {
	struct {
		enum hdmi_infoframe_type type;
		enum hdmi_infoframe_type type;
		unsigned char version;
		unsigned char version;
		unsigned char length;
		unsigned char length;
		unsigned int oui;
		unsigned int oui;
	} any;
	} any;
	struct hdmi_hdmi_infoframe hdmi;
	struct hdmi_vendor_infoframe hdmi;
};
};


union hdmi_infoframe {
union hdmi_infoframe {
	struct hdmi_any_infoframe any;
	struct hdmi_any_infoframe any;
	struct hdmi_avi_infoframe avi;
	struct hdmi_avi_infoframe avi;
	struct hdmi_spd_infoframe spd;
	struct hdmi_spd_infoframe spd;
	union hdmi_vendor_infoframe vendor;
	union hdmi_vendor_any_infoframe vendor;
	struct hdmi_audio_infoframe audio;
	struct hdmi_audio_infoframe audio;
};
};