Re: [PATCH] drm: rcar-du: dw-hdmi: Reject modes with a too high clock frequency

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Laurent,

On 23/11/2018 14:47, Laurent Pinchart wrote:
> Hi Kieran,
> 
> On Friday, 23 November 2018 16:43:28 EET Kieran Bingham wrote:
>> On 23/11/2018 14:34, Laurent Pinchart wrote:
>>> Implement a .mode_valid() handler in the R-Car glue layer to reject
>>> modes with an unsupported clock frequency.
>>>
>>> Signed-off-by: Laurent Pinchart
>>> <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx>
>>> ---
>>>
>>>  drivers/gpu/drm/rcar-du/rcar_dw_hdmi.c | 11 +++++++++++
>>>  1 file changed, 11 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/rcar-du/rcar_dw_hdmi.c
>>> b/drivers/gpu/drm/rcar-du/rcar_dw_hdmi.c index 75490a3e0a2a..8a603235f22d
>>> 100644
>>> --- a/drivers/gpu/drm/rcar-du/rcar_dw_hdmi.c
>>> +++ b/drivers/gpu/drm/rcar-du/rcar_dw_hdmi.c
>>> @@ -35,6 +35,16 @@ static const struct rcar_hdmi_phy_params
>>> rcar_hdmi_phy_params[] = {
>>>  	{ ~0UL,      0x0000, 0x0000, 0x0000 },
>>>  
>>>  };
>>>
>>> +static enum drm_mode_status
>>> +rcar_hdmi_mode_valid(struct drm_connector *connector,
>>> +		     const struct drm_display_mode *mode)
>>> +{
>>> +	if (mode->clock > 297000)
>>
>> Is 29700 constant? Can it be determined from any other location or is it
>> just a magically known platform value?
> 
> It's the last entry of the rcar_hdmi_phy_params table above. I considered 
> writing it
> 
> 	if (mode->clock > 
> rcar_hdmi_phy_params[ARRAY_SIZE(rcar_hdmi_phy_params)-2].mpixelclock)
> 
> but found it a but hard to parse. Do you think it would be better ?

Well - for readability - no,

But for accuracy - yes:

	297000000 != 297000

Unless the /1000 is intentional?

How about keep the (corrected?) constant value, but add a comment
referencing it's extraction.

I don't think the coded table extraction helps here. Especially as it
necessitates indexing against ARRAY_SIZE - 2.

--
Regards

Kieran




> 
>>> +		return MODE_CLOCK_HIGH;
>>> +
>>> +	return MODE_OK;
>>> +}
>>> +
>>>
>>>  static int rcar_hdmi_phy_configure(struct dw_hdmi *hdmi,
>>>  				   const struct dw_hdmi_plat_data *pdata,
>>>  				   unsigned long mpixelclock)
>>> @@ -59,6 +69,7 @@ static int rcar_hdmi_phy_configure(struct dw_hdmi *hdmi,
>>>  }
>>>  
>>>  static const struct dw_hdmi_plat_data rcar_dw_hdmi_plat_data = {
>>> +	.mode_valid = rcar_hdmi_mode_valid,
>>>  	.configure_phy	= rcar_hdmi_phy_configure,
>>>  };
> 

-- 
Regards
--
Kieran
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux