Re: [PATCH] Revert "drm/bridge: lt9611: Do not generate HFP/HBP/HSA and EOT packet"

From: Dmitry Baryshkov
Date: Wed Aug 02 2023 - 09:16:15 EST


On 02/08/2023 15:07, Marek Vasut wrote:
On 8/2/23 10:52, Neil Armstrong wrote:
This reverts commit [1] to fix display regression on the Dragonboard 845c
(SDM845) devboard.

There's a mismatch on the real action of the following flags:
- MIPI_DSI_MODE_VIDEO_NO_HSA
- MIPI_DSI_MODE_VIDEO_NO_HFP
- MIPI_DSI_MODE_VIDEO_NO_HBP
which leads to a non-working display on qcom platforms.

[1] 8ddce13ae696 ("drm/bridge: lt9611: Do not generate HFP/HBP/HSA and EOT packet")

Cc: Marek Vasut <marex@xxxxxxx>
Cc: Robert Foss <rfoss@xxxxxxxxxx>
Cc: Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx>
Cc: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
Cc: Abhinav Kumar <quic_abhinavk@xxxxxxxxxxx>
Fixes: 8ddce13ae69 ("drm/bridge: lt9611: Do not generate HFP/HBP/HSA and EOT packet")
Reported-by: Amit Pundir <amit.pundir@xxxxxxxxxx>
Link: https://lore.kernel.org/r/CAMi1Hd0TD=2z_=bcDrht3H_wiLvAFcv8Z-U_r_KUOoeMc6UMjw@xxxxxxxxxxxxxx/
Signed-off-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>

This breaks LT9611 operation on i.MX8M Mini/Nano/Plus, so, NAK.

I am currently using this LT9611 with Linux 6.1.y in production and this is not acceptable. I also believe the correct fix is on the MSM side, not on the LT9611 driver side, since MSM incorrectly implements these flags.

There is no indication that MSM gets these flags wrong.

Let me quote the DSI 1.3 (I think Abhinav already quoted DSI 1.2).

Chapter 8.11.1 Transmission Packet Sequences:

========
If a peripheral timing specification for HBP or HFP minimum period is zero, the corresponding Blanking
Packet may be omitted. If the HBP or HFP maximum period is zero, the corresponding blanking packet
shall be omitted.
========

Next, chapter 8.11.2 Non-Burst Mode with Sync Pulses

======
Normally, periods shown as HSA (Horizontal Sync Active), HBP (Horizontal Back Porch) and HFP
(Horizontal Front Porch) are filled by Blanking Packets, with lengths (including packet overhead)
calculated to match the period specified by the peripheral’s data sheet. Alternatively, if there is sufficient
time to transition from HS to LP mode and back again, a timed interval in LP mode may substitute for a
Blanking Packet, thus saving power. During HSA, HBP and HFP periods, the bus should stay in the LP-11
state.
========

So, by the spec, sending the HSA / HBP / HFP as blanking packets should always be accepted (and it is the default mode). Switching to LP-11 should be permitted if there is a sufficient time to switch to LP-11 and back. Not sending the packets is only possible if the peripheral (lt9611) says so.

We already know that lt9611 breaks if we try switching to LP-11 during this period. We know that the there is a requirement time for the HSA / HBP / HFP, because the HDMI monitor needs them. Thus, I can only emphasise that the behaviour before the offending patch was correct.

Last, but not least, breaking the in-kernel platform for the out-of-tree peripheral doesn't sound correct.

I can only propose the following steps:

1. land the revert to unbreak existing users.

2. Marek to propose and land the DT bindings & driver change that will enable the workaround for the particular platform (i.MX8m).

--
With best wishes
Dmitry