From 2cc810fd22f30acabbf5e6726e003c5da56d3212 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 31 Jan 2022 17:25:19 +0000 Subject: [PATCH] dtoverlays: Rework vc4-kms-dpi overlays to remove duplication Removes all the common panel, dpi, and backlight configuration from the individual vc4-kms-dpi-* files into vc4-kms-dpi.dtsi. Creates a new vc4-kms-dpi-panel-overlay.dts for preconfigured panels, with overrides to enable the different panel configurations. Deprecates vc4-kms-dpi-at056tn53v1 as superceded by vc4-kms-dpi-panel. vc4-kms-kippah-7inch not deprecated for now as it is likely to be in wider use than at056tn53v1. Signed-off-by: Dave Stevenson --- arch/arm/boot/dts/overlays/Makefile | 2 +- arch/arm/boot/dts/overlays/README | 33 ++++- arch/arm/boot/dts/overlays/overlay_map.dts | 4 + .../vc4-kms-dpi-at056tn53v1-overlay.dts | 44 ------ .../overlays/vc4-kms-dpi-generic-overlay.dts | 138 ++++-------------- .../overlays/vc4-kms-dpi-panel-overlay.dts | 62 ++++++++ arch/arm/boot/dts/overlays/vc4-kms-dpi.dtsi | 109 ++++++++++++++ .../overlays/vc4-kms-kippah-7inch-overlay.dts | 27 +--- 8 files changed, 235 insertions(+), 184 deletions(-) delete mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dpi-at056tn53v1-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dpi-panel-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dpi.dtsi --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile @@ -234,8 +234,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ upstream-pi4.dtbo \ vc4-fkms-v3d.dtbo \ vc4-fkms-v3d-pi4.dtbo \ - vc4-kms-dpi-at056tn53v1.dtbo \ vc4-kms-dpi-generic.dtbo \ + vc4-kms-dpi-panel.dtbo \ vc4-kms-dsi-7inch.dtbo \ vc4-kms-dsi-lt070me05000.dtbo \ vc4-kms-dsi-lt070me05000-v2.dtbo \ --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -3624,10 +3624,8 @@ Params: cma-512 CMA is 5 Name: vc4-kms-dpi-at056tn53v1 -Info: Enable an Innolux 5.6in VGA TFT connected to DPI interface under KMS. - Requires vc4-kms-v3d to be loaded. -Load: dtoverlay=vc4-kms-dpi-at056tn53v1 -Params: +Info: This overlay is now deprecated - see vc4-kms-dpi-panel,at056tn53v1 +Load: Name: vc4-kms-dpi-generic @@ -3659,6 +3657,33 @@ Params: clock-frequency Display backlight-gpio Defines a GPIO to be used for backlight control (default of none). backlight-pwm Defines a PWM channel to be used for backlight + control (default of none). NB Disables audio + headphone output as that also uses PWM. + backlight-pwm-chan Choose channel on &pwm node for backlight + control. + (default 0). + backlight-pwm-gpio GPIO pin to be used for the PWM backlight. See + pwm-2chan for valid options. + (default 18 - note this can only work with + rgb666-padhi). + backlight-pwm-func Pin function of GPIO used for the PWM + backlight. + See pwm-2chan for valid options. + (default 2). + backlight-def-brightness + Set the default brightness. Normal range 1-16. + (default 16). + + +Name: vc4-kms-dpi-panel +Info: Enable a preconfigured KMS DPI panel. + Requires vc4-kms-v3d to be loaded. +Load: dtoverlay=vc4-kms-dpi-panel,= +Params: at056tn53v1 Enable an Innolux 5.6in VGA TFT + kippah-7inch Enable an Adafruit Kippah with 7inch panel. + backlight-gpio Defines a GPIO to be used for backlight control + (default of none). + backlight-pwm Defines a PWM channel to be used for backlight control (default of none). NB Disables audio headphone output as that also uses PWM. backlight-pwm-chan Choose channel on &pwm node for backlight --- a/arch/arm/boot/dts/overlays/overlay_map.dts +++ b/arch/arm/boot/dts/overlays/overlay_map.dts @@ -151,6 +151,10 @@ bcm2711; }; + vc4-kms-dpi-at056tn53v1 { + deprecated = "use vc4-kms-dpi-panel,at056tn53v1"; + }; + vc4-kms-v3d { bcm2835; bcm2711 = "vc4-kms-v3d-pi4"; --- a/arch/arm/boot/dts/overlays/vc4-kms-dpi-at056tn53v1-overlay.dts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * vc4-kms-dpi-at056tn53v1-overlay.dts - */ - -/dts-v1/; -/plugin/; - -#include -#include - -/ { - compatible = "brcm,bcm2835"; - - fragment@0 { - target-path = "/"; - __overlay__ { - panel: panel { - compatible = "innolux,at056tn53v1", "simple-panel"; - - port { - panel_in: endpoint { - remote-endpoint = <&dpi_out>; - }; - }; - }; - }; - }; - - fragment@1 { - target = <&dpi>; - __overlay__ { - status = "okay"; - - pinctrl-names = "default"; - pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>; - - port { - dpi_out: endpoint { - remote-endpoint = <&panel_in>; - }; - }; - }; - }; -}; --- a/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts +++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts @@ -5,124 +5,43 @@ /dts-v1/; /plugin/; -#include -#include +#include "vc4-kms-dpi.dtsi" / { compatible = "brcm,bcm2835"; fragment@0 { - target-path = "/"; - __overlay__ { - panel: panel { - compatible = "panel-dpi"; - - width-mm = <154>; - height-mm = <83>; - bus-format = <0x1009>; - - timing: panel-timing { - clock-frequency = <29500000>; - hactive = <800>; - hfront-porch = <24>; - hsync-len = <72>; - hback-porch = <96>; - hsync-active = <1>; - vactive = <480>; - vfront-porch = <3>; - vsync-len = <10>; - vback-porch = <7>; - vsync-active = <1>; - - de-active = <1>; - pixelclk-active = <1>; - }; - - port { - panel_in: endpoint { - remote-endpoint = <&dpi_out>; - }; - }; - }; - }; - }; - - fragment@1 { - target = <&dpi>; - dpi_node: __overlay__ { - status = "okay"; - - pinctrl-names = "default"; - pinctrl-0 = <&dpi_18bit_gpio0>; - - port { - dpi_out: endpoint { - remote-endpoint = <&panel_in>; - }; - }; - }; - }; - - fragment@2 { - target = <&panel>; - __dormant__ { - backlight = <&backlight>; - }; - }; - - fragment@3 { - target-path = "/"; - __dormant__ { - backlight: backlight { - compatible = "gpio-backlight"; - gpios = <&gpio 255 GPIO_ACTIVE_HIGH>; - }; - }; - }; - - fragment@4 { target = <&panel>; - __dormant__ { - backlight = <&backlight_pwm>; - }; - }; - - fragment@5 { - target-path = "/"; - __dormant__ { - backlight_pwm: backlight_pwm { - compatible = "pwm-backlight"; - brightness-levels = <0 6 8 12 16 24 32 40 48 64 96 128 160 192 224 255>; - default-brightness-level = <16>; - pwms = <&pwm 0 200000>; - }; - }; - }; + __overlay__ { + compatible = "panel-dpi"; - fragment@6 { - target = <&pwm>; - __dormant__ { - pinctrl-names = "default"; - pinctrl-0 = <&pwm_pins>; - assigned-clock-rates = <1000000>; - status = "okay"; - }; - }; + width-mm = <154>; + height-mm = <83>; + bus-format = <0x1009>; + + timing: panel-timing { + clock-frequency = <29500000>; + hactive = <800>; + hfront-porch = <24>; + hsync-len = <72>; + hback-porch = <96>; + hsync-active = <1>; + vactive = <480>; + vfront-porch = <3>; + vsync-len = <10>; + vback-porch = <7>; + vsync-active = <1>; - fragment@7 { - target = <&gpio>; - __dormant__ { - pwm_pins: pwm_pins { - brcm,pins = <18>; - brcm,function = <2>; /* Alt5 */ + de-active = <1>; + pixelclk-active = <1>; }; }; }; - fragment@8 { - target = <&audio>; - __dormant__ { - brcm,disable-headphones; + fragment@1 { + target = <&dpi>; + __overlay__ { + pinctrl-0 = <&dpi_18bit_gpio0>; }; }; @@ -151,12 +70,5 @@ rgb888 = <&panel>, "bus-format:0=0x100a", <&dpi_node>, "pinctrl-0:0=",<&dpi_gpio0>; bus-format = <&panel>, "bus-format:0"; - backlight-gpio = <0>, "+2+3", - <&backlight>, "gpios:4"; - backlight-pwm = <0>, "+4+5+6+7+8"; - backlight-pwm-chan = <&backlight_pwm>, "pwms:4"; - backlight-pwm-gpio = <&pwm_pins>, "brcm,pins:0"; - backlight-pwm-func = <&pwm_pins>, "brcm,function:0"; - backlight-def-brightness = <&backlight_pwm>, "default-brightness-level:0"; }; }; --- /dev/null +++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-panel-overlay.dts @@ -0,0 +1,62 @@ +/* + * vc4-kms-dpi-panel-overlay.dts + * Support for any predefined DPI panel. + */ + +/dts-v1/; +/plugin/; + +#include "vc4-kms-dpi.dtsi" + +/ { + compatible = "brcm,bcm2835"; + + fragment@0 { + target = <&panel>; + __dormant__ { + compatible = "innolux,at056tn53v1", "simple-panel"; + }; + }; + fragment@1 { + target = <&panel>; + __dormant__ { + compatible = "ontat,yx700wv03", "simple-panel"; + }; + }; + + fragment@90 { + target = <&dpi>; + __dormant__ { + pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>; + }; + }; + fragment@91 { + target = <&dpi>; + __dormant__ { + pinctrl-0 = <&dpi_18bit_gpio0>; + }; + }; + fragment@92 { + target = <&dpi>; + __dormant__ { + pinctrl-0 = <&dpi_gpio0>; + }; + }; + fragment@93 { + target = <&dpi>; + __dormant__ { + pinctrl-0 = <&dpi_16bit_cpadhi_gpio0>; + }; + }; + fragment@94 { + target = <&dpi>; + __dormant__ { + pinctrl-0 = <&dpi_16bit_gpio0>; + }; + }; + + __overrides__ { + at056tn53v1 = <0>, "+0+90"; + kippah-7inch = <0>, "+1+91"; + }; +}; --- /dev/null +++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi.dtsi @@ -0,0 +1,109 @@ +/* + * vc4-kms-dpi.dtsi + */ + +#include +#include + +/ { + fragment@100 { + target-path = "/"; + __overlay__ { + panel: panel { + port { + panel_in: endpoint { + remote-endpoint = <&dpi_out>; + }; + }; + }; + }; + }; + + fragment@101 { + target = <&dpi>; + dpi_node: __overlay__ { + status = "okay"; + + pinctrl-names = "default"; + + port { + dpi_out: endpoint { + remote-endpoint = <&panel_in>; + }; + }; + }; + }; + + fragment@102 { + target = <&panel>; + __dormant__ { + backlight = <&backlight>; + }; + }; + + fragment@103 { + target-path = "/"; + __dormant__ { + backlight: backlight { + compatible = "gpio-backlight"; + gpios = <&gpio 255 GPIO_ACTIVE_HIGH>; + }; + }; + }; + + fragment@104 { + target = <&panel>; + __dormant__ { + backlight = <&backlight_pwm>; + }; + }; + + fragment@105 { + target-path = "/"; + __dormant__ { + backlight_pwm: backlight_pwm { + compatible = "pwm-backlight"; + brightness-levels = <0 6 8 12 16 24 32 40 48 64 96 128 160 192 224 255>; + default-brightness-level = <16>; + pwms = <&pwm 0 200000>; + }; + }; + }; + + fragment@106 { + target = <&pwm>; + __dormant__ { + pinctrl-names = "default"; + pinctrl-0 = <&pwm_pins>; + assigned-clock-rates = <1000000>; + status = "okay"; + }; + }; + + fragment@107 { + target = <&gpio>; + __dormant__ { + pwm_pins: pwm_pins { + brcm,pins = <18>; + brcm,function = <2>; /* Alt5 */ + }; + }; + }; + + fragment@108 { + target = <&audio>; + __dormant__ { + brcm,disable-headphones; + }; + }; + + __overrides__ { + backlight-gpio = <0>, "+102+103", + <&backlight>, "gpios:4"; + backlight-pwm = <0>, "+104+105+106+107+108"; + backlight-pwm-chan = <&backlight_pwm>, "pwms:4"; + backlight-pwm-gpio = <&pwm_pins>, "brcm,pins:0"; + backlight-pwm-func = <&pwm_pins>, "brcm,function:0"; + backlight-def-brightness = <&backlight_pwm>, "default-brightness-level:0"; + }; +}; --- a/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts +++ b/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts @@ -1,43 +1,26 @@ /* - * vc4-kms-v3d-overlay.dts + * vc4-kms-kippah-7inch-overlay.dts */ /dts-v1/; /plugin/; -#include +#include "vc4-kms-dpi.dtsi" / { compatible = "brcm,bcm2835"; fragment@0 { - target-path = "/"; - __overlay__ { - panel: panel { - compatible = "ontat,yx700wv03", "simple-panel"; - - port { - panel_in: endpoint { - remote-endpoint = <&dpi_out>; - }; - }; - }; + target = <&panel>; + __overlay__ { + compatible = "ontat,yx700wv03", "simple-panel"; }; }; fragment@1 { target = <&dpi>; __overlay__ { - status = "okay"; - - pinctrl-names = "default"; pinctrl-0 = <&dpi_18bit_gpio0>; - - port { - dpi_out: endpoint@0 { - remote-endpoint = <&panel_in>; - }; - }; }; }; };