dt-bindings: Fix SPI and I2C bus node names in examples
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / display / solomon,ssd1307fb.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/display/solomon,ssd1307fb.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Solomon SSD1307 OLED Controller Framebuffer
8
9 maintainers:
10   - Maxime Ripard <mripard@kernel.org>
11   - Javier Martinez Canillas <javierm@redhat.com>
12
13 properties:
14   compatible:
15     oneOf:
16       # Deprecated compatible strings
17       - items:
18           - enum:
19               - solomon,ssd1305fb-i2c
20               - solomon,ssd1306fb-i2c
21               - solomon,ssd1307fb-i2c
22               - solomon,ssd1309fb-i2c
23         deprecated: true
24       - items:
25           - enum:
26               - sinowealth,sh1106
27               - solomon,ssd1305
28               - solomon,ssd1306
29               - solomon,ssd1307
30               - solomon,ssd1309
31
32   reg:
33     maxItems: 1
34
35   pwms:
36     maxItems: 1
37
38   reset-gpios:
39     maxItems: 1
40
41   # Only required for SPI
42   dc-gpios:
43     description:
44       GPIO connected to the controller's D/C# (Data/Command) pin,
45       that is needed for 4-wire SPI to tell the controller if the
46       data sent is for a command register or the display data RAM
47     maxItems: 1
48
49   vbat-supply:
50     description: The supply for VBAT
51
52   solomon,height:
53     $ref: /schemas/types.yaml#/definitions/uint32
54     default: 16
55     description:
56       Height in pixel of the screen driven by the controller
57
58   solomon,width:
59     $ref: /schemas/types.yaml#/definitions/uint32
60     default: 96
61     description:
62       Width in pixel of the screen driven by the controller
63
64   solomon,page-offset:
65     $ref: /schemas/types.yaml#/definitions/uint32
66     default: 1
67     description:
68       Offset of pages (band of 8 pixels) that the screen is mapped to
69
70   solomon,segment-no-remap:
71     type: boolean
72     description:
73       Display needs normal (non-inverted) data column to segment mapping
74
75   solomon,col-offset:
76     $ref: /schemas/types.yaml#/definitions/uint32
77     default: 0
78     description:
79       Offset of columns (COL/SEG) that the screen is mapped to
80
81   solomon,com-seq:
82     type: boolean
83     description:
84       Display uses sequential COM pin configuration
85
86   solomon,com-lrremap:
87     type: boolean
88     description:
89       Display uses left-right COM pin remap
90
91   solomon,com-invdir:
92     type: boolean
93     description:
94       Display uses inverted COM pin scan direction
95
96   solomon,com-offset:
97     $ref: /schemas/types.yaml#/definitions/uint32
98     default: 0
99     description:
100       Number of the COM pin wired to the first display line
101
102   solomon,prechargep1:
103     $ref: /schemas/types.yaml#/definitions/uint32
104     default: 2
105     description:
106       Length of deselect period (phase 1) in clock cycles
107
108   solomon,prechargep2:
109     $ref: /schemas/types.yaml#/definitions/uint32
110     default: 2
111     description:
112       Length of precharge period (phase 2) in clock cycles.  This needs to be
113       the higher, the higher the capacitance of the OLED's pixels is.
114
115   solomon,dclk-div:
116     $ref: /schemas/types.yaml#/definitions/uint32
117     minimum: 1
118     maximum: 16
119     description:
120       Clock divisor. The default value is controller-dependent.
121
122   solomon,dclk-frq:
123     $ref: /schemas/types.yaml#/definitions/uint32
124     minimum: 0
125     maximum: 15
126     description:
127       Clock frequency, higher value means higher frequency.
128       The default value is controller-dependent.
129
130   solomon,lookup-table:
131     $ref: /schemas/types.yaml#/definitions/uint8-array
132     maxItems: 4
133     description:
134       8 bit value array of current drive pulse widths for BANK0, and colors A,
135       B, and C. Each value in range of 31 to 63 for pulse widths of 32 to 64.
136       Color D is always width 64.
137
138   solomon,area-color-enable:
139     type: boolean
140     description:
141       Display uses color mode
142
143   solomon,low-power:
144     type: boolean
145     description:
146       Display runs in low power mode
147
148 required:
149   - compatible
150   - reg
151
152 allOf:
153   - $ref: /schemas/spi/spi-peripheral-props.yaml#
154
155   - if:
156       properties:
157         compatible:
158           contains:
159             const: sinowealth,sh1106
160     then:
161       properties:
162         solomon,dclk-div:
163           default: 1
164         solomon,dclk-frq:
165           default: 5
166
167   - if:
168       properties:
169         compatible:
170           contains:
171             enum:
172               - solomon,ssd1305-i2c
173               - solomon,ssd1305
174     then:
175       properties:
176         solomon,dclk-div:
177           default: 1
178         solomon,dclk-frq:
179           default: 7
180
181   - if:
182       properties:
183         compatible:
184           contains:
185             enum:
186               - solomon,ssd1306-i2c
187               - solomon,ssd1306
188     then:
189       properties:
190         solomon,dclk-div:
191           default: 1
192         solomon,dclk-frq:
193           default: 8
194
195   - if:
196       properties:
197         compatible:
198           contains:
199             enum:
200               - solomon,ssd1307-i2c
201               - solomon,ssd1307
202     then:
203       properties:
204         solomon,dclk-div:
205           default: 2
206         solomon,dclk-frq:
207           default: 12
208       required:
209         - pwms
210
211   - if:
212       properties:
213         compatible:
214           contains:
215             enum:
216               - solomon,ssd1309-i2c
217               - solomon,ssd1309
218     then:
219       properties:
220         solomon,dclk-div:
221           default: 1
222         solomon,dclk-frq:
223           default: 10
224
225 unevaluatedProperties: false
226
227 examples:
228   - |
229     i2c {
230             #address-cells = <1>;
231             #size-cells = <0>;
232
233             ssd1307_i2c: oled@3c {
234                     compatible = "solomon,ssd1307";
235                     reg = <0x3c>;
236                     pwms = <&pwm 4 3000>;
237                     reset-gpios = <&gpio2 7>;
238             };
239
240             ssd1306_i2c: oled@3d {
241                     compatible = "solomon,ssd1306";
242                     reg = <0x3d>;
243                     pwms = <&pwm 4 3000>;
244                     reset-gpios = <&gpio2 7>;
245                     solomon,com-lrremap;
246                     solomon,com-invdir;
247                     solomon,com-offset = <32>;
248                     solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>;
249             };
250     };
251   - |
252     spi {
253             #address-cells = <1>;
254             #size-cells = <0>;
255
256             ssd1307_spi: oled@0 {
257                     compatible = "solomon,ssd1307";
258                     reg = <0x0>;
259                     pwms = <&pwm 4 3000>;
260                     reset-gpios = <&gpio2 7>;
261                     dc-gpios = <&gpio2 8>;
262                     spi-max-frequency = <10000000>;
263             };
264
265             ssd1306_spi: oled@1 {
266                     compatible = "solomon,ssd1306";
267                     reg = <0x1>;
268                     pwms = <&pwm 4 3000>;
269                     reset-gpios = <&gpio2 7>;
270                     dc-gpios = <&gpio2 8>;
271                     spi-max-frequency = <10000000>;
272                     solomon,com-lrremap;
273                     solomon,com-invdir;
274                     solomon,com-offset = <32>;
275                     solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>;
276             };
277     };