[PATCH 0/4] drm/tidss: Fixes data edge sampling

Louis Chauvet posted 4 patches 2 months ago
.../devicetree/bindings/display/ti/ti,am65x-dss.yaml       |  6 ++++++
Documentation/devicetree/bindings/mfd/syscon.yaml          |  3 ++-
arch/arm64/boot/dts/ti/k3-am62-main.dtsi                   |  6 ++++++
drivers/gpu/drm/tidss/tidss_dispc.c                        | 14 ++++++++++++++
4 files changed, 28 insertions(+), 1 deletion(-)
[PATCH 0/4] drm/tidss: Fixes data edge sampling
Posted by Louis Chauvet 2 months ago
Currently the driver only configure the data edge sampling partially. The 
AM62 require it to be configured in two distincts registers: one in tidss 
and one in the general device registers.

Introduce a new dt property to link the proper syscon node from the main 
device registers into the tidss driver.

Fixes: 32a1795f57ee ("drm/tidss: New driver for TI Keystone platform Display SubSystem")
---
Cc: stable@vger.kernel.org

Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>

---
Louis Chauvet (4):
      dt-bindings: display: ti,am65x-dss: Add clk property for data edge synchronization
      dt-bindings: mfd: syscon: Add ti,am625-dss-clk-ctrl
      arm64: dts: ti: k3-am62-main: Add tidss clk-ctrl property
      drm/tidss: Fix sampling edge configuration

 .../devicetree/bindings/display/ti/ti,am65x-dss.yaml       |  6 ++++++
 Documentation/devicetree/bindings/mfd/syscon.yaml          |  3 ++-
 arch/arm64/boot/dts/ti/k3-am62-main.dtsi                   |  6 ++++++
 drivers/gpu/drm/tidss/tidss_dispc.c                        | 14 ++++++++++++++
 4 files changed, 28 insertions(+), 1 deletion(-)
---
base-commit: 85c23f28905cf20a86ceec3cfd7a0a5572c9eb13
change-id: 20250730-fix-edge-handling-9123f7438910

Best regards,
-- 
Louis Chauvet <louis.chauvet@bootlin.com>
Re: [PATCH 0/4] drm/tidss: Fixes data edge sampling
Posted by Tomi Valkeinen 1 month, 4 weeks ago
Hi,

On 30/07/2025 20:02, Louis Chauvet wrote:
> Currently the driver only configure the data edge sampling partially. The 
> AM62 require it to be configured in two distincts registers: one in tidss 
> and one in the general device registers.
> 
> Introduce a new dt property to link the proper syscon node from the main 
> device registers into the tidss driver.
> 
> Fixes: 32a1795f57ee ("drm/tidss: New driver for TI Keystone platform Display SubSystem")
> ---
> Cc: stable@vger.kernel.org
> 
> Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>

I understand why you call this a fix, but I think this is not really a
fix. From looking at the patches, my understanding is that for DPI
outputs we have always only supported certain clock/data edge. So this
series is adding a new feature to the driver.

You can add new things to the DT bindings, but you have to keep the old
bindings working.

 Tomi
Re: [PATCH 0/4] drm/tidss: Fixes data edge sampling
Posted by devarsh 1 month, 4 weeks ago
Hi Tomi, Louis,

On 07/08/25 18:51, Tomi Valkeinen wrote:
> Hi,
> 
> On 30/07/2025 20:02, Louis Chauvet wrote:
>> Currently the driver only configure the data edge sampling partially. The 
>> AM62 require it to be configured in two distincts registers: one in tidss 
>> and one in the general device registers.
>>
>> Introduce a new dt property to link the proper syscon node from the main 
>> device registers into the tidss driver.
>>
>> Fixes: 32a1795f57ee ("drm/tidss: New driver for TI Keystone platform Display SubSystem")
>> ---
>> Cc: stable@vger.kernel.org
>>
>> Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
> 
> I understand why you call this a fix, but I think this is not really a
> fix. From looking at the patches, my understanding is that for DPI
> outputs we have always only supported certain clock/data edge.

I don't think driver makes a distinction between supported/unsupported
or errors out in case it is run with "different" clock/data edge panel
(for e.g  DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE is set per the panel
configuration). Instead it tries to program the VP registers per the
DRM_BUS_FLAG* getting passed by framework per the connected panel and
gives an incorrect behavior if those are different than defaults since
those settings are not sufficient for these displays and instead extra
MMR register settings are also required.

 So this
> series is adding a new feature to the driver.
> 

I think it is a bug due to above mentioned behavior, and good to have a
Fixes tag.

Regards
Devarsh
Re: [PATCH 0/4] drm/tidss: Fixes data edge sampling
Posted by Tomi Valkeinen 1 month, 3 weeks ago
Hi,

On 08/08/2025 16:24, devarsh wrote:
> Hi Tomi, Louis,
> 
> On 07/08/25 18:51, Tomi Valkeinen wrote:
>> Hi,
>>
>> On 30/07/2025 20:02, Louis Chauvet wrote:
>>> Currently the driver only configure the data edge sampling partially. The 
>>> AM62 require it to be configured in two distincts registers: one in tidss 
>>> and one in the general device registers.
>>>
>>> Introduce a new dt property to link the proper syscon node from the main 
>>> device registers into the tidss driver.
>>>
>>> Fixes: 32a1795f57ee ("drm/tidss: New driver for TI Keystone platform Display SubSystem")
>>> ---
>>> Cc: stable@vger.kernel.org
>>>
>>> Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
>>
>> I understand why you call this a fix, but I think this is not really a
>> fix. From looking at the patches, my understanding is that for DPI
>> outputs we have always only supported certain clock/data edge.
> 
> I don't think driver makes a distinction between supported/unsupported
> or errors out in case it is run with "different" clock/data edge panel
> (for e.g  DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE is set per the panel
> configuration). Instead it tries to program the VP registers per the
> DRM_BUS_FLAG* getting passed by framework per the connected panel and
> gives an incorrect behavior if those are different than defaults since
> those settings are not sufficient for these displays and instead extra
> MMR register settings are also required.

Well, this gets into the meaning of "fix". I didn't right away see an
explicit definition in the kernel docs.

When the tidss driver was added, neither AM62x nor AM62A existed. Yet
this series "fixes" the original tidss commit for AM62x and AM62A? And
the patch proposes that this series is to be backported to stable
kernels going back to the original tidss commit?

When AM62x and AM62A support was added to the tidss, this feature was
not in the driver. So this is clearly also not a regression. Missing
this feature causes no crashes or other system level misbehavior. It
only causes the panels (that have never been supported with tidss on
AM62x and AM62A) to show garbage.

So we have a driver, to which support for new SoCs was added at some
later point, and at that point we did not add support for all kinds of
panels. Is adding support for those panels a new feature or a bug fix?
Should it be backported to stable kernels?

Documentation/process/stable-kernel-rules.rst has some guidelines. Maybe
one could argue that this is a "hardware quirk" mentioned there, or
perhaps "add a device ID" (of sorts). I might agree, if this was an
easily backportable, totally non-controversial, one-liner style patch
with no chance of regressions. Maybe the next version will be, but this
one is not.

 Tomi
Re: [PATCH 0/4] drm/tidss: Fixes data edge sampling
Posted by Louis Chauvet 1 month, 3 weeks ago

Le 11/08/2025 à 09:56, Tomi Valkeinen a écrit :
> Hi,
> 
> On 08/08/2025 16:24, devarsh wrote:
>> Hi Tomi, Louis,
>>
>> On 07/08/25 18:51, Tomi Valkeinen wrote:
>>> Hi,
>>>
>>> On 30/07/2025 20:02, Louis Chauvet wrote:
>>>> Currently the driver only configure the data edge sampling partially. The
>>>> AM62 require it to be configured in two distincts registers: one in tidss
>>>> and one in the general device registers.
>>>>
>>>> Introduce a new dt property to link the proper syscon node from the main
>>>> device registers into the tidss driver.
>>>>
>>>> Fixes: 32a1795f57ee ("drm/tidss: New driver for TI Keystone platform Display SubSystem")
>>>> ---
>>>> Cc: stable@vger.kernel.org
>>>>
>>>> Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
>>>
>>> I understand why you call this a fix, but I think this is not really a
>>> fix. From looking at the patches, my understanding is that for DPI
>>> outputs we have always only supported certain clock/data edge.
>>
>> I don't think driver makes a distinction between supported/unsupported
>> or errors out in case it is run with "different" clock/data edge panel
>> (for e.g  DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE is set per the panel
>> configuration). Instead it tries to program the VP registers per the
>> DRM_BUS_FLAG* getting passed by framework per the connected panel and
>> gives an incorrect behavior if those are different than defaults since
>> those settings are not sufficient for these displays and instead extra
>> MMR register settings are also required.
> 
> Well, this gets into the meaning of "fix". I didn't right away see an
> explicit definition in the kernel docs.
> 
> When the tidss driver was added, neither AM62x nor AM62A existed. Yet
> this series "fixes" the original tidss commit for AM62x and AM62A? And
> the patch proposes that this series is to be backported to stable
> kernels going back to the original tidss commit?

I overlooked the initial commit, I agree this should be limited to 
ad2ac9dc9426 ("drm/tidss: Add support for AM625 DSS").

> When AM62x and AM62A support was added to the tidss, this feature was
> not in the driver. So this is clearly also not a regression. Missing
> this feature causes no crashes or other system level misbehavior. It
> only causes the panels (that have never been supported with tidss on
> AM62x and AM62A) to show garbage.

For me the driver explicitly support different data sampling edge from 
the start, but when the AM625 was added, the implementation missed this 
quirk, so we have a broken driver for this platform.

> So we have a driver, to which support for new SoCs was added at some
> later point, and at that point we did not add support for all kinds of
> panels. Is adding support for those panels a new feature or a bug fix?
> Should it be backported to stable kernels?
>
> Documentation/process/stable-kernel-rules.rst has some guidelines. Maybe
> one could argue that this is a "hardware quirk" mentioned there, or
> perhaps "add a device ID" (of sorts).

For me this clearly falls in the "hardware quirk" category, as we need 
this quirk on some platforms.

> I might agree, if this was an
> easily backportable, totally non-controversial, one-liner style patch
> with no chance of regressions. Maybe the next version will be, but this
> one is not.

Ack, we will see how the v2 will be. If the v2 is not too complex, I 
will keep the fixes tag (on the proper commit).

Thanks,
Louis Chauvet

>   Tomi
> 

-- 
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com