[PATCH] drm/bridge: adv7511: Do not merge adv7511_mode_set() with atomic_enable()

Tommaso Merciai tommaso.merciai.xr at bp.renesas.com
Mon May 26 14:02:39 UTC 2025


Hi All,
Thanks for your comments.

On 26/05/25 15:18, Dmitry Baryshkov wrote:
> On 26/05/2025 14:40, Maxime Ripard wrote:
>> On Mon, May 26, 2025 at 01:19:23PM +0200, Tommaso Merciai wrote:
>>> Hi Laurent,
>>> Thanks for your comment.
>>>
>>> On 26/05/25 12:49, Laurent Pinchart wrote:
>>>> On Mon, May 26, 2025 at 11:58:37AM +0200, Tommaso Merciai wrote:
>>>>> Hi Maxime,
>>>>> Thanks for your comment.
>>>>>
>>>>> On 26/05/25 11:26, Maxime Ripard wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On Mon, May 26, 2025 at 10:54:52AM +0200, Tommaso Merciai wrote:
>>>>>>> After adv7511_mode_set() was merged into .atomic_enable(), only the
>>>>>>> native resolution is working when using modetest.
>>>>>>>
>>>>>>> This is caused by incorrect timings: adv7511_mode_set() must not be
>>>>>>> merged into .atomic_enable().
>>>>>>>
>>>>>>> Move adv7511_mode_set() back to the .mode_set() callback in
>>>>>>> drm_bridge_funcs to restore correct behavior.
>>>>>>>
>>>>>>> Fixes: 0a9e2f0a6466 ("drm/bridge: adv7511: switch to the HDMI 
>>>>>>> connector helpers")
>>>>>>> Reported-by: Biju Das <biju.das.jz at bp.renesas.com>
>>>>>>> Closes: https://lore.kernel.org/all/aDB8bD6cF7qiSpKd@tom-desktop/
>>>>>>> Signed-off-by: Tommaso Merciai <tommaso.merciai.xr at bp.renesas.com>
>>>>>>
>>>>>> Explaining why, both in the commit log and the comments, would be 
>>>>>> nice.
>>>>>> Because I can't think of any good reason it just can't work for that
>>>>>> bridge.
>>>>>
>>>>> Sorry, let me clarify and share with you some details:
>>>>>
>>>>> adv7511_mode_set:
>>>>>     - Is setting up timings registers for the DSI2HDMI bridge in 
>>>>> our case
>>>>>       we are using ADV7535 bridge.
>>>>>
>>>>> rzg2l_mipi_dsi_atomic_enable:
>>>>>     - Is setting up the vclock for the DSI ip
>>>>>
>>>>> Testing new/old implementation a bit we found the following:
>>>>>
>>>>> root at smarc-rzg3e:~# modetest -M rzg2l-du -d -s HDMI- 
>>>>> A-1:800x600-56.25 at XR24
>>>>> setting mode 800x600-56.25Hz on connectors HDMI-A-1, crtc 62
>>>>> [   49.273134] adv7511_mode_set_old: drm_mode_vrefresh(mode) = 56
>>>>> [   49.281006] rzg2l_mipi_dsi_atomic_enable: mode->clock: 36000
>>>>>
>>>>> root at smarc-rzg3e:~# modetest -M rzg2l-du -d -s HDMI- 
>>>>> A-1:800x600-56.25 at XR24
>>>>> setting mode 800x600-56.25Hz on connectors HDMI-A-1, crtc 62
>>>>> [   74.076881] rzg2l_mipi_dsi_atomic_enable: mode->clock: 36000
>>>>> [   74.092130] adv7511_mode_set: drm_mode_vrefresh(adj_mode) = 56
>>>>>
>>>>> Same result but different timing (in function call perspective):
>>>>>
>>>>>     - old: adv7511_mode_set() is call before 
>>>>> rzg2l_mipi_dsi_atomic_enable()
>>>>>     - new: adv7511_mode_set() is call after 
>>>>> rzg2l_mipi_dsi_atomic_enable()
>>>>
>>>> What is "old" and "new" here ? Is it before and after Dmitry's 
>>>> patch, or
>>>> before and after yours ? Please be precise when describing problems.
>>>
>>> Sorry, you are completely right:
>>>
>>>   - old --> before Dmitry's patch
>>>   - new --> after Dmitry's patch
>>>
>>>>
>>>>> What do you think? Thanks in advance.
>>>>
>>>> You're only explaining above what the "old" and "new" behaviours are,
>>>> and claiming one of them is causing an issue, but you're not explaining
>>>> *why* it causes an issue. That's what your commit message is 
>>>> expected to
>>>> detail.
>>>>
>>>
>>> Thanks for the clarification! :)
>>> I will send v2 explaining better this.
>>
>> In particular, if the driver needs to have mode_set called before
>> atomic_enable, you should say why moving the call to mode_set earlier in
>> the function wouldn't work.
> 
> It might be the same thing as we had on PS8640: it had to be brought up 
> before the host starts the DSI link, so that there is no clock input on 
> the DSI clock lane.
> 

Some updates on my side:

I'm not seeing any differences from a regs perspective when using the 
old driver version (before Dmitry's patch) and the new driver version 
(after Dmitry's patch).

In particular, i2cdump -f -y 7 0x4c shows me the same result.

Unfortunately, since I don't have the ADV7535 datasheet, I believe this 
issue may be related to the functions call sequence.

I agree with Dmitry's theory.

Let me gently know if you need some more test on my side. Thanks in advance.

Regards,
Tommaso










More information about the dri-devel mailing list