diff --git a/dtsi.py b/dtsi.py index 92bfaf6..d7046d4 100644 --- a/dtsi.py +++ b/dtsi.py @@ -21,7 +21,44 @@ def generate_gpios(options: Options): s = "" for name, flags in options.gpios.items(): flags = "GPIO_ACTIVE_LOW" if flags & GpioFlag.ACTIVE_LOW else "GPIO_ACTIVE_HIGH" - s += f"\t\t{name}-gpios = <&msmgpio XY {flags}>;\n" + s += f"\t\t{name}-gpios = <&tlmm XY {flags}>;\n" + + if 'backlight' in options.gpios: + s += ''' + pinctrl-0 = <&lcd_bl_en_default>; + pinctrl-names = "default"; +''' + return s + + +def generate_tlmm(options: Options): + s = "&tlmm {" + if 'backlight' in options.gpios: + s += ''' + lcd_bl_en_default: lcd-bl-en-default-state { + pins = "gpioXY"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; +''' + + s += ''' + mdss_default: mdss-default-state { + pins = "gpioXY"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + }; + + mdss_sleep: mdss-sleep-state { + pins = "gpioXY"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; +}; +''' return s @@ -35,6 +72,10 @@ def generate_panel_dtsi(p: Panel, options: Options) -> None: ''') f.write(f'''\ &mdss_dsi0 {{ + pinctrl-0 = <&mdss_default>; + pinctrl-1 = <&mdss_sleep>; + pinctrl-names = "default", "sleep"; + panel@0 {{ compatible = "{options.compatible}"; reg = <0>; @@ -69,3 +110,5 @@ def generate_panel_dtsi(p: Panel, options: Options) -> None: phy-type = ; }; ''') + + f.write(generate_tlmm(options))