Message ID | 20210723002146.1962910-1-dianders@chromium.org |
---|---|
Headers | show |
Series | eDP: Support probing eDP panels dynamically instead of hardcoding | expand |
On Thu, Jul 22, 2021 at 05:21:39PM -0700, Douglas Anderson wrote: > eDP panels generally contain almost everything needed to control them > in their EDID. This comes from their DP heritage were a computer needs > to be able to properly control pretty much any DP display that's > plugged into it. > > The one big issue with eDP panels and the reason that we need a panel > driver for them is that the power sequencing can be different per > panel. > > While it is true that eDP panel sequencing can be arbitrarily complex, > in practice it turns out that many eDP panels are compatible with just > some slightly different delays. See the contents of the bindings file > introduced in this patch for some details. > > The fact that eDP panels are 99% probable and that the power > sequencing (especially power up) can be compatible between many panels > means that there's a constant desire to plug multiple different panels > into the same board. This could be for second sourcing purposes or to > support multiple SKUs (maybe a 11" and a 13", for instance). > > As discussed [1], it should be OK to support this by adding two > properties to the device tree to specify the delays needed for > powering up the panel the first time. We'll create a new "edp-panel" > bindings file and define the two delays that might need to be > specified. NOTE: in the vast majority of the cases (HPD is hooked up > and isn't glitchy or is debounced) even these delays aren't needed. > > In order to help ease the transition, we'll support old "panel-simple" > panels as "fallback" panels. In this case "edp-panel" should be > specified first but if there are problems or a panel is unknown we can > fallback to controlling panels like we used to. > > [1] https://lore.kernel.org/r/CAD=FV=VZYOMPwQZzWdhJGh5cjJWw_EcM-wQVEivZ-bdGXjPrEQ@mail.gmail.com > > Signed-off-by: Douglas Anderson <dianders@chromium.org> > --- > As usual with anything remotely complicated with yaml bindings, I > mostly messed around with these until it seemed to validate > correctly. Hopefully this is somewhat the way to do things. If folks > would prefer something different (maybe just having one bindings file > for edp-panel and simple-panel) I can change it up. > > .../bindings/display/panel/panel-edp.yaml | 196 ++++++ > .../bindings/display/panel/panel-simple.yaml | 559 +++++++++--------- > 2 files changed, 479 insertions(+), 276 deletions(-) > create mode 100644 Documentation/devicetree/bindings/display/panel/panel-edp.yaml > > diff --git a/Documentation/devicetree/bindings/display/panel/panel-edp.yaml b/Documentation/devicetree/bindings/display/panel/panel-edp.yaml > new file mode 100644 > index 000000000000..7a9dcf270646 > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/panel/panel-edp.yaml > @@ -0,0 +1,196 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/display/panel/panel-edp.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Probable (via DP AUX / EDID) eDP Panels with simple poweron sequences > + > +maintainers: > + - Douglas Anderson <dianders@chromium.org> > + > +description: | > + This binding file can be used to indicate that an eDP panel is connected > + to a Embedded DisplayPort AUX bus (see display/dp-aux-bus.yaml) without > + actually specifying exactly what panel is connected. This is useful for > + the case that more than one different panel could be connected to the > + board, either for second-sourcing purposes or to support multiple SKUs > + with different LCDs that hook up to a common board. > + > + As per above, a requirement for using this binding is that the panel is > + represented under the DP AUX bus. This means that we can use any > + information provided by the DP AUX bus (including the EDID) to identify > + the panel. We can use this to identify display size, resolution, and > + timings among other things. > + > + One piece of information about eDP panels that is typically _not_ > + provided anywhere on the DP AUX bus is the power sequencing timings. > + This is the reason why, historically, we've always had to explicitly > + list eDP panels. We solve that here with two tricks. The "worst case" > + power on timings for any panels expected to be connected to a board are > + specified in these bindings. Once we've powered on, it's expected that > + the operating system will lookup the panel in a table (based on EDID > + information) to figure out other power sequencing timings. > + > + eDP panels in general can have fairly arbitrary power sequencing > + requirements. However, even though it's arbitrary in general, the > + vast majority of panel datasheets have a power sequence diagram that > + looks the exactly the same as every other panel. Each panel datasheet > + cares about different timings in this diagram but the fact that the > + diagram is so similar means we can come up with a single driver to > + handle it. > + > + These diagrams all look roughly like this, sometimes labeled with > + slightly different numbers / lines but all pretty much the same sequence: > + > + __________________________________________________ > + Vdd ___/: :\____ / > + _/ : : \_____/ > + :<T1>:<T2>: :<--T10-->:<T11>:<T12>: > + : +-----------------------+---------+---------+ > + eDP -----------+ Black video | Src vid | Blk vid + > + Display : +-----------------------+---------+---------+ > + : _______________________:_________:_________: > + HPD :<T3>| : : | > + ___________| : : |_____________ > + : : : : > + Sink +-----------------------:---------:---------+ > + AUX CH -----------+ AUX Ch operational : : +------------- > + +-----------------------:---------:---------+ > + : : : : > + :<T4>: :<T7>: : : > + Src main +------+------+--------------+---------+ > + lnk data----------------+LnkTrn| Idle |Valid vid data| Idle/off+------------- > + +------+------+--------------+---------+ > + : <T5> :<-T6->:<-T8->: : > + :__:<T9>: > + LED_EN | | > + _____________________________________| |____________________________ > + : : > + __________:__:_ > + PWM | : : | > + __________________________| : : |__________________________ > + : : : : > + _____________:__________:__:_:______ > + Bklight ____/: : : : : :\____ > + power _______/ :<---T13---->: : : :<T16>: \______________ > + (Vbl) :<T17>:<---------T14--------->: :<-T15->:<T18>: > + > + The above looks fairly complex but, as per above, each panel only cares > + about a subset of those timings. > + > +allOf: > + - $ref: panel-common.yaml# > + > +properties: > + compatible: > + items: > + - const: edp-panel > + > + # You can list a panel from panel-simple.yaml as a fallback which will edp-panel should be the fallback. If you want to define that in schema, then you need to add another case under a oneOf: items: - {} - const: edp-panel > + # be used for power sequence timings in case the operating system can't > + # auto-detect using the AUX bus. > + additionalItems: true > + minItems: 1 > + maxItems: 2 and then drop all this. > + > + hpd-reliable-delay: standard unit suffix needed > + $ref: /schemas/types.yaml#/definitions/uint32 Then you can drop this. > + description: > + A fixed amount of time (in milliseconds) that must be waited after > + powering on the panel's power-supply before the HPD signal is a reliable > + way to know when the AUX channel is ready. This is useful for panels > + that glitch the HPD at the start of power-on. This value is not needed > + if HPD is always reliable for all panels that might be connected. > + > + hpd-absent-delay: > + $ref: /schemas/types.yaml#/definitions/uint32 Same here. > + description: > + The panel specifies that HPD will be asserted this many milliseconds > + from power on (timing T3 in the diagram above). If we have no way to > + measure HPD then a fixed delay of this many milliseconds can be used. > + This can also be used as a timeout when waiting for HPD. Does not > + include the hpd-reliable-delay, so if hpd-reliable-delay was 80 ms > + and hpd-absent-delay was 200 ms then we'd do a fixed 80 ms delay and > + then we know HPD would assert in the next 120 ms. This value is not > + needed if HPD hooked up, either through a GPIO in the panel node or > + hooked up directly to the eDP controller. > + > + backlight: true > + enable-gpios: true > + port: true > + power-supply: true > + no-hpd: true > + hpd-gpios: true > + > +additionalProperties: false > + > +required: > + - compatible > + - power-supply > + > +examples: > + - | > + #include <dt-bindings/clock/qcom,rpmh.h> > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + bridge@2d { > + compatible = "ti,sn65dsi86"; > + reg = <0x2d>; > + > + interrupt-parent = <&tlmm>; > + interrupts = <10 IRQ_TYPE_LEVEL_HIGH>; > + > + enable-gpios = <&tlmm 102 GPIO_ACTIVE_HIGH>; > + > + vpll-supply = <&src_pp1800_s4a>; > + vccio-supply = <&src_pp1800_s4a>; > + vcca-supply = <&src_pp1200_l2a>; > + vcc-supply = <&src_pp1200_l2a>; > + > + clocks = <&rpmhcc RPMH_LN_BB_CLK2>; > + clock-names = "refclk"; > + > + no-hpd; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + endpoint { > + remote-endpoint = <&dsi0_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + sn65dsi86_out: endpoint { > + remote-endpoint = <&panel_in_edp>; > + }; > + }; > + }; > + > + aux-bus { > + panel { > + compatible = "edp-panel", "boe,nv133fhm-n62"; > + power-supply = <&pp3300_dx_edp>; > + backlight = <&backlight>; > + hpd-gpios = <&sn65dsi86_bridge 2 GPIO_ACTIVE_HIGH>; > + hpd-reliable-delay = <15>; > + > + port { > + panel_in_edp: endpoint { > + remote-endpoint = <&sn65dsi86_out>; > + }; > + }; > + }; > + }; > + }; > + }; > diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml > index 3624363938dd..a3ebd2bdbe1e 100644 > --- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml > +++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml > @@ -23,284 +23,287 @@ allOf: > - $ref: panel-common.yaml# > > properties: > - > compatible: > - enum: > - # compatible must be listed in alphabetical order, ordered by compatible. > - # The description in the comment is mandatory for each compatible. > + anyOf: > + - minItems: 1 > + - items: > + - const: edp-panel > + - enum: This is odd... I'm somewhat surprised it works with the dtschema fixups and 'select' generation code. > + # compatible must be listed in alphabetical order, ordered by compatible. > + # The description in the comment is mandatory for each compatible. > > - # Ampire AM-1280800N3TZQW-T00H 10.1" WQVGA TFT LCD panel > - - ampire,am-1280800n3tzqw-t00h > - # Ampire AM-480272H3TMQW-T01H 4.3" WQVGA TFT LCD panel > - - ampire,am-480272h3tmqw-t01h > - # Ampire AM-800480R3TMQW-A1H 7.0" WVGA TFT LCD panel > - - ampire,am800480r3tmqwa1h > - # AU Optronics Corporation 10.1" WSVGA TFT LCD panel > - - auo,b101aw03 > - # AU Optronics Corporation 10.1" WSVGA TFT LCD panel > - - auo,b101ean01 > - # AU Optronics Corporation 10.1" WXGA TFT LCD panel > - - auo,b101xtn01 > - # AUO B116XAK01 eDP TFT LCD panel > - - auo,b116xa01 > - # AU Optronics Corporation 11.6" HD (1366x768) color TFT-LCD panel > - - auo,b116xw03 > - # AU Optronics Corporation 13.3" FHD (1920x1080) color TFT-LCD panel > - - auo,b133htn01 > - # AU Optronics Corporation 13.3" WXGA (1366x768) TFT LCD panel > - - auo,b133xtn01 > - # AU Optronics Corporation 7.0" FHD (800 x 480) TFT LCD panel > - - auo,g070vvn01 > - # AU Optronics Corporation 10.1" (1280x800) color TFT LCD panel > - - auo,g101evn010 > - # AU Optronics Corporation 10.4" (800x600) color TFT LCD panel > - - auo,g104sn02 > - # AU Optronics Corporation 12.1" (1280x800) TFT LCD panel > - - auo,g121ean01 > - # AU Optronics Corporation 13.3" FHD (1920x1080) TFT LCD panel > - - auo,g133han01 > - # AU Optronics Corporation 15.6" (1366x768) TFT LCD panel > - - auo,g156xtn01 > - # AU Optronics Corporation 18.5" FHD (1920x1080) TFT LCD panel > - - auo,g185han01 > - # AU Optronics Corporation 19.0" (1280x1024) TFT LCD panel > - - auo,g190ean01 > - # AU Optronics Corporation 31.5" FHD (1920x1080) TFT LCD panel > - - auo,p320hvn03 > - # AU Optronics Corporation 21.5" FHD (1920x1080) color TFT LCD panel > - - auo,t215hvn01 > - # Shanghai AVIC Optoelectronics 7" 1024x600 color TFT-LCD panel > - - avic,tm070ddh03 > - # BOE HV070WSA-100 7.01" WSVGA TFT LCD panel > - - boe,hv070wsa-100 > - # BOE OPTOELECTRONICS TECHNOLOGY 10.1" WXGA TFT LCD panel > - - boe,nv101wxmn51 > - # BOE NV133FHM-N61 13.3" FHD (1920x1080) TFT LCD Panel > - - boe,nv110wtm-n61 > - # BOE NV110WTM-N61 11.0" 2160x1440 TFT LCD Panel > - - boe,nv133fhm-n61 > - # BOE NV133FHM-N62 13.3" FHD (1920x1080) TFT LCD Panel > - - boe,nv133fhm-n62 > - # BOE NV140FHM-N49 14.0" FHD a-Si FT panel > - - boe,nv140fhmn49 > - # CDTech(H.K.) Electronics Limited 4.3" 480x272 color TFT-LCD panel > - - cdtech,s043wq26h-ct7 > - # CDTech(H.K.) Electronics Limited 7" WSVGA (1024x600) TFT LCD Panel > - - cdtech,s070pws19hp-fc21 > - # CDTech(H.K.) Electronics Limited 7" WVGA (800x480) TFT LCD Panel > - - cdtech,s070swv29hg-dc44 > - # CDTech(H.K.) Electronics Limited 7" 800x480 color TFT-LCD panel > - - cdtech,s070wv95-ct16 > - # Chefree CH101OLHLWH-002 10.1" (1280x800) color TFT LCD panel > - - chefree,ch101olhlwh-002 > - # Chunghwa Picture Tubes Ltd. 7" WXGA TFT LCD panel > - - chunghwa,claa070wp03xg > - # Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel > - - chunghwa,claa101wa01a > - # Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel > - - chunghwa,claa101wb01 > - # Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel > - - chunghwa,claa101wb03 > - # DataImage, Inc. 7" WVGA (800x480) TFT LCD panel with 24-bit parallel interface. > - - dataimage,scf0700c48ggu18 > - # DLC Display Co. DLC1010GIG 10.1" WXGA TFT LCD Panel > - - dlc,dlc1010gig > - # Emerging Display Technology Corp. 3.5" QVGA TFT LCD panel > - - edt,et035012dm6 > - # Emerging Display Technology Corp. 5.7" VGA TFT LCD panel > - - edt,et057090dhu > - - edt,et070080dh6 > - # Emerging Display Technology Corp. 3.5" WVGA TFT LCD panel with > - # capacitive multitouch > - - edt,etm0350g0dh6 > - # Emerging Display Technology Corp. 480x272 TFT Display with capacitive touch > - - edt,etm043080dh6gp > - # Emerging Display Technology Corp. 480x272 TFT Display > - - edt,etm0430g0dh6 > - # Emerging Display Technology Corp. WVGA TFT Display with capacitive touch > - # Same as ETM0700G0DH6 but with inverted pixel clock. > - - edt,etm070080bdh6 > - # Emerging Display Technology Corp. WVGA TFT Display with capacitive touch > - # Same timings as the ETM0700G0DH6, but with resistive touch. > - - edt,etm070080dh6 > - # Emerging Display Technology Corp. WVGA TFT Display with capacitive touch > - # Same display as the ETM0700G0BDH6, but with changed hardware for the > - # backlight and the touch interface. > - - edt,etm070080edh6 > - - edt,etm0700g0bdh6 > - # Emerging Display Technology Corp. WVGA TFT Display with capacitive touch > - - edt,etm0700g0dh6 > - - edt,etm0700g0edh6 > - # Emerging Display Technology Corp. 5.7" VGA TFT LCD panel with > - # capacitive touch > - - edt,etmv570g2dhu > - # Evervision Electronics Co. Ltd. VGG804821 5.0" WVGA TFT LCD Panel > - - evervision,vgg804821 > - # Foxlink Group 5" WVGA TFT LCD panel > - - foxlink,fl500wvr00-a0t > - # Frida FRD350H54004 3.5" QVGA TFT LCD panel > - - frida,frd350h54004 > - # FriendlyELEC HD702E 800x1280 LCD panel > - - friendlyarm,hd702e > - # GiantPlus GPG48273QS5 4.3" (480x272) WQVGA TFT LCD panel > - - giantplus,gpg48273qs5 > - # GiantPlus GPM940B0 3.0" QVGA TFT LCD panel > - - giantplus,gpm940b0 > - # HannStar Display Corp. HSD070PWW1 7.0" WXGA TFT LCD panel > - - hannstar,hsd070pww1 > - # HannStar Display Corp. HSD100PXN1 10.1" XGA LVDS panel > - - hannstar,hsd100pxn1 > - # Hitachi Ltd. Corporation 9" WVGA (800x480) TFT LCD panel > - - hit,tx23d38vm0caa > - # InfoVision Optoelectronics M133NWF4 R0 13.3" FHD (1920x1080) TFT LCD panel > - - ivo,m133nwf4-r0 > - # Innolux AT043TN24 4.3" WQVGA TFT LCD panel > - - innolux,at043tn24 > - # Innolux AT070TN92 7.0" WQVGA TFT LCD panel > - - innolux,at070tn92 > - # Innolux G070Y2-L01 7" WVGA (800x480) TFT LCD panel > - - innolux,g070y2-l01 > - # Innolux Corporation 10.1" G101ICE-L01 WXGA (1280x800) LVDS panel > - - innolux,g101ice-l01 > - # Innolux Corporation 12.1" WXGA (1280x800) TFT LCD panel > - - innolux,g121i1-l01 > - # Innolux Corporation 12.1" G121X1-L03 XGA (1024x768) TFT LCD panel > - - innolux,g121x1-l03 > - # Innolux Corporation 11.6" WXGA (1366x768) TFT LCD panel > - - innolux,n116bca-ea1 > - # Innolux Corporation 11.6" WXGA (1366x768) TFT LCD panel > - - innolux,n116bge > - # InnoLux 13.3" FHD (1920x1080) eDP TFT LCD panel > - - innolux,n125hce-gn1 > - # InnoLux 15.6" WXGA TFT LCD panel > - - innolux,n156bge-l21 > - # Innolux Corporation 7.0" WSVGA (1024x600) TFT LCD panel > - - innolux,zj070na-01p > - # King & Display KD116N21-30NV-A010 eDP TFT LCD panel > - - kingdisplay,kd116n21-30nv-a010 > - # Kaohsiung Opto-Electronics Inc. 5.7" QVGA (320 x 240) TFT LCD panel > - - koe,tx14d24vm1bpa > - # Kaohsiung Opto-Electronics Inc. 10.1" WUXGA (1920 x 1200) LVDS TFT LCD panel > - - koe,tx26d202vm0bwa > - # Kaohsiung Opto-Electronics. TX31D200VM0BAA 12.3" HSXGA LVDS panel > - - koe,tx31d200vm0baa > - # Kyocera Corporation 7" WVGA (800x480) transmissive color TFT > - - kyo,tcg070wvlq > - # Kyocera Corporation 12.1" XGA (1024x768) TFT LCD panel > - - kyo,tcg121xglp > - # LeMaker BL035-RGB-002 3.5" QVGA TFT LCD panel > - - lemaker,bl035-rgb-002 > - # LG 7" (800x480 pixels) TFT LCD panel > - - lg,lb070wv8 > - # LG Corporation 5" HD TFT LCD panel > - - lg,lh500wx1-sd03 > - # LG LP079QX1-SP0V 7.9" (1536x2048 pixels) TFT LCD panel > - - lg,lp079qx1-sp0v > - # LG 9.7" (2048x1536 pixels) TFT LCD panel > - - lg,lp097qx1-spa1 > - # LG 12.0" (1920x1280 pixels) TFT LCD panel > - - lg,lp120up1 > - # LG 12.9" (2560x1700 pixels) TFT LCD panel > - - lg,lp129qe > - # Logic Technologies LT161010-2NHC 7" WVGA TFT Cap Touch Module > - - logictechno,lt161010-2nhc > - # Logic Technologies LT161010-2NHR 7" WVGA TFT Resistive Touch Module > - - logictechno,lt161010-2nhr > - # Logic Technologies LT170410-2WHC 10.1" 1280x800 IPS TFT Cap Touch Mod. > - - logictechno,lt170410-2whc > - # Mitsubishi "AA070MC01 7.0" WVGA TFT LCD panel > - - mitsubishi,aa070mc01-ca1 > - # NEC LCD Technologies, Ltd. 12.1" WXGA (1280x800) LVDS TFT LCD panel > - - nec,nl12880bc20-05 > - # NEC LCD Technologies,Ltd. WQVGA TFT LCD panel > - - nec,nl4827hc19-05b > - # Netron-DY E231732 7.0" WSVGA TFT LCD panel > - - netron-dy,e231732 > - # NewEast Optoelectronics CO., LTD WJFH116008A eDP TFT LCD panel > - - neweast,wjfh116008a > - # Newhaven Display International 480 x 272 TFT LCD panel > - - newhaven,nhd-4.3-480272ef-atxl > - # NLT Technologies, Ltd. 15.6" FHD (1920x1080) LVDS TFT LCD panel > - - nlt,nl192108ac18-02d > - # New Vision Display 7.0" 800 RGB x 480 TFT LCD panel > - - nvd,9128 > - # OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel > - - okaya,rs800480t-7x0gp > - # Olimex 4.3" TFT LCD panel > - - olimex,lcd-olinuxino-43-ts > - # On Tat Industrial Company 7" DPI TFT panel. > - - ontat,yx700wv03 > - # OrtusTech COM37H3M05DTC Blanview 3.7" VGA portrait TFT-LCD panel > - - ortustech,com37h3m05dtc > - # OrtusTech COM37H3M99DTC Blanview 3.7" VGA portrait TFT-LCD panel > - - ortustech,com37h3m99dtc > - # OrtusTech COM43H4M85ULC Blanview 3.7" TFT-LCD panel > - - ortustech,com43h4m85ulc > - # OSD Displays OSD070T1718-19TS 7" WVGA TFT LCD panel > - - osddisplays,osd070t1718-19ts > - # One Stop Displays OSD101T2045-53TS 10.1" 1920x1200 panel > - - osddisplays,osd101t2045-53ts > - # POWERTIP PH800480T013-IDF2 7.0" WVGA TFT LCD panel > - - powertip,ph800480t013-idf02 > - # QiaoDian XianShi Corporation 4"3 TFT LCD panel > - - qiaodian,qd43003c0-40 > - # Rocktech Displays Ltd. RK101II01D-CT 10.1" TFT 1280x800 > - - rocktech,rk101ii01d-ct > - # Rocktech Display Ltd. RK070ER9427 800(RGB)x480 TFT LCD panel > - - rocktech,rk070er9427 > - # Samsung 13.3" FHD (1920x1080 pixels) eDP AMOLED panel > - - samsung,atna33xc20 > - # Samsung 12.2" (2560x1600 pixels) TFT LCD panel > - - samsung,lsn122dl01-c01 > - # Samsung Electronics 10.1" WSVGA TFT LCD panel > - - samsung,ltn101nt05 > - # Samsung Electronics 14" WXGA (1366x768) TFT LCD panel > - - samsung,ltn140at29-301 > - # Satoz SAT050AT40H12R2 5.0" WVGA TFT LCD panel > - - satoz,sat050at40h12r2 > - # Sharp LQ035Q7DB03 3.5" QVGA TFT LCD panel > - - sharp,lq035q7db03 > - # Sharp LQ070Y3DG3B 7.0" WVGA landscape TFT LCD panel > - - sharp,lq070y3dg3b > - # Sharp Display Corp. LQ101K1LY04 10.07" WXGA TFT LCD panel > - - sharp,lq101k1ly04 > - # Sharp 12.3" (2400x1600 pixels) TFT LCD panel > - - sharp,lq123p1jx31 > - # Sharp LS020B1DD01D 2.0" HQVGA TFT LCD panel > - - sharp,ls020b1dd01d > - # Shelly SCA07010-BFN-LNN 7.0" WVGA TFT LCD panel > - - shelly,sca07010-bfn-lnn > - # Starry KR070PE2T 7" WVGA TFT LCD panel > - - starry,kr070pe2t > - # Starry 12.2" (1920x1200 pixels) TFT LCD panel > - - starry,kr122ea0sra > - # Tianma Micro-electronics TM070JDHG30 7.0" WXGA TFT LCD panel > - - tianma,tm070jdhg30 > - # Tianma Micro-electronics TM070JVHG33 7.0" WXGA TFT LCD panel > - - tianma,tm070jvhg33 > - # Tianma Micro-electronics TM070RVHG71 7.0" WXGA TFT LCD panel > - - tianma,tm070rvhg71 > - # Toshiba 8.9" WXGA (1280x768) TFT LCD panel > - - toshiba,lt089ac29000 > - # TPK U.S.A. LLC Fusion 7" 800 x 480 (WVGA) LCD panel with capacitive touch > - - tpk,f07a-0102 > - # TPK U.S.A. LLC Fusion 10.1" 1024 x 600 (WSVGA) LCD panel with capacitive touch > - - tpk,f10a-0102 > - # United Radiant Technology UMSH-8596MD-xT 7.0" WVGA TFT LCD panel > - # Supported are LVDS versions (-11T, -19T) and parallel ones > - # (-T, -1T, -7T, -20T). > - - urt,umsh-8596md-t > - - urt,umsh-8596md-1t > - - urt,umsh-8596md-7t > - - urt,umsh-8596md-11t > - - urt,umsh-8596md-19t > - - urt,umsh-8596md-20t > - # VXT 800x480 color TFT LCD panel > - - vxt,vl050-8048nt-c01 > - # Winstar Display Corporation 3.5" QVGA (320x240) TFT LCD panel > - - winstar,wf35ltiacd > - # Yes Optoelectronics YTC700TLAG-05-201C 7" TFT LCD panel > - - yes-optoelectronics,ytc700tlag-05-201c > + # Ampire AM-1280800N3TZQW-T00H 10.1" WQVGA TFT LCD panel > + - ampire,am-1280800n3tzqw-t00h > + # Ampire AM-480272H3TMQW-T01H 4.3" WQVGA TFT LCD panel > + - ampire,am-480272h3tmqw-t01h > + # Ampire AM-800480R3TMQW-A1H 7.0" WVGA TFT LCD panel > + - ampire,am800480r3tmqwa1h > + # AU Optronics Corporation 10.1" WSVGA TFT LCD panel > + - auo,b101aw03 > + # AU Optronics Corporation 10.1" WSVGA TFT LCD panel > + - auo,b101ean01 > + # AU Optronics Corporation 10.1" WXGA TFT LCD panel > + - auo,b101xtn01 > + # AUO B116XAK01 eDP TFT LCD panel > + - auo,b116xa01 > + # AU Optronics Corporation 11.6" HD (1366x768) color TFT-LCD panel > + - auo,b116xw03 > + # AU Optronics Corporation 13.3" FHD (1920x1080) color TFT-LCD panel > + - auo,b133htn01 > + # AU Optronics Corporation 13.3" WXGA (1366x768) TFT LCD panel > + - auo,b133xtn01 > + # AU Optronics Corporation 7.0" FHD (800 x 480) TFT LCD panel > + - auo,g070vvn01 > + # AU Optronics Corporation 10.1" (1280x800) color TFT LCD panel > + - auo,g101evn010 > + # AU Optronics Corporation 10.4" (800x600) color TFT LCD panel > + - auo,g104sn02 > + # AU Optronics Corporation 12.1" (1280x800) TFT LCD panel > + - auo,g121ean01 > + # AU Optronics Corporation 13.3" FHD (1920x1080) TFT LCD panel > + - auo,g133han01 > + # AU Optronics Corporation 15.6" (1366x768) TFT LCD panel > + - auo,g156xtn01 > + # AU Optronics Corporation 18.5" FHD (1920x1080) TFT LCD panel > + - auo,g185han01 > + # AU Optronics Corporation 19.0" (1280x1024) TFT LCD panel > + - auo,g190ean01 > + # AU Optronics Corporation 31.5" FHD (1920x1080) TFT LCD panel > + - auo,p320hvn03 > + # AU Optronics Corporation 21.5" FHD (1920x1080) color TFT LCD panel > + - auo,t215hvn01 > + # Shanghai AVIC Optoelectronics 7" 1024x600 color TFT-LCD panel > + - avic,tm070ddh03 > + # BOE HV070WSA-100 7.01" WSVGA TFT LCD panel > + - boe,hv070wsa-100 > + # BOE OPTOELECTRONICS TECHNOLOGY 10.1" WXGA TFT LCD panel > + - boe,nv101wxmn51 > + # BOE NV133FHM-N61 13.3" FHD (1920x1080) TFT LCD Panel > + - boe,nv110wtm-n61 > + # BOE NV110WTM-N61 11.0" 2160x1440 TFT LCD Panel > + - boe,nv133fhm-n61 > + # BOE NV133FHM-N62 13.3" FHD (1920x1080) TFT LCD Panel > + - boe,nv133fhm-n62 > + # BOE NV140FHM-N49 14.0" FHD a-Si FT panel > + - boe,nv140fhmn49 > + # CDTech(H.K.) Electronics Limited 4.3" 480x272 color TFT-LCD panel > + - cdtech,s043wq26h-ct7 > + # CDTech(H.K.) Electronics Limited 7" WSVGA (1024x600) TFT LCD Panel > + - cdtech,s070pws19hp-fc21 > + # CDTech(H.K.) Electronics Limited 7" WVGA (800x480) TFT LCD Panel > + - cdtech,s070swv29hg-dc44 > + # CDTech(H.K.) Electronics Limited 7" 800x480 color TFT-LCD panel > + - cdtech,s070wv95-ct16 > + # Chefree CH101OLHLWH-002 10.1" (1280x800) color TFT LCD panel > + - chefree,ch101olhlwh-002 > + # Chunghwa Picture Tubes Ltd. 7" WXGA TFT LCD panel > + - chunghwa,claa070wp03xg > + # Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel > + - chunghwa,claa101wa01a > + # Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel > + - chunghwa,claa101wb01 > + # Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel > + - chunghwa,claa101wb03 > + # DataImage, Inc. 7" WVGA (800x480) TFT LCD panel with 24-bit parallel interface. > + - dataimage,scf0700c48ggu18 > + # DLC Display Co. DLC1010GIG 10.1" WXGA TFT LCD Panel > + - dlc,dlc1010gig > + # Emerging Display Technology Corp. 3.5" QVGA TFT LCD panel > + - edt,et035012dm6 > + # Emerging Display Technology Corp. 5.7" VGA TFT LCD panel > + - edt,et057090dhu > + - edt,et070080dh6 > + # Emerging Display Technology Corp. 3.5" WVGA TFT LCD panel with > + # capacitive multitouch > + - edt,etm0350g0dh6 > + # Emerging Display Technology Corp. 480x272 TFT Display with capacitive touch > + - edt,etm043080dh6gp > + # Emerging Display Technology Corp. 480x272 TFT Display > + - edt,etm0430g0dh6 > + # Emerging Display Technology Corp. WVGA TFT Display with capacitive touch > + # Same as ETM0700G0DH6 but with inverted pixel clock. > + - edt,etm070080bdh6 > + # Emerging Display Technology Corp. WVGA TFT Display with capacitive touch > + # Same timings as the ETM0700G0DH6, but with resistive touch. > + - edt,etm070080dh6 > + # Emerging Display Technology Corp. WVGA TFT Display with capacitive touch > + # Same display as the ETM0700G0BDH6, but with changed hardware for the > + # backlight and the touch interface. > + - edt,etm070080edh6 > + - edt,etm0700g0bdh6 > + # Emerging Display Technology Corp. WVGA TFT Display with capacitive touch > + - edt,etm0700g0dh6 > + - edt,etm0700g0edh6 > + # Emerging Display Technology Corp. 5.7" VGA TFT LCD panel with > + # capacitive touch > + - edt,etmv570g2dhu > + # Evervision Electronics Co. Ltd. VGG804821 5.0" WVGA TFT LCD Panel > + - evervision,vgg804821 > + # Foxlink Group 5" WVGA TFT LCD panel > + - foxlink,fl500wvr00-a0t > + # Frida FRD350H54004 3.5" QVGA TFT LCD panel > + - frida,frd350h54004 > + # FriendlyELEC HD702E 800x1280 LCD panel > + - friendlyarm,hd702e > + # GiantPlus GPG48273QS5 4.3" (480x272) WQVGA TFT LCD panel > + - giantplus,gpg48273qs5 > + # GiantPlus GPM940B0 3.0" QVGA TFT LCD panel > + - giantplus,gpm940b0 > + # HannStar Display Corp. HSD070PWW1 7.0" WXGA TFT LCD panel > + - hannstar,hsd070pww1 > + # HannStar Display Corp. HSD100PXN1 10.1" XGA LVDS panel > + - hannstar,hsd100pxn1 > + # Hitachi Ltd. Corporation 9" WVGA (800x480) TFT LCD panel > + - hit,tx23d38vm0caa > + # InfoVision Optoelectronics M133NWF4 R0 13.3" FHD (1920x1080) TFT LCD panel > + - ivo,m133nwf4-r0 > + # Innolux AT043TN24 4.3" WQVGA TFT LCD panel > + - innolux,at043tn24 > + # Innolux AT070TN92 7.0" WQVGA TFT LCD panel > + - innolux,at070tn92 > + # Innolux G070Y2-L01 7" WVGA (800x480) TFT LCD panel > + - innolux,g070y2-l01 > + # Innolux Corporation 10.1" G101ICE-L01 WXGA (1280x800) LVDS panel > + - innolux,g101ice-l01 > + # Innolux Corporation 12.1" WXGA (1280x800) TFT LCD panel > + - innolux,g121i1-l01 > + # Innolux Corporation 12.1" G121X1-L03 XGA (1024x768) TFT LCD panel > + - innolux,g121x1-l03 > + # Innolux Corporation 11.6" WXGA (1366x768) TFT LCD panel > + - innolux,n116bca-ea1 > + # Innolux Corporation 11.6" WXGA (1366x768) TFT LCD panel > + - innolux,n116bge > + # InnoLux 13.3" FHD (1920x1080) eDP TFT LCD panel > + - innolux,n125hce-gn1 > + # InnoLux 15.6" WXGA TFT LCD panel > + - innolux,n156bge-l21 > + # Innolux Corporation 7.0" WSVGA (1024x600) TFT LCD panel > + - innolux,zj070na-01p > + # King & Display KD116N21-30NV-A010 eDP TFT LCD panel > + - kingdisplay,kd116n21-30nv-a010 > + # Kaohsiung Opto-Electronics Inc. 5.7" QVGA (320 x 240) TFT LCD panel > + - koe,tx14d24vm1bpa > + # Kaohsiung Opto-Electronics Inc. 10.1" WUXGA (1920 x 1200) LVDS TFT LCD panel > + - koe,tx26d202vm0bwa > + # Kaohsiung Opto-Electronics. TX31D200VM0BAA 12.3" HSXGA LVDS panel > + - koe,tx31d200vm0baa > + # Kyocera Corporation 7" WVGA (800x480) transmissive color TFT > + - kyo,tcg070wvlq > + # Kyocera Corporation 12.1" XGA (1024x768) TFT LCD panel > + - kyo,tcg121xglp > + # LeMaker BL035-RGB-002 3.5" QVGA TFT LCD panel > + - lemaker,bl035-rgb-002 > + # LG 7" (800x480 pixels) TFT LCD panel > + - lg,lb070wv8 > + # LG Corporation 5" HD TFT LCD panel > + - lg,lh500wx1-sd03 > + # LG LP079QX1-SP0V 7.9" (1536x2048 pixels) TFT LCD panel > + - lg,lp079qx1-sp0v > + # LG 9.7" (2048x1536 pixels) TFT LCD panel > + - lg,lp097qx1-spa1 > + # LG 12.0" (1920x1280 pixels) TFT LCD panel > + - lg,lp120up1 > + # LG 12.9" (2560x1700 pixels) TFT LCD panel > + - lg,lp129qe > + # Logic Technologies LT161010-2NHC 7" WVGA TFT Cap Touch Module > + - logictechno,lt161010-2nhc > + # Logic Technologies LT161010-2NHR 7" WVGA TFT Resistive Touch Module > + - logictechno,lt161010-2nhr > + # Logic Technologies LT170410-2WHC 10.1" 1280x800 IPS TFT Cap Touch Mod. > + - logictechno,lt170410-2whc > + # Mitsubishi "AA070MC01 7.0" WVGA TFT LCD panel > + - mitsubishi,aa070mc01-ca1 > + # NEC LCD Technologies, Ltd. 12.1" WXGA (1280x800) LVDS TFT LCD panel > + - nec,nl12880bc20-05 > + # NEC LCD Technologies,Ltd. WQVGA TFT LCD panel > + - nec,nl4827hc19-05b > + # Netron-DY E231732 7.0" WSVGA TFT LCD panel > + - netron-dy,e231732 > + # NewEast Optoelectronics CO., LTD WJFH116008A eDP TFT LCD panel > + - neweast,wjfh116008a > + # Newhaven Display International 480 x 272 TFT LCD panel > + - newhaven,nhd-4.3-480272ef-atxl > + # NLT Technologies, Ltd. 15.6" FHD (1920x1080) LVDS TFT LCD panel > + - nlt,nl192108ac18-02d > + # New Vision Display 7.0" 800 RGB x 480 TFT LCD panel > + - nvd,9128 > + # OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel > + - okaya,rs800480t-7x0gp > + # Olimex 4.3" TFT LCD panel > + - olimex,lcd-olinuxino-43-ts > + # On Tat Industrial Company 7" DPI TFT panel. > + - ontat,yx700wv03 > + # OrtusTech COM37H3M05DTC Blanview 3.7" VGA portrait TFT-LCD panel > + - ortustech,com37h3m05dtc > + # OrtusTech COM37H3M99DTC Blanview 3.7" VGA portrait TFT-LCD panel > + - ortustech,com37h3m99dtc > + # OrtusTech COM43H4M85ULC Blanview 3.7" TFT-LCD panel > + - ortustech,com43h4m85ulc > + # OSD Displays OSD070T1718-19TS 7" WVGA TFT LCD panel > + - osddisplays,osd070t1718-19ts > + # One Stop Displays OSD101T2045-53TS 10.1" 1920x1200 panel > + - osddisplays,osd101t2045-53ts > + # POWERTIP PH800480T013-IDF2 7.0" WVGA TFT LCD panel > + - powertip,ph800480t013-idf02 > + # QiaoDian XianShi Corporation 4"3 TFT LCD panel > + - qiaodian,qd43003c0-40 > + # Rocktech Displays Ltd. RK101II01D-CT 10.1" TFT 1280x800 > + - rocktech,rk101ii01d-ct > + # Rocktech Display Ltd. RK070ER9427 800(RGB)x480 TFT LCD panel > + - rocktech,rk070er9427 > + # Samsung 13.3" FHD (1920x1080 pixels) eDP AMOLED panel > + - samsung,atna33xc20 > + # Samsung 12.2" (2560x1600 pixels) TFT LCD panel > + - samsung,lsn122dl01-c01 > + # Samsung Electronics 10.1" WSVGA TFT LCD panel > + - samsung,ltn101nt05 > + # Samsung Electronics 14" WXGA (1366x768) TFT LCD panel > + - samsung,ltn140at29-301 > + # Satoz SAT050AT40H12R2 5.0" WVGA TFT LCD panel > + - satoz,sat050at40h12r2 > + # Sharp LQ035Q7DB03 3.5" QVGA TFT LCD panel > + - sharp,lq035q7db03 > + # Sharp LQ070Y3DG3B 7.0" WVGA landscape TFT LCD panel > + - sharp,lq070y3dg3b > + # Sharp Display Corp. LQ101K1LY04 10.07" WXGA TFT LCD panel > + - sharp,lq101k1ly04 > + # Sharp 12.3" (2400x1600 pixels) TFT LCD panel > + - sharp,lq123p1jx31 > + # Sharp LS020B1DD01D 2.0" HQVGA TFT LCD panel > + - sharp,ls020b1dd01d > + # Shelly SCA07010-BFN-LNN 7.0" WVGA TFT LCD panel > + - shelly,sca07010-bfn-lnn > + # Starry KR070PE2T 7" WVGA TFT LCD panel > + - starry,kr070pe2t > + # Starry 12.2" (1920x1200 pixels) TFT LCD panel > + - starry,kr122ea0sra > + # Tianma Micro-electronics TM070JDHG30 7.0" WXGA TFT LCD panel > + - tianma,tm070jdhg30 > + # Tianma Micro-electronics TM070JVHG33 7.0" WXGA TFT LCD panel > + - tianma,tm070jvhg33 > + # Tianma Micro-electronics TM070RVHG71 7.0" WXGA TFT LCD panel > + - tianma,tm070rvhg71 > + # Toshiba 8.9" WXGA (1280x768) TFT LCD panel > + - toshiba,lt089ac29000 > + # TPK U.S.A. LLC Fusion 7" 800 x 480 (WVGA) LCD panel with capacitive touch > + - tpk,f07a-0102 > + # TPK U.S.A. LLC Fusion 10.1" 1024 x 600 (WSVGA) LCD panel with capacitive touch > + - tpk,f10a-0102 > + # United Radiant Technology UMSH-8596MD-xT 7.0" WVGA TFT LCD panel > + # Supported are LVDS versions (-11T, -19T) and parallel ones > + # (-T, -1T, -7T, -20T). > + - urt,umsh-8596md-t > + - urt,umsh-8596md-1t > + - urt,umsh-8596md-7t > + - urt,umsh-8596md-11t > + - urt,umsh-8596md-19t > + - urt,umsh-8596md-20t > + # VXT 800x480 color TFT LCD panel > + - vxt,vl050-8048nt-c01 > + # Winstar Display Corporation 3.5" QVGA (320x240) TFT LCD panel > + - winstar,wf35ltiacd > + # Yes Optoelectronics YTC700TLAG-05-201C 7" TFT LCD panel > + - yes-optoelectronics,ytc700tlag-05-201c Well, this is going to cause every patch to conflict... IMO, you should move any applicable compatibles to the edp-panel schema. Also, I don't think you should add 'edp-panel' to them. If they can work better with the generic eDP driver, then that should be an internal kernel change without a DT change. Also, if 2 different drivers match on compatible, it's a roll of the dice which driver binds. Rob
Hi, On Thu, Jul 29, 2021 at 1:27 PM Rob Herring <robh@kernel.org> wrote: > > IMO, you should move any applicable compatibles to the edp-panel schema. > Also, I don't think you should add 'edp-panel' to them. If they can work > better with the generic eDP driver, then that should be an internal > kernel change without a DT change. Also, if 2 different drivers match on > compatible, it's a roll of the dice which driver binds. So overall what I was going for is this: 1. I want to be able to specify _just_ "edp-panel" for new boards. We'll make sure this is how it looks on devices that go through the factory and thus we can make sure that the driver can recognize all panels that get shipped. 2. For existing boards, I'd like to be able to move them to use "edp-panel" but I'm less confident that I can really say exactly what panels are out there in the field. Even though our device tree has always listed only one panel, in truth boards have shipped with more than one and they've just been "compatible enough" with each other (this "white lie" is what I'm trying to fix). If somehow the generic "edp-panel" doesn't recognize a panel then I wanted to be able to use the old timings we'd always had before as a "fallback". That means that logically I wanted "edp-panel" to be first and only fallback to the old compatible string if we didn't recognize the panel ID that came from the EDID. In truth, both compatible strings are handled by the same driver the driver patch I submitted tried to be smart. Perhaps that above is over ambitious and it'd be better to just drop the whole "fallback" concept. If a board manufacturer wants to start using the "edp-panel" concept then maybe the right idea is to force them to bump the "board id" and then we can pick a new device tree revision. Then we can make sure all boards that come out of the factory with that new "board id" can be identified properly in the EDID. This will also get rid of some of the complexity in the driver patch, which is nice. I'll plan on doing this and address your other feedback for a v2. -Doug