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