[Intel-gfx] [PATCH 07/20] drm/i915/hdmi: Simplify intel_hdmi_mode_clock_valid()
Nautiyal, Ankit K
ankit.k.nautiyal at intel.com
Thu Feb 10 12:32:23 UTC 2022
LGTM
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
On 10/15/2021 7:09 PM, Ville Syrjala wrote:
> From: Ville Syrjälä<ville.syrjala at linux.intel.com>
>
> Just loop over the possible bpc values instead of
> using an ugly if construct.
>
> A slight change in behaviour is that we now call
> intel_hdmi_{source,sink}_bpc_possible() even for 8bpc,
> but that is fine since 8bpc is always supported.
>
> Signed-off-by: Ville Syrjälä<ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_hdmi.c | 37 +++++++++++++----------
> 1 file changed, 21 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index b5af986b2778..c6586d10a9d0 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -1934,25 +1934,30 @@ intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock,
> {
> struct drm_i915_private *i915 = to_i915(connector->dev);
> struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector));
> - enum drm_mode_status status;
> + enum drm_mode_status status = MODE_OK;
> + int bpc;
>
> - /* check if we can do 8bpc */
> - status = hdmi_port_clock_valid(hdmi, intel_hdmi_tmds_clock(clock, 8, ycbcr420_output),
> - true, has_hdmi_sink);
> + /*
> + * Try all color depths since valid port clock range
> + * can have holes. Any mode that can be used with at
> + * least one color depth is accepted.
> + */
> + for (bpc = 12; bpc >= 8; bpc -= 2) {
> + int tmds_clock = intel_hdmi_tmds_clock(clock, bpc, ycbcr420_output);
>
> - /* if we can't do 8bpc we may still be able to do 12bpc */
> - if (status != MODE_OK &&
> - intel_hdmi_source_bpc_possible(i915, 12) &&
> - intel_hdmi_sink_bpc_possible(connector, 12, has_hdmi_sink, ycbcr420_output))
> - status = hdmi_port_clock_valid(hdmi, intel_hdmi_tmds_clock(clock, 12, ycbcr420_output),
> - true, has_hdmi_sink);
> + if (!intel_hdmi_source_bpc_possible(i915, bpc))
> + continue;
>
> - /* if we can't do 8,12bpc we may still be able to do 10bpc */
> - if (status != MODE_OK &&
> - intel_hdmi_source_bpc_possible(i915, 10) &&
> - intel_hdmi_sink_bpc_possible(connector, 10, has_hdmi_sink, ycbcr420_output))
> - status = hdmi_port_clock_valid(hdmi, intel_hdmi_tmds_clock(clock, 10, ycbcr420_output),
> - true, has_hdmi_sink);
> + if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink, ycbcr420_output))
> + continue;
> +
> + status = hdmi_port_clock_valid(hdmi, tmds_clock, true, has_hdmi_sink);
> + if (status == MODE_OK)
> + return MODE_OK;
> + }
> +
> + /* can never happen */
> + drm_WARN_ON(&i915->drm, status == MODE_OK);
>
> return status;
> }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20220210/82c910c6/attachment-0001.htm>
More information about the Intel-gfx
mailing list