278 lines
6.8 KiB
YAML
278 lines
6.8 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/display/solomon,ssd1307fb.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Solomon SSD1307 OLED Controller Framebuffer
|
|
|
|
maintainers:
|
|
- Maxime Ripard <mripard@kernel.org>
|
|
- Javier Martinez Canillas <javierm@redhat.com>
|
|
|
|
properties:
|
|
compatible:
|
|
oneOf:
|
|
# Deprecated compatible strings
|
|
- items:
|
|
- enum:
|
|
- solomon,ssd1305fb-i2c
|
|
- solomon,ssd1306fb-i2c
|
|
- solomon,ssd1307fb-i2c
|
|
- solomon,ssd1309fb-i2c
|
|
deprecated: true
|
|
- items:
|
|
- enum:
|
|
- sinowealth,sh1106
|
|
- solomon,ssd1305
|
|
- solomon,ssd1306
|
|
- solomon,ssd1307
|
|
- solomon,ssd1309
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
pwms:
|
|
maxItems: 1
|
|
|
|
reset-gpios:
|
|
maxItems: 1
|
|
|
|
# Only required for SPI
|
|
dc-gpios:
|
|
description:
|
|
GPIO connected to the controller's D/C# (Data/Command) pin,
|
|
that is needed for 4-wire SPI to tell the controller if the
|
|
data sent is for a command register or the display data RAM
|
|
maxItems: 1
|
|
|
|
vbat-supply:
|
|
description: The supply for VBAT
|
|
|
|
solomon,height:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
default: 16
|
|
description:
|
|
Height in pixel of the screen driven by the controller
|
|
|
|
solomon,width:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
default: 96
|
|
description:
|
|
Width in pixel of the screen driven by the controller
|
|
|
|
solomon,page-offset:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
default: 1
|
|
description:
|
|
Offset of pages (band of 8 pixels) that the screen is mapped to
|
|
|
|
solomon,segment-no-remap:
|
|
type: boolean
|
|
description:
|
|
Display needs normal (non-inverted) data column to segment mapping
|
|
|
|
solomon,col-offset:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
default: 0
|
|
description:
|
|
Offset of columns (COL/SEG) that the screen is mapped to
|
|
|
|
solomon,com-seq:
|
|
type: boolean
|
|
description:
|
|
Display uses sequential COM pin configuration
|
|
|
|
solomon,com-lrremap:
|
|
type: boolean
|
|
description:
|
|
Display uses left-right COM pin remap
|
|
|
|
solomon,com-invdir:
|
|
type: boolean
|
|
description:
|
|
Display uses inverted COM pin scan direction
|
|
|
|
solomon,com-offset:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
default: 0
|
|
description:
|
|
Number of the COM pin wired to the first display line
|
|
|
|
solomon,prechargep1:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
default: 2
|
|
description:
|
|
Length of deselect period (phase 1) in clock cycles
|
|
|
|
solomon,prechargep2:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
default: 2
|
|
description:
|
|
Length of precharge period (phase 2) in clock cycles. This needs to be
|
|
the higher, the higher the capacitance of the OLED's pixels is.
|
|
|
|
solomon,dclk-div:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
minimum: 1
|
|
maximum: 16
|
|
description:
|
|
Clock divisor. The default value is controller-dependent.
|
|
|
|
solomon,dclk-frq:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
minimum: 0
|
|
maximum: 15
|
|
description:
|
|
Clock frequency, higher value means higher frequency.
|
|
The default value is controller-dependent.
|
|
|
|
solomon,lookup-table:
|
|
$ref: /schemas/types.yaml#/definitions/uint8-array
|
|
maxItems: 4
|
|
description:
|
|
8 bit value array of current drive pulse widths for BANK0, and colors A,
|
|
B, and C. Each value in range of 31 to 63 for pulse widths of 32 to 64.
|
|
Color D is always width 64.
|
|
|
|
solomon,area-color-enable:
|
|
type: boolean
|
|
description:
|
|
Display uses color mode
|
|
|
|
solomon,low-power:
|
|
type: boolean
|
|
description:
|
|
Display runs in low power mode
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
|
|
allOf:
|
|
- $ref: /schemas/spi/spi-peripheral-props.yaml#
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: sinowealth,sh1106
|
|
then:
|
|
properties:
|
|
solomon,dclk-div:
|
|
default: 1
|
|
solomon,dclk-frq:
|
|
default: 5
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- solomon,ssd1305-i2c
|
|
- solomon,ssd1305
|
|
then:
|
|
properties:
|
|
solomon,dclk-div:
|
|
default: 1
|
|
solomon,dclk-frq:
|
|
default: 7
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- solomon,ssd1306-i2c
|
|
- solomon,ssd1306
|
|
then:
|
|
properties:
|
|
solomon,dclk-div:
|
|
default: 1
|
|
solomon,dclk-frq:
|
|
default: 8
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- solomon,ssd1307-i2c
|
|
- solomon,ssd1307
|
|
then:
|
|
properties:
|
|
solomon,dclk-div:
|
|
default: 2
|
|
solomon,dclk-frq:
|
|
default: 12
|
|
required:
|
|
- pwms
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- solomon,ssd1309-i2c
|
|
- solomon,ssd1309
|
|
then:
|
|
properties:
|
|
solomon,dclk-div:
|
|
default: 1
|
|
solomon,dclk-frq:
|
|
default: 10
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
i2c1 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
ssd1307_i2c: oled@3c {
|
|
compatible = "solomon,ssd1307";
|
|
reg = <0x3c>;
|
|
pwms = <&pwm 4 3000>;
|
|
reset-gpios = <&gpio2 7>;
|
|
};
|
|
|
|
ssd1306_i2c: oled@3d {
|
|
compatible = "solomon,ssd1306";
|
|
reg = <0x3c>;
|
|
pwms = <&pwm 4 3000>;
|
|
reset-gpios = <&gpio2 7>;
|
|
solomon,com-lrremap;
|
|
solomon,com-invdir;
|
|
solomon,com-offset = <32>;
|
|
solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>;
|
|
};
|
|
};
|
|
- |
|
|
spi {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
ssd1307_spi: oled@0 {
|
|
compatible = "solomon,ssd1307";
|
|
reg = <0x0>;
|
|
pwms = <&pwm 4 3000>;
|
|
reset-gpios = <&gpio2 7>;
|
|
dc-gpios = <&gpio2 8>;
|
|
spi-max-frequency = <10000000>;
|
|
};
|
|
|
|
ssd1306_spi: oled@1 {
|
|
compatible = "solomon,ssd1306";
|
|
reg = <0x1>;
|
|
pwms = <&pwm 4 3000>;
|
|
reset-gpios = <&gpio2 7>;
|
|
dc-gpios = <&gpio2 8>;
|
|
spi-max-frequency = <10000000>;
|
|
solomon,com-lrremap;
|
|
solomon,com-invdir;
|
|
solomon,com-offset = <32>;
|
|
solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>;
|
|
};
|
|
};
|