[PATCH] drm: rcar-du: dw-hdmi: Reject modes with a too high clock frequency
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Nov 23 15:30:43 UTC 2018
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 at ideasonboard.com>
>>> ---
>>>
>>> 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
More information about the dri-devel
mailing list