# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/panel-simple.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Simple panels with one power supply

maintainers:
  - Thierry Reding <thierry.reding@gmail.com>
  - Sam Ravnborg <sam@ravnborg.org>

description: |
  This binding file is a collection of the simple (dumb) panels that
  requires only a single power-supply.
  There are optionally a backlight and an enable GPIO.
  The panel may use an OF graph binding for the association to the display,
  or it may be a direct child node of the display.

  If the panel is more advanced a dedicated binding file is required.

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.

        # 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
        # Ampire AM-800600P5TMQW-TB8H 8.0" SVGA TFT LCD panel
      - ampire,am800600p5tmqw-tb8h
        # 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,b133han05
        # 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 14.0" FHD (1920x1080) color TFT-LCD panel
      - auo,b140han06
        # 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. 4.3" WQVGA (480x272) TFT LCD panel with 24-bit parallel interface.
      - dataimage,fg040346dsswbg04
        # DataImage, Inc. 10.1" WXGA (1280×800) TFT LCD panel
      - dataimage,fg1001l0dsswmg01
        # 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. LVDS WSVGA TFT Display with capacitive touch
      - edt,etml0700y5dha
        # Emerging Display Technology Corp. 5.7" VGA TFT LCD panel with
        # capacitive touch
      - edt,etmv570g2dhu
        # E Ink VB3300-KCA
      - eink,vb3300-kca
        # 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
        # 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
      - 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 G070Y2-T02 7" WVGA (800x480) TFT LCD TTL panel
      - innolux,g070y2-t02
        # 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
        # Logic Technologies LTTD800x480 L2RT 7" 800x480 TFT Resistive Touch Module
      - logictechno,lttd800480070-l2rt
        # Logic Technologies LTTD800480070-L6WH-RT 7” 800x480 TFT Resistive Touch Module
      - logictechno,lttd800480070-l6wh-rt
        # Mitsubishi "AA070MC01 7.0" WVGA TFT LCD panel
      - mitsubishi,aa070mc01-ca1
        # Multi-Inno Technology Co.,Ltd MI0700S4T-6 7" 800x480 TFT Resistive Touch Module
      - multi-inno,mi0700s4t-6
        # Multi-Inno Technology Co.,Ltd MI0800FT-9 8" 800x600 TFT Resistive Touch Module
      - multi-inno,mi0800ft-9
        # Multi-Inno Technology Co.,Ltd MI1010AIT-1CP 10.1" 1280x800 LVDS IPS Cap Touch Mod.
      - multi-inno,mi1010ait-1cp
        # 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
        # Shenzhen QiShenglong Industrialist Co., Ltd. Gopher 2b 4.3" 480(RGB)x272 TFT LCD panel
      - qishenglong,gopher2b-lcd
        # 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" WXGA (1280x800) TFT LCD panel
      - samsung,ltl101al01
        # 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 14" (1920x1080 pixels) TFT LCD panel
      - sharp,lq140m1jw46
        # 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
        # Startek KD070WVFPA043-C069A 7" TFT LCD panel
      - startek,kd070wvfpa
        # Team Source Display Technology TST043015CMHX 4.3" WQVGA TFT LCD panel
      - team-source-display,tst043015cmhx
        # 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
        # Vivax TPC-9150 tablet 9.0" WSVGA TFT LCD panel
      - vivax,tpc9150-panel
        # 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

  backlight: true
  ddc-i2c-bus: true
  enable-gpios: true
  port: true
  power-supply: true
  no-hpd: true
  hpd-gpios: true

additionalProperties: false

required:
  - compatible
  - power-supply

examples:
  - |
    panel_rgb: panel-rgb {
      compatible = "ampire,am-480272h3tmqw-t01h";
      power-supply = <&vcc_lcd_reg>;

      port {
        panel_in_rgb: endpoint {
          remote-endpoint = <&ltdc_out_rgb>;
        };
      };
    };
