Hi Laurent, Dne četrtek, 05. marec 2020 ob 00:51:49 CET je Laurent Pinchart napisal(a): > Hi Jernej, > > Thank you for the patch. > > On Thu, Mar 05, 2020 at 12:25:12AM +0100, Jernej Skrabec wrote: > > is_color_space_conversion() is a misnomer. It checks not only if color > > space conversion is needed, but also if format conversion is needed. > > This is actually desired behaviour because result of this function > > determines if CSC block should be enabled or not (CSC block can also do > > format conversion). > > > > In order to clear misunderstandings, let's rework > > is_color_space_conversion() to do exactly what is supposed to do and add > > another function which will determine if CSC block must be enabled or > > not. > > > > Signed-off-by: Jernej Skrabec <jernej.skrabec@xxxxxxxx> > > --- > > > > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 31 +++++++++++++++-------- > > 1 file changed, 21 insertions(+), 10 deletions(-) > > > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > > b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index > > c8a02e5b5e1b..7724191e0a8b 100644 > > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > > @@ -963,11 +963,14 @@ static void hdmi_video_sample(struct dw_hdmi *hdmi) > > > > static int is_color_space_conversion(struct dw_hdmi *hdmi) > > { > > > > - return (hdmi->hdmi_data.enc_in_bus_format != > > - hdmi->hdmi_data.enc_out_bus_format) || > > - (hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_in_bus_format) && > > - hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format) && > > - hdmi->hdmi_data.rgb_limited_range); > > + struct hdmi_data_info *hdmi_data = &hdmi->hdmi_data; > > + bool is_input_rgb, is_output_rgb; > > + > > + is_input_rgb = hdmi_bus_fmt_is_rgb(hdmi_data->enc_in_bus_format); > > + is_output_rgb = hdmi_bus_fmt_is_rgb(hdmi_data- >enc_out_bus_format); > > + > > + return (is_input_rgb != is_output_rgb) || > > + (is_input_rgb && is_output_rgb && hdmi_data- >rgb_limited_range); > > > > } > > > > static int is_color_space_decimation(struct dw_hdmi *hdmi) > > > > @@ -994,6 +997,13 @@ static int is_color_space_interpolation(struct > > dw_hdmi *hdmi)> > > return 0; > > > > } > > > > +static bool is_conversion_needed(struct dw_hdmi *hdmi) > > Maybe is_csc_needed ? Ok, I'll fix during applying. > > Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Thanks! Best regards, Jernej > > > +{ > > + return is_color_space_conversion(hdmi) || > > + is_color_space_decimation(hdmi) || > > + is_color_space_interpolation(hdmi); > > +} > > + > > > > static void dw_hdmi_update_csc_coeffs(struct dw_hdmi *hdmi) > > { > > > > const u16 (*csc_coeff)[3][4] = &csc_coeff_default; > > > > @@ -2014,18 +2024,19 @@ static void dw_hdmi_enable_video_path(struct > > dw_hdmi *hdmi)> > > hdmi_writeb(hdmi, hdmi->mc_clkdis, HDMI_MC_CLKDIS); > > > > /* Enable csc path */ > > > > - if (is_color_space_conversion(hdmi)) { > > + if (is_conversion_needed(hdmi)) { > > > > hdmi->mc_clkdis &= ~HDMI_MC_CLKDIS_CSCCLK_DISABLE; > > hdmi_writeb(hdmi, hdmi->mc_clkdis, HDMI_MC_CLKDIS); > > > > - } > > > > - /* Enable color space conversion if needed */ > > - if (is_color_space_conversion(hdmi)) > > > > hdmi_writeb(hdmi, HDMI_MC_FLOWCTRL_FEED_THROUGH_OFF_CSC_IN_PATH, > > > > HDMI_MC_FLOWCTRL); > > > > - else > > + } else { > > + hdmi->mc_clkdis |= HDMI_MC_CLKDIS_CSCCLK_DISABLE; > > + hdmi_writeb(hdmi, hdmi->mc_clkdis, HDMI_MC_CLKDIS); > > + > > > > hdmi_writeb(hdmi, HDMI_MC_FLOWCTRL_FEED_THROUGH_OFF_CSC_BYPASS, > > > > HDMI_MC_FLOWCTRL); > > > > + } > > > > } > > > > /* Workaround to clear the overflow condition */ _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel