33from panel import Panel , BacklightControl
44
55
6+ def has_gpio_backlight (options : Options ):
7+ return 'backlight' in options .gpios
8+
9+
610def 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