@@ -14,6 +14,7 @@ def generate_supplies(options: Options):
1414 if options .regulator :
1515 for r in options .regulator :
1616 s += f"\t \t { r } -supply = <&...>;\n "
17+ s += "\n "
1718 return s
1819
1920
@@ -22,6 +23,43 @@ def generate_gpios(options: Options):
2223 for name , flags in options .gpios .items ():
2324 flags = "GPIO_ACTIVE_LOW" if flags & GpioFlag .ACTIVE_LOW else "GPIO_ACTIVE_HIGH"
2425 s += f"\t \t { name } -gpios = <&tlmm XY { flags } >;\n "
26+
27+ if 'backlight' in options .gpios :
28+ s += '''
29+ pinctrl-0 = <&lcd_bl_en_default>;
30+ pinctrl-names = "default";
31+ '''
32+ return s
33+
34+
35+ def generate_tlmm (options : Options ):
36+ s = "&tlmm {"
37+ if 'backlight' in options .gpios :
38+ s += '''
39+ lcd_bl_en_default: lcd-bl-en-default-state {
40+ pins = "gpioXY";
41+ function = "gpio";
42+ drive-strength = <2>;
43+ bias-disable;
44+ };
45+ '''
46+
47+ s += '''
48+ mdss_default: mdss-default-state {
49+ pins = "gpioXY";
50+ function = "gpio";
51+ drive-strength = <8>;
52+ bias-disable;
53+ };
54+
55+ mdss_sleep: mdss-sleep-state {
56+ pins = "gpioXY";
57+ function = "gpio";
58+ drive-strength = <2>;
59+ bias-pull-down;
60+ };
61+ };
62+ '''
2563 return s
2664
2765
@@ -35,6 +73,10 @@ def generate_panel_dtsi(p: Panel, options: Options) -> None:
3573''' )
3674 f .write (f'''\
3775 &mdss_dsi0 {{
76+ pinctrl-0 = <&mdss_default>;
77+ pinctrl-1 = <&mdss_sleep>;
78+ pinctrl-names = "default", "sleep";
79+
3880 panel@0 {{
3981 compatible = "{ options .compatible } ";
4082 reg = <0>;
@@ -55,6 +97,7 @@ def generate_panel_dtsi(p: Panel, options: Options) -> None:
5597 data-lanes = <{ ' ' .join (map (str , p .lane_map .phys2log [:p .lanes ]))} >;
5698 remote-endpoint = <&panel_in>;
5799}};
100+
58101''' )
59102
60103 if p .ldo_mode :
@@ -69,3 +112,5 @@ def generate_panel_dtsi(p: Panel, options: Options) -> None:
69112 phy-type = <PHY_TYPE_CPHY>;
70113};
71114''' )
115+
116+ f .write (generate_tlmm (options ))
0 commit comments