Skip to contentSkip to conversation

LVDS panel compatible strings

DISCUSSION Thierry Reding 4 participants 11 messages Jul 14, 2023 – Jul 22, 2023

Subsystems (6)
lore
Share & tools
lore
#0 lore raw

Hi everyone,

I've been working on converting all Tegra-related device tree bindings to json-schema so that eventually we can fully validate device tree files. Getting all the bindings reviewed and merged has been slow, but I have a local tree where pretty much all validation errors and warnings have been fixed. The remaining warnings that I'm not sure how to resolve are these:

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

The reason for these is that the device tree files use:

	compatible = "panel-lvds";

but that's not valid as per the bindings. So what we really want is a specific compatible string that specifies the exact panel that each of these devices uses in addition to the "panel-lvds" fallback. Do you guys have information about these that could help fix up the DT files?

Thanks,
Thierry

#1 lore raw

пт, 14 лип. 2023 р. о 17:38 Thierry Reding <[email protected]> пише:

Quoted 26 lines

Hi everyone,

I've been working on converting all Tegra-related device tree bindings to json-schema so that eventually we can fully validate device tree files. Getting all the bindings reviewed and merged has been slow, but I have a local tree where pretty much all validation errors and warnings have been fixed. The remaining warnings that I'm not sure how to resolve are these:

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 8 lines

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Hello Thierry! Pegatron Chagall uses a Hannstar similar to one used in ASUS TF201 but unfortunately it is not compatible with existing simple panel setup (blurry image if used). My assumption is that chagall as different revision of this panel like HSD101PWW3-B00 or HSD101PWW1-A00 which is more likely or panel is highly modified which is unlikely. I propose to use "hannstar,hsd101pww1" which is more wide spread.

Best regards,
Svyatoslav R.

Quoted 12 lines

The reason for these is that the device tree files use:

        compatible = "panel-lvds";

but that's not valid as per the bindings. So what we really want is a specific compatible string that specifies the exact panel that each of these devices uses in addition to the "panel-lvds" fallback. Do you guys have information about these that could help fix up the DT files?

Thanks,
Thierry

#2 lore raw
Quoted 36 lines · Svyatoslav Ryhel

пт, 14 лип. 2023 р. о 17:38 Thierry Reding <[email protected]> пише:

Quoted 26 lines

Hi everyone,

I've been working on converting all Tegra-related device tree bindings to json-schema so that eventually we can fully validate device tree files. Getting all the bindings reviewed and merged has been slow, but I have a local tree where pretty much all validation errors and warnings have been fixed. The remaining warnings that I'm not sure how to resolve are these:

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 8 lines

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 7 lines

Hello Thierry! Pegatron Chagall uses a Hannstar similar to one used in ASUS TF201 but unfortunately it is not compatible with existing simple panel setup (blurry image if used). My assumption is that chagall as different revision of this panel like HSD101PWW3-B00 or HSD101PWW1-A00 which is more likely or panel is highly modified which is unlikely. I propose to use "hannstar,hsd101pww1" which is more wide spread.

Interesting. So is the problem the HSD101PWW2 timings that are off, or is it because the panel-lvds code does something special to make this blurry image go away?

Thierry

#3 lore raw

пт, 14 лип. 2023 р. о 18:16 Thierry Reding <[email protected]> пише:

Quoted 46 lines · Svyatoslav Ryhel
Quoted 36 lines

пт, 14 лип. 2023 р. о 17:38 Thierry Reding <[email protected]> пише:

Quoted 26 lines

Hi everyone,

I've been working on converting all Tegra-related device tree bindings to json-schema so that eventually we can fully validate device tree files. Getting all the bindings reviewed and merged has been slow, but I have a local tree where pretty much all validation errors and warnings have been fixed. The remaining warnings that I'm not sure how to resolve are these:

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 8 lines

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 7 lines

Hello Thierry! Pegatron Chagall uses a Hannstar similar to one used in ASUS TF201 but unfortunately it is not compatible with existing simple panel setup (blurry image if used). My assumption is that chagall as different revision of this panel like HSD101PWW3-B00 or HSD101PWW1-A00 which is more likely or panel is highly modified which is unlikely. I propose to use "hannstar,hsd101pww1" which is more wide spread.

Quoted 4 lines

Interesting. So is the problem the HSD101PWW2 timings that are off, or is it because the panel-lvds code does something special to make this blurry image go away?

timings are different

Quoted 1 line

Thierry

#4 lore raw
Quoted 47 lines · Svyatoslav Ryhel

пт, 14 лип. 2023 р. о 18:16 Thierry Reding <[email protected]> пише:

Quoted 46 lines · Svyatoslav Ryhel
Quoted 43 lines

пт, 14 лип. 2023 р. о 17:38 Thierry Reding <[email protected]> пише:

Quoted 26 lines

Hi everyone,

I've been working on converting all Tegra-related device tree bindings to json-schema so that eventually we can fully validate device tree files. Getting all the bindings reviewed and merged has been slow, but I have a local tree where pretty much all validation errors and warnings have been fixed. The remaining warnings that I'm not sure how to resolve are these:

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 8 lines

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Hello Thierry! Pegatron Chagall uses a Hannstar similar to one used in ASUS TF201 but unfortunately it is not compatible with existing simple panel setup (blurry image if used). My assumption is that chagall as different revision of this panel like HSD101PWW3-B00 or HSD101PWW1-A00 which is more likely or panel is highly modified which is unlikely. I propose to use "hannstar,hsd101pww1" which is more wide spread.

Quoted 5 lines
Quoted 4 lines

Interesting. So is the problem the HSD101PWW2 timings that are off, or is it because the panel-lvds code does something special to make this blurry image go away?

timings are different

For cases where the timings are the only things that differ, the DT bindings allow overriding the timings specifically. So you might get away with using one of the existing panels if it is close enough and patch up the timings in DT.

Comparing what you've got for Chagall, the porches exceed what the HSD101PWW2 allows, but the timing values in the simple-panel driver look a little arbitrary, to be honest, so I think those could be extended. Looking at a datasheet that I found online, it's very unspecific about the porch lengths since it only mentions minimum, typical and maximum values for the total frame blanking times:

	vertical: 3, 23, 223
	horizontal: 54, 160, 681

So I think we can be more generous in how these are split up. So we could for example do this:

--- >8 ---

drivers/gpu/drm/panel/panel-simple.c +6 -6
index 18dc251749fb..b2fb7943f2ed 100644
@@ -2108,13 +2108,13 @@ static const struct panel_desc hannstar_hsd100pxn1 = {
 static const struct display_timing hannstar_hsd101pww2_timing = {
 	.pixelclock = { 64300000, 71100000, 82000000 },
 	.hactive = { 1280, 1280, 1280 },
-	.hfront_porch = { 1, 1, 10 },
-	.hback_porch = { 1, 1, 10 },
-	.hsync_len = { 58, 158, 661 },
+	.hfront_porch = { 1, 1, 64 },
+	.hback_porch = { 1, 1, 64 },
+	.hsync_len = { 58, 158, 553 },
 	.vactive = { 800, 800, 800 },
-	.vfront_porch = { 1, 1, 10 },
-	.vback_porch = { 1, 1, 10 },
-	.vsync_len = { 1, 21, 203 },
+	.vfront_porch = { 1, 1, 32 },
+	.vback_porch = { 1, 1, 32 },
+	.vsync_len = { 1, 21, 159 },
 	.flags = DISPLAY_FLAGS_DE_HIGH,
 };
 

--- >8 ---

And then we could move the compatible string from simple to LVDS:

--- >8 ---

Documentation/devicetree/bindings/display/panel/panel-lvds.yaml +2 -0
index 929fe046d1e7..344e5df40c2f 100644
@@ -40,6 +40,8 @@ properties:
     items:
       - enum:
           - auo,b101ew05
+          # HannStar Display Corp. HSD101PWW2 10.1" WXGA (1280x800) LVDS panel
+          - hannstar,hsd101pww2
           - tbs,a711-panel
 
       - const: panel-lvds
Documentation/devicetree/bindings/display/panel/panel-simple.yaml +0 -2
index df1cec8fd21b..f4d9da4afefd 100644
@@ -168,8 +168,6 @@ properties:
       - hannstar,hsd070pww1
         # HannStar Display Corp. HSD100PXN1 10.1" XGA LVDS panel
       - hannstar,hsd100pxn1
-        # HannStar Display Corp. HSD101PWW2 10.1" WXGA (1280x800) LVDS panel
-      - hannstar,hsd101pww2
         # Hitachi Ltd. Corporation 9" WVGA (800x480) TFT LCD panel
       - hit,tx23d38vm0caa
         # InfoVision Optoelectronics M133NWF4 R0 13.3" FHD (1920x1080) TFT LCD panel
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dts +1 -1
index c81d5875c31c..4012f9c799a8 100644
@@ -2628,7 +2628,7 @@ cpu3: cpu@3 {
 	};
 
 	display-panel {
-		compatible = "panel-lvds";
+		compatible = "hannstar,hsd101pww2", "panel-lvds";
 
 		width-mm = <217>;
 		height-mm = <136>;

--- >8 ---

That gets rid of the DT validation warning for me. Would you be able to test this on actual hardware? I think the compatible matching would result in this matching the simple-panel driver and that does have some support for LVDS, but I'm not sure if it's exactly equal to what you get with only the panel-lvds matching, which makes this get handled by the panel-lvds driver.

I'm attaching the full patch to make it a bit easier to apply this.

Thierry

From d45f49a40b0e9db07cb4fcdcaafd29e1453e8001 Mon Sep 17 00:00:00 2001
From: Thierry Reding <[email protected]>
Date: Mon, 17 Jul 2023 09:15:33 +0200
Subject: [PATCH] WIP: Use Hannstar HSD101PWW2 on Pegatron Chagall

---
 .../bindings/display/panel/panel-lvds.yaml           |  2 ++
 .../bindings/display/panel/panel-simple.yaml         |  2 --
 .../arm/boot/dts/nvidia/tegra30-pegatron-chagall.dts |  2 +-
 drivers/gpu/drm/panel/panel-simple.c                 | 12 ++++++------
 4 files changed, 9 insertions(+), 9 deletions(-)
Documentation/devicetree/bindings/display/panel/panel-lvds.yaml +2 -0
index 929fe046d1e7..344e5df40c2f 100644
@@ -40,6 +40,8 @@ properties:
     items:
       - enum:
           - auo,b101ew05
+          # HannStar Display Corp. HSD101PWW2 10.1" WXGA (1280x800) LVDS panel
+          - hannstar,hsd101pww2
           - tbs,a711-panel
 
       - const: panel-lvds
Documentation/devicetree/bindings/display/panel/panel-simple.yaml +0 -2
index df1cec8fd21b..f4d9da4afefd 100644
@@ -168,8 +168,6 @@ properties:
       - hannstar,hsd070pww1
         # HannStar Display Corp. HSD100PXN1 10.1" XGA LVDS panel
       - hannstar,hsd100pxn1
-        # HannStar Display Corp. HSD101PWW2 10.1" WXGA (1280x800) LVDS panel
-      - hannstar,hsd101pww2
         # Hitachi Ltd. Corporation 9" WVGA (800x480) TFT LCD panel
       - hit,tx23d38vm0caa
         # InfoVision Optoelectronics M133NWF4 R0 13.3" FHD (1920x1080) TFT LCD panel
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dts +1 -1
index c81d5875c31c..4012f9c799a8 100644
@@ -2628,7 +2628,7 @@ cpu3: cpu@3 {
 	};
 
 	display-panel {
-		compatible = "panel-lvds";
+		compatible = "hannstar,hsd101pww2", "panel-lvds";
 
 		width-mm = <217>;
 		height-mm = <136>;
drivers/gpu/drm/panel/panel-simple.c +6 -6
index 18dc251749fb..b2fb7943f2ed 100644
@@ -2108,13 +2108,13 @@ static const struct panel_desc hannstar_hsd100pxn1 = {
 static const struct display_timing hannstar_hsd101pww2_timing = {
 	.pixelclock = { 64300000, 71100000, 82000000 },
 	.hactive = { 1280, 1280, 1280 },
-	.hfront_porch = { 1, 1, 10 },
-	.hback_porch = { 1, 1, 10 },
-	.hsync_len = { 58, 158, 661 },
+	.hfront_porch = { 1, 1, 64 },
+	.hback_porch = { 1, 1, 64 },
+	.hsync_len = { 58, 158, 553 },
 	.vactive = { 800, 800, 800 },
-	.vfront_porch = { 1, 1, 10 },
-	.vback_porch = { 1, 1, 10 },
-	.vsync_len = { 1, 21, 203 },
+	.vfront_porch = { 1, 1, 32 },
+	.vback_porch = { 1, 1, 32 },
+	.vsync_len = { 1, 21, 159 },
 	.flags = DISPLAY_FLAGS_DE_HIGH,
 };
 
Signature · 1 line
2.41.0
#5 lore raw

17 липня 2023 р. 10:16:44 GMT+03:00, Thierry Reding <[email protected]> написав(-ла):

Quoted 143 lines · Svyatoslav Ryhel
Quoted 47 lines

пт, 14 лип. 2023 р. о 18:16 Thierry Reding <[email protected]> пише:

Quoted 46 lines · Svyatoslav Ryhel
Quoted 43 lines

пт, 14 лип. 2023 р. о 17:38 Thierry Reding <[email protected]> пише:

Quoted 26 lines

Hi everyone,

I've been working on converting all Tegra-related device tree bindings to json-schema so that eventually we can fully validate device tree files. Getting all the bindings reviewed and merged has been slow, but I have a local tree where pretty much all validation errors and warnings have been fixed. The remaining warnings that I'm not sure how to resolve are these:

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 8 lines

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Hello Thierry! Pegatron Chagall uses a Hannstar similar to one used in ASUS TF201 but unfortunately it is not compatible with existing simple panel setup (blurry image if used). My assumption is that chagall as different revision of this panel like HSD101PWW3-B00 or HSD101PWW1-A00 which is more likely or panel is highly modified which is unlikely. I propose to use "hannstar,hsd101pww1" which is more wide spread.

Quoted 5 lines
Quoted 4 lines

Interesting. So is the problem the HSD101PWW2 timings that are off, or is it because the panel-lvds code does something special to make this blurry image go away?

timings are different

For cases where the timings are the only things that differ, the DT bindings allow overriding the timings specifically. So you might get away with using one of the existing panels if it is close enough and patch up the timings in DT.

Comparing what you've got for Chagall, the porches exceed what the HSD101PWW2 allows, but the timing values in the simple-panel driver look a little arbitrary, to be honest, so I think those could be extended. Looking at a datasheet that I found online, it's very unspecific about the porch lengths since it only mentions minimum, typical and maximum values for the total frame blanking times:

	vertical: 3, 23, 223
	horizontal: 54, 160, 681

So I think we can be more generous in how these are split up. So we could for example do this:

--- >8 ---

drivers/gpu/drm/panel/panel-simple.c +6 -7
index 18dc251749fb..b2fb7943f2ed 100644
@@ -2108,13 +2108,13 @@ static const struct panel_desc hannstar_hsd100pxn1 = {
 static const struct display_timing hannstar_hsd101pww2_timing = {
 	.pixelclock = { 64300000, 71100000, 82000000 },
 	.hactive = { 1280, 1280, 1280 },
-	.hfront_porch = { 1, 1, 10 },
-	.hback_porch = { 1, 1, 10 },
-	.hsync_len = { 58, 158, 661 },
+	.hfront_porch = { 1, 1, 64 },
+	.hback_porch = { 1, 1, 64 },
+	.hsync_len = { 58, 158, 553 },
 	.vactive = { 800, 800, 800 },
-	.vfront_porch = { 1, 1, 10 },
-	.vback_porch = { 1, 1, 10 },
-	.vsync_len = { 1, 21, 203 },
+	.vfront_porch = { 1, 1, 32 },
+	.vback_porch = { 1, 1, 32 },
+	.vsync_len = { 1, 21, 159 },
 	.flags = DISPLAY_FLAGS_DE_HIGH,
 };
 
--- >8 ---

And then we could move the compatible string from simple to LVDS:

--- >8 ---

Documentation/devicetree/bindings/display/panel/panel-lvds.yaml +2 -0
index 929fe046d1e7..344e5df40c2f 100644
@@ -40,6 +40,8 @@ properties:
    items:
      - enum:
          - auo,b101ew05
+          # HannStar Display Corp. HSD101PWW2 10.1" WXGA (1280x800) LVDS panel
+          - hannstar,hsd101pww2
          - tbs,a711-panel
 
      - const: panel-lvds
Documentation/devicetree/bindings/display/panel/panel-simple.yaml +0 -2
index df1cec8fd21b..f4d9da4afefd 100644
@@ -168,8 +168,6 @@ properties:
      - hannstar,hsd070pww1
        # HannStar Display Corp. HSD100PXN1 10.1" XGA LVDS panel
      - hannstar,hsd100pxn1
-        # HannStar Display Corp. HSD101PWW2 10.1" WXGA (1280x800) LVDS panel
-      - hannstar,hsd101pww2
        # Hitachi Ltd. Corporation 9" WVGA (800x480) TFT LCD panel
      - hit,tx23d38vm0caa
        # InfoVision Optoelectronics M133NWF4 R0 13.3" FHD (1920x1080) TFT LCD panel
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dts +1 -2
index c81d5875c31c..4012f9c799a8 100644
@@ -2628,7 +2628,7 @@ cpu3: cpu@3 {
 	};
 
 	display-panel {
-		compatible = "panel-lvds";
+		compatible = "hannstar,hsd101pww2", "panel-lvds";
 
 		width-mm = <217>;
 		height-mm = <136>;
--- >8 ---
Quoted 8 lines

That gets rid of the DT validation warning for me. Would you be able to test this on actual hardware? I think the compatible matching would result in this matching the simple-panel driver and that does have some support for LVDS, but I'm not sure if it's exactly equal to what you get with only the panel-lvds matching, which makes this get handled by the panel-lvds driver.

I'm attaching the full patch to make it a bit easier to apply this.

I will check if this doesn't break TF201.

P. S. U-boot patches are still hanging in the void!

Quoted 1 line

Thierry

#6 lore raw
In reply to Thierry Reding

пн, 17 лип. 2023 р. о 10:16 Thierry Reding <[email protected]> пише:

Quoted 144 lines · Svyatoslav Ryhel
Quoted 47 lines

пт, 14 лип. 2023 р. о 18:16 Thierry Reding <[email protected]> пише:

Quoted 46 lines · Svyatoslav Ryhel
Quoted 43 lines

пт, 14 лип. 2023 р. о 17:38 Thierry Reding <[email protected]> пише:

Quoted 26 lines

Hi everyone,

I've been working on converting all Tegra-related device tree bindings to json-schema so that eventually we can fully validate device tree files. Getting all the bindings reviewed and merged has been slow, but I have a local tree where pretty much all validation errors and warnings have been fixed. The remaining warnings that I'm not sure how to resolve are these:

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 8 lines

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Hello Thierry! Pegatron Chagall uses a Hannstar similar to one used in ASUS TF201 but unfortunately it is not compatible with existing simple panel setup (blurry image if used). My assumption is that chagall as different revision of this panel like HSD101PWW3-B00 or HSD101PWW1-A00 which is more likely or panel is highly modified which is unlikely. I propose to use "hannstar,hsd101pww1" which is more wide spread.

Quoted 5 lines
Quoted 4 lines

Interesting. So is the problem the HSD101PWW2 timings that are off, or is it because the panel-lvds code does something special to make this blurry image go away?

timings are different

For cases where the timings are the only things that differ, the DT bindings allow overriding the timings specifically. So you might get away with using one of the existing panels if it is close enough and patch up the timings in DT.

Comparing what you've got for Chagall, the porches exceed what the HSD101PWW2 allows, but the timing values in the simple-panel driver look a little arbitrary, to be honest, so I think those could be extended. Looking at a datasheet that I found online, it's very unspecific about the porch lengths since it only mentions minimum, typical and maximum values for the total frame blanking times:

        vertical: 3, 23, 223
        horizontal: 54, 160, 681

So I think we can be more generous in how these are split up. So we could for example do this:

--- >8 ---

drivers/gpu/drm/panel/panel-simple.c +6 -7
index 18dc251749fb..b2fb7943f2ed 100644
@@ -2108,13 +2108,13 @@ static const struct panel_desc hannstar_hsd100pxn1 = {
 static const struct display_timing hannstar_hsd101pww2_timing = {
        .pixelclock = { 64300000, 71100000, 82000000 },
        .hactive = { 1280, 1280, 1280 },
-       .hfront_porch = { 1, 1, 10 },
-       .hback_porch = { 1, 1, 10 },
-       .hsync_len = { 58, 158, 661 },
+       .hfront_porch = { 1, 1, 64 },
+       .hback_porch = { 1, 1, 64 },
+       .hsync_len = { 58, 158, 553 },
        .vactive = { 800, 800, 800 },
-       .vfront_porch = { 1, 1, 10 },
-       .vback_porch = { 1, 1, 10 },
-       .vsync_len = { 1, 21, 203 },
+       .vfront_porch = { 1, 1, 32 },
+       .vback_porch = { 1, 1, 32 },
+       .vsync_len = { 1, 21, 159 },
        .flags = DISPLAY_FLAGS_DE_HIGH,
 };
 
--- >8 ---

And then we could move the compatible string from simple to LVDS:

--- >8 ---

Documentation/devicetree/bindings/display/panel/panel-lvds.yaml +2 -0
index 929fe046d1e7..344e5df40c2f 100644
@@ -40,6 +40,8 @@ properties:
     items:
       - enum:
           - auo,b101ew05
+          # HannStar Display Corp. HSD101PWW2 10.1" WXGA (1280x800) LVDS panel
+          - hannstar,hsd101pww2
           - tbs,a711-panel
 
       - const: panel-lvds
Documentation/devicetree/bindings/display/panel/panel-simple.yaml +0 -2
index df1cec8fd21b..f4d9da4afefd 100644
@@ -168,8 +168,6 @@ properties:
       - hannstar,hsd070pww1
         # HannStar Display Corp. HSD100PXN1 10.1" XGA LVDS panel
       - hannstar,hsd100pxn1
-        # HannStar Display Corp. HSD101PWW2 10.1" WXGA (1280x800) LVDS panel
-      - hannstar,hsd101pww2
         # Hitachi Ltd. Corporation 9" WVGA (800x480) TFT LCD panel
       - hit,tx23d38vm0caa
         # InfoVision Optoelectronics M133NWF4 R0 13.3" FHD (1920x1080) TFT LCD panel
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dts +1 -2
index c81d5875c31c..4012f9c799a8 100644
@@ -2628,7 +2628,7 @@ cpu3: cpu@3 {
        };
 
        display-panel {
-               compatible = "panel-lvds";
+               compatible = "hannstar,hsd101pww2", "panel-lvds";
 
                width-mm = <217>;
                height-mm = <136>;
--- >8 ---
Quoted 8 lines

That gets rid of the DT validation warning for me. Would you be able to test this on actual hardware? I think the compatible matching would result in this matching the simple-panel driver and that does have some support for LVDS, but I'm not sure if it's exactly equal to what you get with only the panel-lvds matching, which makes this get handled by the panel-lvds driver.

I'm attaching the full patch to make it a bit easier to apply this.

I have just tested new timings with my TF201 and can confirm that I see no regressions for TF201. Testing on Chagall will be nearly impossible because the owner of Chagall does not have it in reach and will not be able to test it in
the next few months.

As for now I see no downsides of this patch for both Chagall and TF201. Chagall will substitute its own timings and TF201 is confirmed to work fine.

Best Regards,
Svyatoslav R.

Quoted 1 line

Thierry

#7 lore raw
In reply to Thierry Reding

17.07.2023 10:16, Thierry Reding пишет:

Quoted 4 lines

For cases where the timings are the only things that differ, the DT bindings allow overriding the timings specifically. So you might get away with using one of the existing panels if it is close enough and patch up the timings in DT.

If panel-simple supported timings override from DT, then panel-lvds indeed could be removed. But panel-simple doesn't support it:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a21f18a993c56566db94ba836684bc32c070a82c

author Tested-by Enric Balletbo i Serra Tested-by Heiko Stuebner Reviewed-by Boris Brezillon Acked-by
#8 lore raw
Quoted 10 lines · Dmitry Osipenko

17.07.2023 10:16, Thierry Reding пишет:

Quoted 4 lines

For cases where the timings are the only things that differ, the DT bindings allow overriding the timings specifically. So you might get away with using one of the existing panels if it is close enough and patch up the timings in DT.

If panel-simple supported timings override from DT, then panel-lvds indeed could be removed. But panel-simple doesn't support it:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a21f18a993c56566db94ba836684bc32c070a82c

I clearly didn't look at that patch closely enough. panel-simple has supported override modes since:

commit b8a2948fa2b3a5a6da67fd57aa01c7318d795125

Author: Sean Paul <[email protected]>
Date:   Thu Jul 11 13:34:53 2019 -0700

drm/panel: simple: Add ability to override typical timing

This patch adds the ability to override the typical display timing for a given panel. This is useful for devices which have timing constraints that do not apply across the entire display driver (eg: to avoid crosstalk between panel and digitizer on certain laptops). The rules are as follows:

- panel must not specify fixed mode (since the override mode will either be the same as the fixed mode, or we'll be unable to check the bounds of the overried)
- panel must specify at least one display_timing range which will be used to ensure the override mode fits within its bounds

Changes in v2:
- Parse the full display-timings node (using the native-mode) (Rob)
Changes in v3:
- No longer parse display-timings subnode, use panel-timing (Rob)
Changes in v4:
- Don't add mode from timing if override was specified (Thierry)
- Add warning if timing and fixed mode was specified (Thierry)
- Don't add fixed mode if timing was specified (Thierry)
- Refactor/rename a bit to avoid extra indentation from "if" tests
- i should be unsigned (Thierry)
- Add annoying WARN_ONs for some cases (Thierry)
- Simplify 'No display_timing found' handling (Thierry)
- Rename to panel_simple_parse_override_mode() (Thierry)
Changes in v5:
- Added Heiko's Tested-by
Changes in v6:
- Rebased to drm-misc next
- Added tags

Looking at the error message cited in the linked commit, the problem is that the Chunghwa panel has a fixed mode listed in the driver. However I don't see a reason why we can't get rid of that. The only place where I can find the compatible string for that used is for the Nexus 7, so we should be able to replace the fixed mode with the timings for that panel and remove the fixed mode.

The initial Chunghwa panel driver support doesn't seem to have been based on the Nexus 7, so I suppose if we make the above change we could technically be breaking some setup out there, but since we have no way of knowing which device this was on, or if anybody still has access, the best we can do is hope that nothing breaks and fix things up if somebody complains.

Thierry

#9 lore raw

17.07.2023 16:25, Thierry Reding пишет:

Quoted 77 lines · Dmitry Osipenko
Quoted 10 lines

17.07.2023 10:16, Thierry Reding пишет:

Quoted 4 lines

For cases where the timings are the only things that differ, the DT bindings allow overriding the timings specifically. So you might get away with using one of the existing panels if it is close enough and patch up the timings in DT.

If panel-simple supported timings override from DT, then panel-lvds indeed could be removed. But panel-simple doesn't support it:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a21f18a993c56566db94ba836684bc32c070a82c

I clearly didn't look at that patch closely enough. panel-simple has supported override modes since:

commit b8a2948fa2b3a5a6da67fd57aa01c7318d795125

Author: Sean Paul <[email protected]>
Date:   Thu Jul 11 13:34:53 2019 -0700

drm/panel: simple: Add ability to override typical timing

This patch adds the ability to override the typical display timing for a given panel. This is useful for devices which have timing constraints that do not apply across the entire display driver (eg: to avoid crosstalk between panel and digitizer on certain laptops). The rules are as follows:

- panel must not specify fixed mode (since the override mode will either be the same as the fixed mode, or we'll be unable to check the bounds of the overried)
- panel must specify at least one display_timing range which will be used to ensure the override mode fits within its bounds

Changes in v2:
- Parse the full display-timings node (using the native-mode) (Rob)
Changes in v3:
- No longer parse display-timings subnode, use panel-timing (Rob)
Changes in v4:
- Don't add mode from timing if override was specified (Thierry)
- Add warning if timing and fixed mode was specified (Thierry)
- Don't add fixed mode if timing was specified (Thierry)
- Refactor/rename a bit to avoid extra indentation from "if" tests
- i should be unsigned (Thierry)
- Add annoying WARN_ONs for some cases (Thierry)
- Simplify 'No display_timing found' handling (Thierry)
- Rename to panel_simple_parse_override_mode() (Thierry)
Changes in v5:
- Added Heiko's Tested-by
Changes in v6:
- Rebased to drm-misc next
- Added tags

Looking at the error message cited in the linked commit, the problem is that the Chunghwa panel has a fixed mode listed in the driver. However I don't see a reason why we can't get rid of that. The only place where I can find the compatible string for that used is for the Nexus 7, so we should be able to replace the fixed mode with the timings for that panel and remove the fixed mode.

Quoted 6 lines

The initial Chunghwa panel driver support doesn't seem to have been based on the Nexus 7, so I suppose if we make the above change we could technically be breaking some setup out there, but since we have no way of knowing which device this was on, or if anybody still has access, the best we can do is hope that nothing breaks and fix things up if somebody complains.

Sounds good. For the Chunghwa there is no other user than N7 in upstream kernel, nothing to worry about. Indeed, it should be timing ranges and not the fixed mode.

For the Hydis panel there is no definition in panel-simple, it needs to be added. It also should be in a form of timing ranges, though I don't see ranges in the datasheet, not sure where to get them.

#10 lore raw
In reply to Svyatoslav Ryhel

Hi,

Quoted 36 lines · Svyatoslav Ryhel

пт, 14 лип. 2023 р. о 17:38 Thierry Reding <[email protected]> пише:

Quoted 26 lines

Hi everyone,

I've been working on converting all Tegra-related device tree bindings to json-schema so that eventually we can fully validate device tree files. Getting all the bindings reviewed and merged has been slow, but I have a local tree where pretty much all validation errors and warnings have been fixed. The remaining warnings that I'm not sure how to resolve are these:

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-tilapia-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-E1565.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 8 lines

arch/arm/boot/dts/nvidia/tegra30-asus-nexus7-grouper-PM269.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible:0: 'panel-lvds' is not one of ['auo,b101ew05', 'tbs,a711-panel']
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: compatible: ['panel-lvds'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#
arch/arm/boot/dts/nvidia/tegra30-pegatron-chagall.dtb: display-panel: Unevaluated properties are not allowed ('compatible' was unexpected)
from schema $id: http://devicetree.org/schemas/display/panel/panel-lvds.yaml#

Quoted 7 lines

Hello Thierry! Pegatron Chagall uses a Hannstar similar to one used in ASUS TF201 but unfortunately it is not compatible with existing simple panel setup (blurry image if used). My assumption is that chagall as different revision of this panel like HSD101PWW3-B00 or HSD101PWW1-A00 which is more likely or panel is highly modified which is unlikely. I propose to use "hannstar,hsd101pww1" which is more wide spread.

perhaps we should check the EDID from Chagall before getting to conclusions.

Best regards,
Maxim