# 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
        # 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. 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
        # 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
        # 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
        # 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 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" 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

  backlight: 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>;
        };
      };
    };
