Skip to content

Commit 69963b2

Browse files
author
Andreas Kemnade
committed
Merge branch 'kobo/epdc-drm-6.13' into kobo/drm-merged-6.13
2 parents 8ad698a + 3e0f0c6 commit 69963b2

File tree

21 files changed

+3275
-5
lines changed

21 files changed

+3275
-5
lines changed
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/display/imx/fsl,mxc-epdc.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Freescale i.MX6 EPDC
8+
9+
maintainers:
10+
- Andreas Kemnade <[email protected]>
11+
12+
description: |
13+
The EPDC is a controller for handling electronic paper displays found in
14+
i.MX6 SoCs.
15+
16+
properties:
17+
compatible:
18+
enum:
19+
- fsl,imx6sl-epdc
20+
- fsl,imx6sll-epdc
21+
22+
reg:
23+
maxItems: 1
24+
25+
clocks:
26+
items:
27+
- description: Bus clock
28+
- description: Pixel clock
29+
30+
clock-names:
31+
items:
32+
- const: axi
33+
- const: pix
34+
35+
interrupts:
36+
maxItems: 1
37+
38+
vscan-holdoff:
39+
$ref: /schemas/types.yaml#/definitions/uint32
40+
maxItems: 1
41+
42+
sdoed-width:
43+
$ref: /schemas/types.yaml#/definitions/uint32
44+
maxItems: 1
45+
46+
sdoed-delay:
47+
$ref: /schemas/types.yaml#/definitions/uint32
48+
maxItems: 1
49+
50+
sdoez-width:
51+
$ref: /schemas/types.yaml#/definitions/uint32
52+
maxItems: 1
53+
54+
sdoez-delay:
55+
$ref: /schemas/types.yaml#/definitions/uint32
56+
maxItems: 1
57+
58+
gdclk-hp-offs:
59+
$ref: /schemas/types.yaml#/definitions/uint32
60+
maxItems: 1
61+
62+
gdsp-offs:
63+
$ref: /schemas/types.yaml#/definitions/uint32
64+
maxItems: 1
65+
66+
gdoe-offs:
67+
$ref: /schemas/types.yaml#/definitions/uint32
68+
maxItems: 1
69+
70+
gdclk-offs:
71+
$ref: /schemas/types.yaml#/definitions/uint32
72+
maxItems: 1
73+
74+
num-ce:
75+
$ref: /schemas/types.yaml#/definitions/uint32
76+
maxItems: 1
77+
78+
timing:
79+
$ref: /display/panel/panel-timing.yaml#
80+
81+
DISPLAY-supply:
82+
description:
83+
A couple of +/- voltages automatically powered on in a defintive order
84+
85+
VCOM-supply:
86+
description: compensation voltage
87+
88+
V3P3-supply:
89+
description: V3P3 supply
90+
91+
epd-thermal-zone:
92+
description:
93+
Zone to get temperature of the EPD from, practically ambient temperature.
94+
95+
96+
97+
required:
98+
- compatible
99+
- reg
100+
- clocks
101+
- clock-names
102+
- interrupts
103+
- vscan-holdoff
104+
- sdoed-width
105+
- sdoed-delay
106+
- sdoez-width
107+
- sdoez-delay
108+
- gdclk-hp-offs
109+
- gdsp-offs
110+
- gdoe-offs
111+
- gdclk-offs
112+
- num-ce
113+
114+
additionalProperties: false
115+
116+
examples:
117+
- |
118+
#include <dt-bindings/clock/imx6sl-clock.h>
119+
#include <dt-bindings/interrupt-controller/arm-gic.h>
120+
121+
epdc: epdc@20f4000 {
122+
compatible = "fsl,imx6sl-epdc";
123+
reg = <0x020f4000 0x4000>;
124+
interrupts = <0 97 IRQ_TYPE_LEVEL_HIGH>;
125+
clocks = <&clks IMX6SL_CLK_EPDC_AXI>, <&clks IMX6SL_CLK_EPDC_PIX>;
126+
clock-names = "axi", "pix";
127+
128+
pinctrl-names = "default";
129+
pinctrl-0 = <&pinctrl_epdc0>;
130+
V3P3-supply = <&V3P3_reg>;
131+
VCOM-supply = <&VCOM_reg>;
132+
DISPLAY-supply = <&DISPLAY_reg>;
133+
epd-thermal-zone = "epd-thermal";
134+
135+
vscan-holdoff = <4>;
136+
sdoed-width = <10>;
137+
sdoed-delay = <20>;
138+
sdoez-width = <10>;
139+
sdoez-delay = <20>;
140+
gdclk-hp-offs = <562>;
141+
gdsp-offs = <662>;
142+
gdoe-offs = <0>;
143+
gdclk-offs = <225>;
144+
num-ce = <3>;
145+
status = "okay";
146+
147+
timing {
148+
clock-frequency = <80000000>;
149+
hactive = <1448>;
150+
hback-porch = <16>;
151+
hfront-porch = <102>;
152+
hsync-len = <28>;
153+
vactive = <1072>;
154+
vback-porch = <4>;
155+
vfront-porch = <4>;
156+
vsync-len = <2>;
157+
};
158+
};
159+
...

arch/arm/boot/dts/nxp/imx/e60k02.dtsi

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,38 @@
8484
};
8585
};
8686

87+
&epdc {
88+
safe-ticks-turnoff-ep3v3=<800>;
89+
V3P3-supply = <&V3P3_reg>;
90+
VCOM-supply = <&VCOM_reg>;
91+
DISPLAY-supply = <&DISPLAY_reg>;
92+
epd-thermal-zone = "epd-thermal";
93+
94+
vscan-holdoff = <4>;
95+
sdoed-width = <10>;
96+
sdoed-delay = <20>;
97+
sdoez-width = <10>;
98+
sdoez-delay = <20>;
99+
gdclk-hp-offs = <562>;
100+
gdsp-offs = <662>;
101+
gdoe-offs = <0>;
102+
gdclk-offs = <225>;
103+
num-ce = <3>;
104+
105+
status = "okay";
106+
107+
timing {
108+
clock-frequency = <80000000>;
109+
hactive = <1448>;
110+
hback-porch = <16>;
111+
hfront-porch = <102>;
112+
hsync-len = <28>;
113+
vactive = <1072>;
114+
vback-porch = <4>;
115+
vfront-porch = <4>;
116+
vsync-len = <2>;
117+
};
118+
};
87119

88120
&i2c1 {
89121
clock-frequency = <100000>;

arch/arm/boot/dts/nxp/imx/imx6sl-tolino-shine2hd.dts

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,40 @@
128128
};
129129
};
130130

131+
&epdc {
132+
pinctrl-names = "default";
133+
pinctrl-0 = <&pinctrl_epdc0>;
134+
safe-ticks-turnoff-ep3v3 = <800>;
135+
V3P3-supply = <&V3P3_reg>;
136+
VCOM-supply = <&VCOM_reg>;
137+
DISPLAY-supply = <&DISPLAY_reg>;
138+
epd-thermal-zone = "epd-thermal";
139+
140+
vscan-holdoff = <4>;
141+
sdoed-width = <10>;
142+
sdoed-delay = <20>;
143+
sdoez-width = <10>;
144+
sdoez-delay = <20>;
145+
gdclk-hp-offs = <562>;
146+
gdsp-offs = <662>;
147+
gdoe-offs = <0>;
148+
gdclk-offs = <225>;
149+
num-ce = <3>;
150+
status = "okay";
151+
152+
timing {
153+
clock-frequency = <80000000>;
154+
hactive = <1448>;
155+
hback-porch = <16>;
156+
hfront-porch = <102>;
157+
hsync-len = <28>;
158+
vactive = <1072>;
159+
vback-porch = <4>;
160+
vfront-porch = <4>;
161+
vsync-len = <2>;
162+
};
163+
};
164+
131165
&i2c1 {
132166
pinctrl-names = "default","sleep";
133167
pinctrl-0 = <&pinctrl_i2c1>;
@@ -401,6 +435,36 @@
401435
>;
402436
};
403437

438+
pinctrl_epdc0: epdcgrp0 {
439+
fsl,pins = <
440+
MX6SL_PAD_EPDC_D0__EPDC_DATA00 0x4100b1
441+
MX6SL_PAD_EPDC_D1__EPDC_DATA01 0x4100b1
442+
MX6SL_PAD_EPDC_D2__EPDC_DATA02 0x4100b1
443+
MX6SL_PAD_EPDC_D3__EPDC_DATA03 0x4100b1
444+
MX6SL_PAD_EPDC_D4__EPDC_DATA04 0x4100b1
445+
MX6SL_PAD_EPDC_D5__EPDC_DATA05 0x4100b1
446+
MX6SL_PAD_EPDC_D6__EPDC_DATA06 0x4100b1
447+
MX6SL_PAD_EPDC_D7__EPDC_DATA07 0x4100b1
448+
MX6SL_PAD_EPDC_D8__EPDC_DATA08 0x4100b1
449+
MX6SL_PAD_EPDC_D9__EPDC_DATA09 0x4100b1
450+
MX6SL_PAD_EPDC_D10__EPDC_DATA10 0x4100b1
451+
MX6SL_PAD_EPDC_D11__EPDC_DATA11 0x4100b1
452+
MX6SL_PAD_EPDC_D12__EPDC_DATA12 0x4100b1
453+
MX6SL_PAD_EPDC_D13__EPDC_DATA13 0x4100b1
454+
MX6SL_PAD_EPDC_D14__EPDC_DATA14 0x4100b1
455+
MX6SL_PAD_EPDC_D15__EPDC_DATA15 0x4100b1
456+
MX6SL_PAD_EPDC_SDCLK__EPDC_SDCLK_P 0x4100b1
457+
MX6SL_PAD_EPDC_SDLE__EPDC_SDLE 0x4100b1
458+
MX6SL_PAD_EPDC_SDOE__EPDC_SDOE 0x4100b1
459+
MX6SL_PAD_EPDC_SDSHR__EPDC_SDSHR 0x4100b1
460+
MX6SL_PAD_EPDC_SDCE0__EPDC_SDCE0 0x4100b1
461+
MX6SL_PAD_EPDC_GDCLK__EPDC_GDCLK 0x4100b1
462+
MX6SL_PAD_EPDC_GDOE__EPDC_GDOE 0x4100b1
463+
MX6SL_PAD_EPDC_GDRL__EPDC_GDRL 0x4100b1
464+
MX6SL_PAD_EPDC_GDSP__EPDC_GDSP 0x4100b1
465+
>;
466+
};
467+
404468
pinctrl_hog: hoggrp {
405469
fsl,pins = <
406470
MX6SL_PAD_LCD_DAT0__GPIO2_IO20 0x79

arch/arm/boot/dts/nxp/imx/imx6sl-tolino-shine3.dts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@
2626
compatible = "kobo,tolino-shine3", "fsl,imx6sl";
2727
};
2828

29+
&epdc {
30+
pinctrl-names = "default";
31+
pinctrl-0 = <&pinctrl_epdc0>;
32+
};
33+
2934
&gpio_keys {
3035
pinctrl-names = "default";
3136
pinctrl-0 = <&pinctrl_gpio_keys>;
@@ -59,6 +64,36 @@
5964
>;
6065
};
6166

67+
pinctrl_epdc0: epdcgrp0 {
68+
fsl,pins = <
69+
MX6SL_PAD_EPDC_D0__EPDC_DATA00 0x4100b1
70+
MX6SL_PAD_EPDC_D1__EPDC_DATA01 0x4100b1
71+
MX6SL_PAD_EPDC_D2__EPDC_DATA02 0x4100b1
72+
MX6SL_PAD_EPDC_D3__EPDC_DATA03 0x4100b1
73+
MX6SL_PAD_EPDC_D4__EPDC_DATA04 0x4100b1
74+
MX6SL_PAD_EPDC_D5__EPDC_DATA05 0x4100b1
75+
MX6SL_PAD_EPDC_D6__EPDC_DATA06 0x4100b1
76+
MX6SL_PAD_EPDC_D7__EPDC_DATA07 0x4100b1
77+
MX6SL_PAD_EPDC_D8__EPDC_DATA08 0x4100b1
78+
MX6SL_PAD_EPDC_D9__EPDC_DATA09 0x4100b1
79+
MX6SL_PAD_EPDC_D10__EPDC_DATA10 0x4100b1
80+
MX6SL_PAD_EPDC_D11__EPDC_DATA11 0x4100b1
81+
MX6SL_PAD_EPDC_D12__EPDC_DATA12 0x4100b1
82+
MX6SL_PAD_EPDC_D13__EPDC_DATA13 0x4100b1
83+
MX6SL_PAD_EPDC_D14__EPDC_DATA14 0x4100b1
84+
MX6SL_PAD_EPDC_D15__EPDC_DATA15 0x4100b1
85+
MX6SL_PAD_EPDC_SDCLK__EPDC_SDCLK_P 0x4100b1
86+
MX6SL_PAD_EPDC_SDLE__EPDC_SDLE 0x4100b1
87+
MX6SL_PAD_EPDC_SDOE__EPDC_SDOE 0x4100b1
88+
MX6SL_PAD_EPDC_SDSHR__EPDC_SDSHR 0x4100b1
89+
MX6SL_PAD_EPDC_SDCE0__EPDC_SDCE0 0x4100b1
90+
MX6SL_PAD_EPDC_GDCLK__EPDC_GDCLK 0x4100b1
91+
MX6SL_PAD_EPDC_GDOE__EPDC_GDOE 0x4100b1
92+
MX6SL_PAD_EPDC_GDRL__EPDC_GDRL 0x4100b1
93+
MX6SL_PAD_EPDC_GDSP__EPDC_GDSP 0x4100b1
94+
>;
95+
};
96+
6297
pinctrl_gpio_keys: gpio-keysgrp {
6398
fsl,pins = <
6499
MX6SL_PAD_SD1_DAT1__GPIO5_IO08 0x17059 /* PWR_SW */

arch/arm/boot/dts/nxp/imx/imx6sl.dtsi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,8 +769,11 @@
769769
};
770770

771771
epdc: epdc@20f4000 {
772+
compatible = "fsl,imx6sl-epdc", "fsl,imx6dl-epdc";
772773
reg = <0x020f4000 0x4000>;
773774
interrupts = <0 97 IRQ_TYPE_LEVEL_HIGH>;
775+
clocks = <&clks IMX6SL_CLK_EPDC_AXI>, <&clks IMX6SL_CLK_EPDC_PIX>;
776+
clock-names = "epdc_axi", "epdc_pix";
774777
};
775778

776779
lcdif: lcdif@20f8000 {

arch/arm/boot/dts/nxp/imx/imx6sll-kobo-clarahd.dts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@
3636
soc-supply = <&dcdc1_reg>;
3737
};
3838

39+
&epdc {
40+
pinctrl-names = "default";
41+
pinctrl-0 = <&pinctrl_epdc0>;
42+
};
43+
3944
&gpio_keys {
4045
pinctrl-names = "default";
4146
pinctrl-0 = <&pinctrl_gpio_keys>;
@@ -69,6 +74,36 @@
6974
>;
7075
};
7176

77+
pinctrl_epdc0: epdcgrp0 {
78+
fsl,pins = <
79+
MX6SLL_PAD_EPDC_DATA00__EPDC_DATA00 0x4100b1
80+
MX6SLL_PAD_EPDC_DATA01__EPDC_DATA01 0x4100b1
81+
MX6SLL_PAD_EPDC_DATA02__EPDC_DATA02 0x4100b1
82+
MX6SLL_PAD_EPDC_DATA03__EPDC_DATA03 0x4100b1
83+
MX6SLL_PAD_EPDC_DATA04__EPDC_DATA04 0x4100b1
84+
MX6SLL_PAD_EPDC_DATA05__EPDC_DATA05 0x4100b1
85+
MX6SLL_PAD_EPDC_DATA06__EPDC_DATA06 0x4100b1
86+
MX6SLL_PAD_EPDC_DATA07__EPDC_DATA07 0x4100b1
87+
MX6SLL_PAD_EPDC_DATA08__EPDC_DATA08 0x4100b1
88+
MX6SLL_PAD_EPDC_DATA09__EPDC_DATA09 0x4100b1
89+
MX6SLL_PAD_EPDC_DATA10__EPDC_DATA10 0x4100b1
90+
MX6SLL_PAD_EPDC_DATA11__EPDC_DATA11 0x4100b1
91+
MX6SLL_PAD_EPDC_DATA12__EPDC_DATA12 0x4100b1
92+
MX6SLL_PAD_EPDC_DATA13__EPDC_DATA13 0x4100b1
93+
MX6SLL_PAD_EPDC_DATA14__EPDC_DATA14 0x4100b1
94+
MX6SLL_PAD_EPDC_DATA15__EPDC_DATA15 0x4100b1
95+
MX6SLL_PAD_EPDC_SDCLK__EPDC_SDCLK_P 0x4100b1
96+
MX6SLL_PAD_EPDC_SDLE__EPDC_SDLE 0x4100b1
97+
MX6SLL_PAD_EPDC_SDOE__EPDC_SDOE 0x4100b1
98+
MX6SLL_PAD_EPDC_SDSHR__EPDC_SDSHR 0x4100b1
99+
MX6SLL_PAD_EPDC_SDCE0__EPDC_SDCE0 0x4100b1
100+
MX6SLL_PAD_EPDC_GDCLK__EPDC_GDCLK 0x4100b1
101+
MX6SLL_PAD_EPDC_GDOE__EPDC_GDOE 0x4100b1
102+
MX6SLL_PAD_EPDC_GDRL__EPDC_GDRL 0x4100b1
103+
MX6SLL_PAD_EPDC_GDSP__EPDC_GDSP 0x4100b1
104+
>;
105+
};
106+
72107
pinctrl_gpio_keys: gpio-keysgrp {
73108
fsl,pins = <
74109
MX6SLL_PAD_SD1_DATA1__GPIO5_IO08 0x17059 /* PWR_SW */

0 commit comments

Comments
 (0)