Skip to content

Commit ac56df4

Browse files
dtsi: add pinctrl
Fixes #29
1 parent 51fa5c3 commit ac56df4

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

dtsi.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
from panel import Panel, BacklightControl
44

55

6+
def has_gpio_backlight(options: Options):
7+
return 'backlight' in options.gpios
8+
9+
610
def generate_backlight(p: Panel):
711
if p.backlight == BacklightControl.DCS:
812
return ""
@@ -14,6 +18,7 @@ def generate_supplies(options: Options):
1418
if options.regulator:
1519
for r in options.regulator:
1620
s += f"\t\t{r}-supply = <&...>;\n"
21+
s += f"\n"
1722
return s
1823

1924

@@ -22,6 +27,43 @@ def generate_gpios(options: Options):
2227
for name, flags in options.gpios.items():
2328
flags = "GPIO_ACTIVE_LOW" if flags & GpioFlag.ACTIVE_LOW else "GPIO_ACTIVE_HIGH"
2429
s += f"\t\t{name}-gpios = <&tlmm XY {flags}>;\n"
30+
31+
if has_gpio_backlight(options):
32+
s += '''
33+
pinctrl-0 = <&lcd_bl_en_default>;
34+
pinctrl-names = "default";
35+
'''
36+
return s
37+
38+
39+
def generate_tlmm(options: Options):
40+
s = "&tlmm {"
41+
if has_gpio_backlight(options):
42+
s += '''
43+
lcd_bl_en_default: lcd-bl-en-default-state {
44+
pins = "gpioXY";
45+
function = "gpio";
46+
drive-strength = <2>;
47+
bias-disable;
48+
};
49+
'''
50+
51+
s += '''
52+
mdss_default: mdss-default-state {
53+
pins = "gpioXY";
54+
function = "gpio";
55+
drive-strength = <8>;
56+
bias-disable;
57+
};
58+
59+
mdss_sleep: mdss-sleep-state {
60+
pins = "gpioXY";
61+
function = "gpio";
62+
drive-strength = <2>;
63+
bias-pull-down;
64+
};
65+
};
66+
'''
2567
return s
2668

2769

@@ -35,6 +77,10 @@ def generate_panel_dtsi(p: Panel, options: Options) -> None:
3577
''')
3678
f.write(f'''\
3779
&mdss_dsi0 {{
80+
pinctrl-0 = <&mdss_default>;
81+
pinctrl-1 = <&mdss_sleep>;
82+
pinctrl-names = "default", "sleep";
83+
3884
panel@0 {{
3985
compatible = "{options.compatible}";
4086
reg = <0>;
@@ -55,6 +101,7 @@ def generate_panel_dtsi(p: Panel, options: Options) -> None:
55101
data-lanes = <{' '.join(map(str, p.lane_map.phys2log[:p.lanes]))}>;
56102
remote-endpoint = <&panel_in>;
57103
}};
104+
58105
''')
59106

60107
if p.ldo_mode:
@@ -69,3 +116,5 @@ def generate_panel_dtsi(p: Panel, options: Options) -> None:
69116
phy-type = <PHY_TYPE_CPHY>;
70117
};
71118
''')
119+
120+
f.write(f'''{generate_tlmm(options)}''')

0 commit comments

Comments
 (0)