~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/display/panel/panel-edp.yaml

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2 %YAML 1.2
  3 ---
  4 $id: http://devicetree.org/schemas/display/panel/panel-edp.yaml#
  5 $schema: http://devicetree.org/meta-schemas/core.yaml#
  6 
  7 title: Probeable (via DP AUX / EDID) eDP Panels with simple poweron sequences
  8 
  9 maintainers:
 10   - Douglas Anderson <dianders@chromium.org>
 11 
 12 description: |
 13   This binding file can be used to indicate that an eDP panel is connected
 14   to a Embedded DisplayPort AUX bus (see display/dp-aux-bus.yaml) without
 15   actually specifying exactly what panel is connected. This is useful for
 16   the case that more than one different panel could be connected to the
 17   board, either for second-sourcing purposes or to support multiple SKUs
 18   with different LCDs that hook up to a common board.
 19 
 20   As per above, a requirement for using this binding is that the panel is
 21   represented under the DP AUX bus. This means that we can use any
 22   information provided by the DP AUX bus (including the EDID) to identify
 23   the panel. We can use this to identify display size, resolution, and
 24   timings among other things.
 25 
 26   One piece of information about eDP panels that is typically _not_
 27   provided anywhere on the DP AUX bus is the power sequencing timings.
 28   This is the reason why, historically, we've always had to explicitly
 29   list eDP panels. We solve that here with two tricks. The "worst case"
 30   power on timings for any panels expected to be connected to a board are
 31   specified in these bindings. Once we've powered on, it's expected that
 32   the operating system will lookup the panel in a table (based on EDID
 33   information) to figure out other power sequencing timings.
 34 
 35   eDP panels in general can have somewhat arbitrary power sequencing
 36   requirements. However, even though it's arbitrary in general, the
 37   vast majority of panel datasheets have a power sequence diagram that
 38   looks the exactly the same as every other panel. Each panel datasheet
 39   cares about different timings in this diagram but the fact that the
 40   diagram is so similar means we can come up with a single driver to
 41   handle it.
 42 
 43   These diagrams all look roughly like this, sometimes labeled with
 44   slightly different numbers / lines but all pretty much the same
 45   sequence. This is because much of this diagram comes straight from
 46   the eDP Standard.
 47 
 48                 __________________________________________________
 49   Vdd       ___/:                                                :\____       /
 50           _/    :                                                :     \_____/
 51            :<T1>:<T2>:                                 :<--T10-->:<T11>:<T12>:
 52                 :    +-----------------------+---------+---------+
 53   eDP     -----------+ Black video           | Src vid | Blk vid +
 54   Display       :    +-----------------------+---------+---------+
 55                 :     _______________________:_________:_________:
 56   HPD           :<T3>|                       :         :         |
 57           ___________|                       :         :         |_____________
 58                      :                       :         :         :
 59   Sink               +-----------------------:---------:---------+
 60   AUX CH  -----------+ AUX Ch operational    :         :         +-------------
 61                      +-----------------------:---------:---------+
 62                      :                       :         :         :
 63                      :<T4>:             :<T7>:         :         :
 64   Src main                +------+------+--------------+---------+
 65   lnk data----------------+LnkTrn| Idle |Valid vid data| Idle/off+-------------
 66                           +------+------+--------------+---------+
 67                           : <T5> :<-T6->:<-T8->:       :
 68                                                :__:<T9>:
 69   LED_EN                                       |  |
 70           _____________________________________|  |____________________________
 71                                                :  :
 72                                      __________:__:_
 73   PWM                               |          :  : |
 74           __________________________|          :  : |__________________________
 75                                     :          :  : :
 76                        _____________:__________:__:_:______
 77   Bklight         ____/:            :          :  : :     :\____
 78   power   _______/     :<---T13---->:          :  : :<T16>:     \______________
 79   (Vbl)          :<T17>:<---------T14--------->:  :<-T15->:<T18>:
 80 
 81   The above looks fairly complex but, as per above, each panel only cares
 82   about a subset of those timings.
 83 
 84 allOf:
 85   - $ref: panel-common.yaml#
 86 
 87 properties:
 88   compatible:
 89     const: edp-panel
 90 
 91   hpd-reliable-delay-ms:
 92     description:
 93       A fixed amount of time that must be waited after powering on the
 94       panel's power-supply before the HPD signal is a reliable way to know
 95       when the AUX channel is ready. This is useful for panels that glitch
 96       the HPD at the start of power-on. This value is not needed if HPD is
 97       always reliable for all panels that might be connected.
 98 
 99   hpd-absent-delay-ms:
100     description:
101       The panel specifies that HPD will be asserted this many milliseconds
102       from power on (timing T3 in the diagram above). If we have no way to
103       measure HPD then a fixed delay of this many milliseconds can be used.
104       This can also be used as a timeout when waiting for HPD. Does not
105       include the hpd-reliable-delay, so if hpd-reliable-delay was 80 ms
106       and hpd-absent-delay was 200 ms then we'd do a fixed 80 ms delay and
107       then we know HPD would assert in the next 120 ms. This value is not
108       needed if HPD hooked up, either through a GPIO in the panel node or
109       hooked up directly to the eDP controller.
110 
111   backlight: true
112   enable-gpios: true
113   port: true
114   power-supply: true
115   no-hpd: true
116   hpd-gpios: true
117 
118 additionalProperties: false
119 
120 required:
121   - compatible
122   - power-supply
123 
124 examples:
125   - |
126     #include <dt-bindings/clock/qcom,rpmh.h>
127     #include <dt-bindings/gpio/gpio.h>
128     #include <dt-bindings/interrupt-controller/irq.h>
129 
130     i2c {
131       #address-cells = <1>;
132       #size-cells = <0>;
133 
134       bridge@2d {
135         compatible = "ti,sn65dsi86";
136         reg = <0x2d>;
137 
138         interrupt-parent = <&tlmm>;
139         interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
140 
141         enable-gpios = <&tlmm 102 GPIO_ACTIVE_HIGH>;
142 
143         vpll-supply = <&src_pp1800_s4a>;
144         vccio-supply = <&src_pp1800_s4a>;
145         vcca-supply = <&src_pp1200_l2a>;
146         vcc-supply = <&src_pp1200_l2a>;
147 
148         clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
149         clock-names = "refclk";
150 
151         no-hpd;
152 
153         ports {
154           #address-cells = <1>;
155           #size-cells = <0>;
156 
157           port@0 {
158             reg = <0>;
159             endpoint {
160               remote-endpoint = <&dsi0_out>;
161             };
162           };
163 
164           port@1 {
165             reg = <1>;
166             sn65dsi86_out: endpoint {
167               remote-endpoint = <&panel_in_edp>;
168             };
169           };
170         };
171 
172         aux-bus {
173           panel {
174             compatible = "edp-panel";
175             power-supply = <&pp3300_dx_edp>;
176             backlight = <&backlight>;
177             hpd-gpios = <&sn65dsi86_bridge 2 GPIO_ACTIVE_HIGH>;
178             hpd-reliable-delay-ms = <15>;
179 
180             port {
181               panel_in_edp: endpoint {
182                 remote-endpoint = <&sn65dsi86_out>;
183               };
184             };
185           };
186         };
187       };
188     };

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php