From 7f9f7a113e9c5d6efd997de7de93af31ec286174 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Fri, 20 Sep 2019 17:20:01 +0100 Subject: [PATCH] dtoverlays: Add Pi4 version of vc4-kms-v3d The Pi4 version of the KMS drivers is a work in progress, some blocks need alternate configuration, and some blocks currently need to remain disabled (eg the VEC). Add a new overlay (vc4-kms-v3d-pi4) that loads the parts of vc4-kms that do work on Pi4. This has been tested with DPI and HDMI (not 100% reliable on mode switching) Signed-off-by: Dave Stevenson --- arch/arm/boot/dts/overlays/Makefile | 1 + arch/arm/boot/dts/overlays/README | 14 ++ .../dts/overlays/vc4-kms-v3d-pi4-overlay.dts | 183 ++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile @@ -191,6 +191,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ vc4-fkms-v3d.dtbo \ vc4-kms-kippah-7inch.dtbo \ vc4-kms-v3d.dtbo \ + vc4-kms-v3d-pi4.dtbo \ vga666.dtbo \ w1-gpio.dtbo \ w1-gpio-pullup.dtbo \ --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -2684,6 +2684,20 @@ Params: cma-256 CMA is 2 audio Enable or disable audio over HDMI (default "on") +Name: vc4-kms-v3d-pi4 +Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver for Pi4. +Load: dtoverlay=vc4-kms-v3d-pi4, +Params: cma-256 CMA is 256MB + cma-192 CMA is 192MB + cma-128 CMA is 128MB + cma-96 CMA is 96MB + cma-64 CMA is 64MB + audio Enable or disable audio over HDMI0 (default + "on") + audio1 Enable or disable audio over HDMI1 (default + "on") + + Name: vga666 Info: Overlay for the Fen Logic VGA666 board This uses GPIOs 2-21 (so no I2C), and activates the output 2-3 seconds --- /dev/null +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts @@ -0,0 +1,183 @@ +/* + * vc4-kms-v3d-pi4-overlay.dts + */ + +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "brcm,bcm2835"; + + fragment@0 { + target-path = "/chosen"; + __overlay__ { + bootargs = "cma=256M"; + }; + }; + + fragment@1 { + target-path = "/chosen"; + __dormant__ { + bootargs = "cma=192M"; + }; + }; + + fragment@2 { + target-path = "/chosen"; + __dormant__ { + bootargs = "cma=128M"; + }; + }; + + fragment@3 { + target-path = "/chosen"; + __dormant__ { + bootargs = "cma=96M"; + }; + }; + + fragment@4 { + target-path = "/chosen"; + __dormant__ { + bootargs = "cma=64M"; + }; + }; + + fragment@5 { + target = <&ddc0>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@6 { + target = <&ddc1>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@7 { + target = <&hdmi0>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@8 { + target = <&hdmi1>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@9 { + target = <&hvs>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@10 { + target = <&pixelvalve0>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@11 { + target = <&pixelvalve1>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@12 { + target = <&pixelvalve2>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@13 { + target = <&pixelvalve3>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@14 { + target = <&pixelvalve4>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@15 { + target = <&v3d>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@16 { + target = <&vc4>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@17 { + target = <&txp>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@18 { + target = <&fb>; + __overlay__ { + status = "disabled"; + }; + }; + + fragment@19 { + target = <&firmwarekms>; + __overlay__ { + status = "disabled"; + }; + }; + + fragment@20 { + target = <&vec>; + __overlay__ { + status = "disabled"; + }; + }; + + fragment@21 { + target = <&hdmi0>; + __dormant__ { + dmas; + }; + }; + + fragment@22 { + target = <&hdmi1>; + __dormant__ { + dmas; + }; + }; + + __overrides__ { + cma-256 = <0>,"+0-1-2-3-4"; + cma-192 = <0>,"-0+1-2-3-4"; + cma-128 = <0>,"-0-1+2-3-4"; + cma-96 = <0>,"-0-1-2+3-4"; + cma-64 = <0>,"-0-1-2-3+4"; + audio = <0>,"!21"; + audio1 = <0>,"!22"; + }; +};