xref: /openbmc/linux/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
11f49bf8bSGeert Uytterhoeven# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
21f49bf8bSGeert Uytterhoeven%YAML 1.2
31f49bf8bSGeert Uytterhoeven---
41f49bf8bSGeert Uytterhoeven$id: http://devicetree.org/schemas/display/solomon,ssd1307fb.yaml#
51f49bf8bSGeert Uytterhoeven$schema: http://devicetree.org/meta-schemas/core.yaml#
61f49bf8bSGeert Uytterhoeven
71f49bf8bSGeert Uytterhoeventitle: Solomon SSD1307 OLED Controller Framebuffer
81f49bf8bSGeert Uytterhoeven
91f49bf8bSGeert Uytterhoevenmaintainers:
101f49bf8bSGeert Uytterhoeven  - Maxime Ripard <mripard@kernel.org>
1121d26b39SJavier Martinez Canillas  - Javier Martinez Canillas <javierm@redhat.com>
121f49bf8bSGeert Uytterhoeven
131f49bf8bSGeert Uytterhoevenproperties:
141f49bf8bSGeert Uytterhoeven  compatible:
1536bf0611SJavier Martinez Canillas    oneOf:
1636bf0611SJavier Martinez Canillas      # Deprecated compatible strings
1736bf0611SJavier Martinez Canillas      - enum:
181f49bf8bSGeert Uytterhoeven          - solomon,ssd1305fb-i2c
191f49bf8bSGeert Uytterhoeven          - solomon,ssd1306fb-i2c
201f49bf8bSGeert Uytterhoeven          - solomon,ssd1307fb-i2c
211f49bf8bSGeert Uytterhoeven          - solomon,ssd1309fb-i2c
2236bf0611SJavier Martinez Canillas        deprecated: true
2336bf0611SJavier Martinez Canillas      - enum:
2436bf0611SJavier Martinez Canillas          - sinowealth,sh1106
2536bf0611SJavier Martinez Canillas          - solomon,ssd1305
2636bf0611SJavier Martinez Canillas          - solomon,ssd1306
2736bf0611SJavier Martinez Canillas          - solomon,ssd1307
2836bf0611SJavier Martinez Canillas          - solomon,ssd1309
291f49bf8bSGeert Uytterhoeven
301f49bf8bSGeert Uytterhoeven  reg:
311f49bf8bSGeert Uytterhoeven    maxItems: 1
321f49bf8bSGeert Uytterhoeven
331f49bf8bSGeert Uytterhoeven  pwms:
341f49bf8bSGeert Uytterhoeven    maxItems: 1
351f49bf8bSGeert Uytterhoeven
361f49bf8bSGeert Uytterhoeven  reset-gpios:
371f49bf8bSGeert Uytterhoeven    maxItems: 1
381f49bf8bSGeert Uytterhoeven
391b6a7961SJavier Martinez Canillas  # Only required for SPI
401b6a7961SJavier Martinez Canillas  dc-gpios:
411b6a7961SJavier Martinez Canillas    description:
421b6a7961SJavier Martinez Canillas      GPIO connected to the controller's D/C# (Data/Command) pin,
431b6a7961SJavier Martinez Canillas      that is needed for 4-wire SPI to tell the controller if the
441b6a7961SJavier Martinez Canillas      data sent is for a command register or the display data RAM
451b6a7961SJavier Martinez Canillas    maxItems: 1
461b6a7961SJavier Martinez Canillas
471f49bf8bSGeert Uytterhoeven  vbat-supply:
481f49bf8bSGeert Uytterhoeven    description: The supply for VBAT
491f49bf8bSGeert Uytterhoeven
501f49bf8bSGeert Uytterhoeven  solomon,height:
511f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
521f49bf8bSGeert Uytterhoeven    description:
53*591825fbSJavier Martinez Canillas      Height in pixel of the screen driven by the controller.
54*591825fbSJavier Martinez Canillas      The default value is controller-dependent.
551f49bf8bSGeert Uytterhoeven
561f49bf8bSGeert Uytterhoeven  solomon,width:
571f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
581f49bf8bSGeert Uytterhoeven    description:
59*591825fbSJavier Martinez Canillas      Width in pixel of the screen driven by the controller.
60*591825fbSJavier Martinez Canillas      The default value is controller-dependent.
611f49bf8bSGeert Uytterhoeven
621f49bf8bSGeert Uytterhoeven  solomon,page-offset:
631f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
641f49bf8bSGeert Uytterhoeven    default: 1
651f49bf8bSGeert Uytterhoeven    description:
661f49bf8bSGeert Uytterhoeven      Offset of pages (band of 8 pixels) that the screen is mapped to
671f49bf8bSGeert Uytterhoeven
681f49bf8bSGeert Uytterhoeven  solomon,segment-no-remap:
691f49bf8bSGeert Uytterhoeven    type: boolean
701f49bf8bSGeert Uytterhoeven    description:
711f49bf8bSGeert Uytterhoeven      Display needs normal (non-inverted) data column to segment mapping
721f49bf8bSGeert Uytterhoeven
731f49bf8bSGeert Uytterhoeven  solomon,col-offset:
741f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
751f49bf8bSGeert Uytterhoeven    default: 0
761f49bf8bSGeert Uytterhoeven    description:
771f49bf8bSGeert Uytterhoeven      Offset of columns (COL/SEG) that the screen is mapped to
781f49bf8bSGeert Uytterhoeven
791f49bf8bSGeert Uytterhoeven  solomon,com-seq:
801f49bf8bSGeert Uytterhoeven    type: boolean
811f49bf8bSGeert Uytterhoeven    description:
821f49bf8bSGeert Uytterhoeven      Display uses sequential COM pin configuration
831f49bf8bSGeert Uytterhoeven
841f49bf8bSGeert Uytterhoeven  solomon,com-lrremap:
851f49bf8bSGeert Uytterhoeven    type: boolean
861f49bf8bSGeert Uytterhoeven    description:
871f49bf8bSGeert Uytterhoeven      Display uses left-right COM pin remap
881f49bf8bSGeert Uytterhoeven
891f49bf8bSGeert Uytterhoeven  solomon,com-invdir:
901f49bf8bSGeert Uytterhoeven    type: boolean
911f49bf8bSGeert Uytterhoeven    description:
921f49bf8bSGeert Uytterhoeven      Display uses inverted COM pin scan direction
931f49bf8bSGeert Uytterhoeven
941f49bf8bSGeert Uytterhoeven  solomon,com-offset:
951f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
961f49bf8bSGeert Uytterhoeven    default: 0
971f49bf8bSGeert Uytterhoeven    description:
981f49bf8bSGeert Uytterhoeven      Number of the COM pin wired to the first display line
991f49bf8bSGeert Uytterhoeven
1001f49bf8bSGeert Uytterhoeven  solomon,prechargep1:
1011f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
1021f49bf8bSGeert Uytterhoeven    default: 2
1031f49bf8bSGeert Uytterhoeven    description:
1041f49bf8bSGeert Uytterhoeven      Length of deselect period (phase 1) in clock cycles
1051f49bf8bSGeert Uytterhoeven
1061f49bf8bSGeert Uytterhoeven  solomon,prechargep2:
1071f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
1081f49bf8bSGeert Uytterhoeven    default: 2
1091f49bf8bSGeert Uytterhoeven    description:
1101f49bf8bSGeert Uytterhoeven      Length of precharge period (phase 2) in clock cycles.  This needs to be
1111f49bf8bSGeert Uytterhoeven      the higher, the higher the capacitance of the OLED's pixels is.
1121f49bf8bSGeert Uytterhoeven
1131f49bf8bSGeert Uytterhoeven  solomon,dclk-div:
1141f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
1151f49bf8bSGeert Uytterhoeven    minimum: 1
1161f49bf8bSGeert Uytterhoeven    maximum: 16
1171f49bf8bSGeert Uytterhoeven    description:
1181f49bf8bSGeert Uytterhoeven      Clock divisor. The default value is controller-dependent.
1191f49bf8bSGeert Uytterhoeven
1201f49bf8bSGeert Uytterhoeven  solomon,dclk-frq:
1211f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint32
1221f49bf8bSGeert Uytterhoeven    minimum: 0
1231f49bf8bSGeert Uytterhoeven    maximum: 15
1241f49bf8bSGeert Uytterhoeven    description:
1251f49bf8bSGeert Uytterhoeven      Clock frequency, higher value means higher frequency.
1261f49bf8bSGeert Uytterhoeven      The default value is controller-dependent.
1271f49bf8bSGeert Uytterhoeven
1281f49bf8bSGeert Uytterhoeven  solomon,lookup-table:
1291f49bf8bSGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/uint8-array
1301f49bf8bSGeert Uytterhoeven    maxItems: 4
1311f49bf8bSGeert Uytterhoeven    description:
1321f49bf8bSGeert Uytterhoeven      8 bit value array of current drive pulse widths for BANK0, and colors A,
1331f49bf8bSGeert Uytterhoeven      B, and C. Each value in range of 31 to 63 for pulse widths of 32 to 64.
1341f49bf8bSGeert Uytterhoeven      Color D is always width 64.
1351f49bf8bSGeert Uytterhoeven
1361f49bf8bSGeert Uytterhoeven  solomon,area-color-enable:
1371f49bf8bSGeert Uytterhoeven    type: boolean
1381f49bf8bSGeert Uytterhoeven    description:
1391f49bf8bSGeert Uytterhoeven      Display uses color mode
1401f49bf8bSGeert Uytterhoeven
1411f49bf8bSGeert Uytterhoeven  solomon,low-power:
1421f49bf8bSGeert Uytterhoeven    type: boolean
1431f49bf8bSGeert Uytterhoeven    description:
1441f49bf8bSGeert Uytterhoeven      Display runs in low power mode
1451f49bf8bSGeert Uytterhoeven
1461f49bf8bSGeert Uytterhoevenrequired:
1471f49bf8bSGeert Uytterhoeven  - compatible
1481f49bf8bSGeert Uytterhoeven  - reg
1491f49bf8bSGeert Uytterhoeven
1501f49bf8bSGeert UytterhoevenallOf:
151944ad762SKrzysztof Kozlowski  - $ref: /schemas/spi/spi-peripheral-props.yaml#
152944ad762SKrzysztof Kozlowski
1531f49bf8bSGeert Uytterhoeven  - if:
1541f49bf8bSGeert Uytterhoeven      properties:
1551f49bf8bSGeert Uytterhoeven        compatible:
1561f49bf8bSGeert Uytterhoeven          contains:
15736bf0611SJavier Martinez Canillas            const: sinowealth,sh1106
15897a40c23SChen-Yu Tsai    then:
15997a40c23SChen-Yu Tsai      properties:
160*591825fbSJavier Martinez Canillas        width:
161*591825fbSJavier Martinez Canillas          default: 132
162*591825fbSJavier Martinez Canillas        height:
163*591825fbSJavier Martinez Canillas          default: 64
16497a40c23SChen-Yu Tsai        solomon,dclk-div:
16597a40c23SChen-Yu Tsai          default: 1
16697a40c23SChen-Yu Tsai        solomon,dclk-frq:
16797a40c23SChen-Yu Tsai          default: 5
16897a40c23SChen-Yu Tsai
16997a40c23SChen-Yu Tsai  - if:
17097a40c23SChen-Yu Tsai      properties:
17197a40c23SChen-Yu Tsai        compatible:
17297a40c23SChen-Yu Tsai          contains:
17336bf0611SJavier Martinez Canillas            enum:
17436bf0611SJavier Martinez Canillas              - solomon,ssd1305-i2c
17536bf0611SJavier Martinez Canillas              - solomon,ssd1305
1761f49bf8bSGeert Uytterhoeven    then:
1771f49bf8bSGeert Uytterhoeven      properties:
178*591825fbSJavier Martinez Canillas        width:
179*591825fbSJavier Martinez Canillas          default: 132
180*591825fbSJavier Martinez Canillas        height:
181*591825fbSJavier Martinez Canillas          default: 64
1821f49bf8bSGeert Uytterhoeven        solomon,dclk-div:
1831f49bf8bSGeert Uytterhoeven          default: 1
1841f49bf8bSGeert Uytterhoeven        solomon,dclk-frq:
1851f49bf8bSGeert Uytterhoeven          default: 7
1861f49bf8bSGeert Uytterhoeven
1871f49bf8bSGeert Uytterhoeven  - if:
1881f49bf8bSGeert Uytterhoeven      properties:
1891f49bf8bSGeert Uytterhoeven        compatible:
1901f49bf8bSGeert Uytterhoeven          contains:
19136bf0611SJavier Martinez Canillas            enum:
19236bf0611SJavier Martinez Canillas              - solomon,ssd1306-i2c
19336bf0611SJavier Martinez Canillas              - solomon,ssd1306
1941f49bf8bSGeert Uytterhoeven    then:
1951f49bf8bSGeert Uytterhoeven      properties:
196*591825fbSJavier Martinez Canillas        width:
197*591825fbSJavier Martinez Canillas          default: 128
198*591825fbSJavier Martinez Canillas        height:
199*591825fbSJavier Martinez Canillas          default: 64
2001f49bf8bSGeert Uytterhoeven        solomon,dclk-div:
2011f49bf8bSGeert Uytterhoeven          default: 1
2021f49bf8bSGeert Uytterhoeven        solomon,dclk-frq:
2031f49bf8bSGeert Uytterhoeven          default: 8
2041f49bf8bSGeert Uytterhoeven
2051f49bf8bSGeert Uytterhoeven  - if:
2061f49bf8bSGeert Uytterhoeven      properties:
2071f49bf8bSGeert Uytterhoeven        compatible:
2081f49bf8bSGeert Uytterhoeven          contains:
20936bf0611SJavier Martinez Canillas            enum:
21036bf0611SJavier Martinez Canillas              - solomon,ssd1307-i2c
21136bf0611SJavier Martinez Canillas              - solomon,ssd1307
2121f49bf8bSGeert Uytterhoeven    then:
2131f49bf8bSGeert Uytterhoeven      properties:
214*591825fbSJavier Martinez Canillas        width:
215*591825fbSJavier Martinez Canillas          default: 128
216*591825fbSJavier Martinez Canillas        height:
217*591825fbSJavier Martinez Canillas          default: 39
2181f49bf8bSGeert Uytterhoeven        solomon,dclk-div:
2191f49bf8bSGeert Uytterhoeven          default: 2
2201f49bf8bSGeert Uytterhoeven        solomon,dclk-frq:
2211f49bf8bSGeert Uytterhoeven          default: 12
2221f49bf8bSGeert Uytterhoeven      required:
2231f49bf8bSGeert Uytterhoeven        - pwms
2241f49bf8bSGeert Uytterhoeven
2251f49bf8bSGeert Uytterhoeven  - if:
2261f49bf8bSGeert Uytterhoeven      properties:
2271f49bf8bSGeert Uytterhoeven        compatible:
2281f49bf8bSGeert Uytterhoeven          contains:
22936bf0611SJavier Martinez Canillas            enum:
23036bf0611SJavier Martinez Canillas              - solomon,ssd1309-i2c
23136bf0611SJavier Martinez Canillas              - solomon,ssd1309
2321f49bf8bSGeert Uytterhoeven    then:
2331f49bf8bSGeert Uytterhoeven      properties:
234*591825fbSJavier Martinez Canillas        width:
235*591825fbSJavier Martinez Canillas          default: 128
236*591825fbSJavier Martinez Canillas        height:
237*591825fbSJavier Martinez Canillas          default: 64
2381f49bf8bSGeert Uytterhoeven        solomon,dclk-div:
2391f49bf8bSGeert Uytterhoeven          default: 1
2401f49bf8bSGeert Uytterhoeven        solomon,dclk-frq:
2411f49bf8bSGeert Uytterhoeven          default: 10
2421f49bf8bSGeert Uytterhoeven
243944ad762SKrzysztof KozlowskiunevaluatedProperties: false
2441f49bf8bSGeert Uytterhoeven
2451f49bf8bSGeert Uytterhoevenexamples:
2461f49bf8bSGeert Uytterhoeven  - |
24720a72af1SRob Herring    i2c {
2481f49bf8bSGeert Uytterhoeven            #address-cells = <1>;
2491f49bf8bSGeert Uytterhoeven            #size-cells = <0>;
2501f49bf8bSGeert Uytterhoeven
2511b6a7961SJavier Martinez Canillas            ssd1307_i2c: oled@3c {
25236bf0611SJavier Martinez Canillas                    compatible = "solomon,ssd1307";
2531f49bf8bSGeert Uytterhoeven                    reg = <0x3c>;
2541f49bf8bSGeert Uytterhoeven                    pwms = <&pwm 4 3000>;
2551f49bf8bSGeert Uytterhoeven                    reset-gpios = <&gpio2 7>;
2561f49bf8bSGeert Uytterhoeven            };
2571f49bf8bSGeert Uytterhoeven
2581b6a7961SJavier Martinez Canillas            ssd1306_i2c: oled@3d {
25936bf0611SJavier Martinez Canillas                    compatible = "solomon,ssd1306";
26020a72af1SRob Herring                    reg = <0x3d>;
2611f49bf8bSGeert Uytterhoeven                    pwms = <&pwm 4 3000>;
2621f49bf8bSGeert Uytterhoeven                    reset-gpios = <&gpio2 7>;
2631f49bf8bSGeert Uytterhoeven                    solomon,com-lrremap;
2641f49bf8bSGeert Uytterhoeven                    solomon,com-invdir;
2651f49bf8bSGeert Uytterhoeven                    solomon,com-offset = <32>;
2661f49bf8bSGeert Uytterhoeven                    solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>;
2671f49bf8bSGeert Uytterhoeven            };
2681f49bf8bSGeert Uytterhoeven    };
2691b6a7961SJavier Martinez Canillas  - |
2701b6a7961SJavier Martinez Canillas    spi {
2711b6a7961SJavier Martinez Canillas            #address-cells = <1>;
2721b6a7961SJavier Martinez Canillas            #size-cells = <0>;
2731b6a7961SJavier Martinez Canillas
2741b6a7961SJavier Martinez Canillas            ssd1307_spi: oled@0 {
2751b6a7961SJavier Martinez Canillas                    compatible = "solomon,ssd1307";
2761b6a7961SJavier Martinez Canillas                    reg = <0x0>;
2771b6a7961SJavier Martinez Canillas                    pwms = <&pwm 4 3000>;
2781b6a7961SJavier Martinez Canillas                    reset-gpios = <&gpio2 7>;
2791b6a7961SJavier Martinez Canillas                    dc-gpios = <&gpio2 8>;
2801b6a7961SJavier Martinez Canillas                    spi-max-frequency = <10000000>;
2811b6a7961SJavier Martinez Canillas            };
2821b6a7961SJavier Martinez Canillas
2831b6a7961SJavier Martinez Canillas            ssd1306_spi: oled@1 {
2841b6a7961SJavier Martinez Canillas                    compatible = "solomon,ssd1306";
2851b6a7961SJavier Martinez Canillas                    reg = <0x1>;
2861b6a7961SJavier Martinez Canillas                    pwms = <&pwm 4 3000>;
2871b6a7961SJavier Martinez Canillas                    reset-gpios = <&gpio2 7>;
2881b6a7961SJavier Martinez Canillas                    dc-gpios = <&gpio2 8>;
2891b6a7961SJavier Martinez Canillas                    spi-max-frequency = <10000000>;
2901b6a7961SJavier Martinez Canillas                    solomon,com-lrremap;
2911b6a7961SJavier Martinez Canillas                    solomon,com-invdir;
2921b6a7961SJavier Martinez Canillas                    solomon,com-offset = <32>;
2931b6a7961SJavier Martinez Canillas                    solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>;
2941b6a7961SJavier Martinez Canillas            };
2951b6a7961SJavier Martinez Canillas    };
296