[PATCH][RESEND] drm/bridge: ti-sn65dsi83: Check link status register after enabling the bridge
Marek Vasut
marex at denx.de
Tue Apr 5 14:48:17 UTC 2022
On 4/5/22 16:20, Dave Stevenson wrote:
Hi,
>>> If we can initialise the DSI host before the bridge for the
>>> pre_enable, then all the configuration moves to the atomic_pre_enable
>>> and there should be no need to have the delay.
>>>
>>> I can't 100% guarantee that, but one of the folks on the Pi forums is
>>> using [1] which does that, and is reporting it working well. (He's
>>> also using the DSI85 to take 2 DSI links and drive 2 LVDS single link
>>> panels)
>>
>> It seems to me that checking whether the bridge got correctly
>> initialized is orthogonal to the aforementioned patchset though ?
>
> It's the delay that is ugly.
You do need to wait a little after the initialization and before
checking the status, so that delay is not going away no matter how you
frob with the DSI bridge.
> Put the check in atomic_enable which will be slightly later than
> configuration in pre_enable? Check that sufficient jiffies have passed
> if you needed.
> Or wire up the IRQ line from the SN65DSI83 rather than polling the IRQ
> Status register. Delayed workqueue if the IRQ isn't wired up.
Are you able to do such deferred non-atomic operations in atomic_enable
callback ?
> If I read it right your log message is triggered by any bit being set
> in REG_IRQ_STAT. So an inconveniently timed correctable DSI error will
> set bit 4 and log the error even though it's been corrected. Likewise
> bit 7 / CHA_SYNCH_ERR could get triggered by an H or V sync packet
> being received in that 10-12ms window (we're in atomic_enable, so
> video is already running).
There should be no bits set in the IRQ_STAT register if everything works
as it should.
> If it's the PLL being unlocked that is the issue then it should only
> be checking bit 0. Or possibly reading the actual PLL lock status from
> REG_RC_LVDS_PLL_PLL_EN_STAT. Although as we've already checked that
> the PLL is locked via REG_RC_LVDS_PLL_PLL_EN_STAT earlier in the
> atomic_enable, I'm now a little confused as to the condition you are
> actually wanting to detect.
Any outstanding errors which are currently hidden and only show up
sporadically at the worst possible moment.
[...]
More information about the dri-devel
mailing list