.../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(-)
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>
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
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
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
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
© 2016 - 2025 Red Hat, Inc.