From: Jani Nikula <jani.nikula@linux.intel.com>
To: ville.syrjala@linux.intel.com, dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 3/5] drm/edid: Introduce drm_hdmi_avi_infoframe_quant_range()
Date: Thu, 12 Jan 2017 11:37:46 +0200 [thread overview]
Message-ID: <87ziiw62l1.fsf@intel.com> (raw)
In-Reply-To: <20170111125725.8086-4-ville.syrjala@linux.intel.com>
On Wed, 11 Jan 2017, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Pull the logic to populate the quantization range information
> in the AVI infoframe into a small helper. We'll be adding a bit
> more logic to it, and having it in a central place seems like a
> good idea since it's based on the CEA-861 spec.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/drm_edid.c | 26 ++++++++++++++++++++++++++
> drivers/gpu/drm/i915/intel_hdmi.c | 13 +++++--------
> drivers/gpu/drm/vc4/vc4_hdmi.c | 14 +++++---------
> include/drm/drm_edid.h | 4 ++++
> 4 files changed, 40 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 304c583b8000..548c20250b95 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -4291,6 +4291,32 @@ drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame,
> }
> EXPORT_SYMBOL(drm_hdmi_avi_infoframe_from_display_mode);
>
> +/**
> + * drm_hdmi_avi_infoframe_quant_range() - fill the HDMI AVI infoframe
> + * quantization range information
I'm a fan of having a verb in the function name for functions that do
stuff. Would be nice to have "set" in there somewhere, although the name
is growing a bit unwieldy. (Btw, same for drm_default_rgb_quant_range()
in the previous patch, "get" would be nice.)
Up to you.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> + * @frame: HDMI AVI infoframe
> + * @rgb_quant_range: RGB quantization range (Q)
> + * @rgb_quant_range_selectable: Sink support selectable RGB quantization range (QS)
> + */
> +void
> +drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
> + enum hdmi_quantization_range rgb_quant_range,
> + bool rgb_quant_range_selectable)
> +{
> + /*
> + * CEA-861:
> + * "A Source shall not send a non-zero Q value that does not correspond
> + * to the default RGB Quantization Range for the transmitted Picture
> + * unless the Sink indicates support for the Q bit in a Video
> + * Capabilities Data Block."
> + */
> + if (rgb_quant_range_selectable)
> + frame->quantization_range = rgb_quant_range;
> + else
> + frame->quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT;
> +}
> +EXPORT_SYMBOL(drm_hdmi_avi_infoframe_quant_range);
> +
> static enum hdmi_3d_structure
> s3d_structure_from_display_mode(const struct drm_display_mode *mode)
> {
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 19bd13f53729..351f837b09a0 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -465,14 +465,11 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
> return;
> }
>
> - if (intel_hdmi->rgb_quant_range_selectable) {
> - if (crtc_state->limited_color_range)
> - frame.avi.quantization_range =
> - HDMI_QUANTIZATION_RANGE_LIMITED;
> - else
> - frame.avi.quantization_range =
> - HDMI_QUANTIZATION_RANGE_FULL;
> - }
> + drm_hdmi_avi_infoframe_quant_range(&frame.avi,
> + crtc_state->limited_color_range ?
> + HDMI_QUANTIZATION_RANGE_LIMITED :
> + HDMI_QUANTIZATION_RANGE_FULL,
> + intel_hdmi->rgb_quant_range_selectable);
>
> intel_write_infoframe(encoder, crtc_state, &frame);
> }
> diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
> index d79466a42690..a588156b5410 100644
> --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
> +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
> @@ -356,15 +356,11 @@ static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder)
> return;
> }
>
> - if (vc4_encoder->rgb_range_selectable) {
> - if (vc4_encoder->limited_rgb_range) {
> - frame.avi.quantization_range =
> - HDMI_QUANTIZATION_RANGE_LIMITED;
> - } else {
> - frame.avi.quantization_range =
> - HDMI_QUANTIZATION_RANGE_FULL;
> - }
> - }
> + drm_hdmi_avi_infoframe_quant_range(&frame.avi,
> + vc4_encoder->limited_rgb_range ?
> + HDMI_QUANTIZATION_RANGE_LIMITED :
> + HDMI_QUANTIZATION_RANGE_FULL,
> + vc4_encoder->rgb_range_selectable);
>
> vc4_hdmi_write_infoframe(encoder, &frame);
> }
> diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
> index 25cdf5f7a0d8..cfad4d89589f 100644
> --- a/include/drm/drm_edid.h
> +++ b/include/drm/drm_edid.h
> @@ -345,6 +345,10 @@ drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame,
> int
> drm_hdmi_vendor_infoframe_from_display_mode(struct hdmi_vendor_infoframe *frame,
> const struct drm_display_mode *mode);
> +void
> +drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
> + enum hdmi_quantization_range rgb_quant_range,
> + bool rgb_quant_range_selectable);
>
> /**
> * drm_eld_mnl - Get ELD monitor name length in bytes.
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-01-12 9:37 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-11 12:57 [PATCH 0/5] drm/edid: Improve RGB limited range handling a bit ville.syrjala
2017-01-11 12:57 ` [PATCH 1/5] drm/edid: Have drm_edid.h include hdmi.h ville.syrjala
2017-01-12 9:22 ` Jani Nikula
2017-01-11 12:57 ` [PATCH 2/5] drm/edid: Introduce drm_default_rgb_quant_range() ville.syrjala
2017-01-11 14:18 ` [PATCH v2 " ville.syrjala
2017-01-12 9:29 ` Jani Nikula
2017-01-12 14:24 ` [Intel-gfx] " Ville Syrjälä
2017-01-11 16:16 ` [PATCH " Daniel Vetter
2017-01-11 16:31 ` Ville Syrjälä
2017-01-12 8:00 ` Daniel Vetter
2017-01-12 8:13 ` Michel Dänzer
2017-01-20 19:50 ` Eric Anholt
2017-01-20 20:00 ` Ville Syrjälä
2017-01-20 20:37 ` [Intel-gfx] " Ville Syrjälä
2017-01-11 12:57 ` [PATCH 3/5] drm/edid: Introduce drm_hdmi_avi_infoframe_quant_range() ville.syrjala
2017-01-12 9:37 ` Jani Nikula [this message]
2017-01-11 12:57 ` [PATCH 4/5] drm/edid: Set AVI infoframe Q even when QS=0 ville.syrjala
2017-01-12 9:45 ` Jani Nikula
2017-01-11 12:57 ` [PATCH 5/5] drm/edid: Set YQ bits in the AVI infoframe according to CEA-861-F ville.syrjala
2017-01-12 10:13 ` Jani Nikula
2017-01-12 10:35 ` Ville Syrjälä
2017-01-12 11:13 ` Jani Nikula
2017-01-26 19:08 ` [PATCH 0/5] drm/edid: Improve RGB limited range handling a bit Ville Syrjälä
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ziiw62l1.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=ville.syrjala@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox