From 3cd31a44e61e2219d730d6b1a4a13c8e15d6e395 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne Date: Thu, 2 Apr 2020 19:54:33 +0200 Subject: [PATCH] ARM: dts: overlays: Unify overlay CMA handling Now that we don't have to abuse the kernel command line to change CMA's size we can clean-up and centralize CMA usage in overlays. A new file, cma-overlay.dts is created to be used as a standalone overlay or included on other overlays. All CMA users are converted to this scheme. Ultimately upstream-overlay.dts is also updated to use the default CMA size provided by upstream. Signed-off-by: Nicolas Saenz Julienne --- arch/arm/boot/dts/overlays/Makefile | 1 + arch/arm/boot/dts/overlays/README | 19 +++++ arch/arm/boot/dts/overlays/cma-overlay.dts | 32 ++++++++ .../boot/dts/overlays/upstream-overlay.dts | 56 ++++--------- .../dts/overlays/upstream-pi4-overlay.dts | 66 +++++---------- .../dts/overlays/vc4-fkms-v3d-overlay.dts | 51 ++---------- .../boot/dts/overlays/vc4-kms-v3d-overlay.dts | 66 ++++----------- .../dts/overlays/vc4-kms-v3d-pi4-overlay.dts | 80 +++++-------------- 8 files changed, 129 insertions(+), 242 deletions(-) create mode 100644 arch/arm/boot/dts/overlays/cma-overlay.dts --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile @@ -28,6 +28,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ audiosense-pi.dtbo \ audremap.dtbo \ balena-fin.dtbo \ + cma.dtbo \ dht11.dtbo \ dionaudio-loco.dtbo \ dionaudio-loco-v2.dtbo \ --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -554,6 +554,19 @@ Info: This overlay is now deprecated - Load: +Name: cma +Info: Set custom CMA sizes, only use if you know what you are doing, might + clash with other overlays like vc4-fkms-v3d and vc4-kms-v3d. +Load: dtoverlay=cma,= +Params: cma-256 CMA is 256MB (needs 1GB) + cma-192 CMA is 192MB (needs 1GB) + cma-128 CMA is 128MB + cma-96 CMA is 96MB + cma-64 CMA is 64MB + cma-size CMA size in bytes, 4MB aligned + cma-default Use upstream's default value + + Name: dht11 Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors Also sometimes found with the part number(s) AM230x. @@ -2675,6 +2688,8 @@ Params: cma-256 CMA is 2 cma-128 CMA is 128MB cma-96 CMA is 96MB cma-64 CMA is 64MB + cma-size CMA size in bytes, 4MB aligned + cma-default Use upstream's default value Name: vc4-kms-kippah-7inch @@ -2692,6 +2707,8 @@ Params: cma-256 CMA is 2 cma-128 CMA is 128MB cma-96 CMA is 96MB cma-64 CMA is 64MB + cma-size CMA size in bytes, 4MB aligned + cma-default Use upstream's default value audio Enable or disable audio over HDMI (default "on") @@ -2703,6 +2720,8 @@ Params: cma-256 CMA is 2 cma-128 CMA is 128MB cma-96 CMA is 96MB cma-64 CMA is 64MB + cma-size CMA size in bytes, 4MB aligned + cma-default Use upstream's default value audio Enable or disable audio over HDMI0 (default "on") audio1 Enable or disable audio over HDMI1 (default --- /dev/null +++ b/arch/arm/boot/dts/overlays/cma-overlay.dts @@ -0,0 +1,32 @@ +/* + * cma.dts + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835"; + + fragment@0 { + target = <&cma>; + frag0: __overlay__ { + /* + * The default size when using this overlay is 256 MB + * and should be kept as is for backwards + * compatibility. + */ + size = <0x10000000>; + }; + }; + + __overrides__ { + cma-256 = <&frag0>,"size:0=",<0x10000000>; + cma-192 = <&frag0>,"size:0=",<0xC000000>; + cma-128 = <&frag0>,"size:0=",<0x8000000>; + cma-96 = <&frag0>,"size:0=",<0x6000000>; + cma-64 = <&frag0>,"size:0=",<0x4000000>; + cma-size = <&frag0>,"size:0"; /* in bytes, 4MB aligned */ + cma-default = <0>,"-0"; + }; +}; --- a/arch/arm/boot/dts/overlays/upstream-overlay.dts +++ b/arch/arm/boot/dts/overlays/upstream-overlay.dts @@ -1,4 +1,4 @@ -// redo: ovmerge -c vc4-kms-v3d-overlay.dts,cma-96 dwc2-overlay.dts,dr_mode=otg +// redo: ovmerge -c vc4-kms-v3d-overlay.dts,cma-default dwc2-overlay.dts,dr_mode=otg /dts-v1/; /plugin/; @@ -8,114 +8,90 @@ / { compatible = "brcm,bcm2835"; fragment@0 { - target-path = "/chosen"; + target = <&cma>; __dormant__ { - bootargs = "cma=256M"; + size = <0x10000000>; }; }; fragment@1 { - target-path = "/chosen"; - __dormant__ { - bootargs = "cma=192M"; - }; - }; - fragment@2 { - target-path = "/chosen"; - __dormant__ { - bootargs = "cma=128M"; - }; - }; - fragment@3 { - target-path = "/chosen"; - __overlay__ { - bootargs = "cma=96M"; - }; - }; - fragment@4 { - target-path = "/chosen"; - __dormant__ { - bootargs = "cma=64M"; - }; - }; - fragment@5 { target = <&i2c2>; __overlay__ { status = "okay"; }; }; - fragment@6 { + fragment@2 { target = <&fb>; __overlay__ { status = "disabled"; }; }; - fragment@7 { + fragment@3 { target = <&pixelvalve0>; __overlay__ { status = "okay"; }; }; - fragment@8 { + fragment@4 { target = <&pixelvalve1>; __overlay__ { status = "okay"; }; }; - fragment@9 { + fragment@5 { target = <&pixelvalve2>; __overlay__ { status = "okay"; }; }; - fragment@10 { + fragment@6 { target = <&hvs>; __overlay__ { status = "okay"; }; }; - fragment@11 { + fragment@7 { target = <&hdmi>; __overlay__ { status = "okay"; }; }; - fragment@12 { + fragment@8 { target = <&v3d>; __overlay__ { status = "okay"; }; }; - fragment@13 { + fragment@9 { target = <&vc4>; __overlay__ { status = "okay"; }; }; - fragment@14 { + fragment@10 { target = <&clocks>; __overlay__ { claim-clocks = ; }; }; - fragment@15 { + fragment@11 { target = <&vec>; __overlay__ { status = "okay"; }; }; - fragment@16 { + fragment@12 { target = <&txp>; __overlay__ { status = "okay"; }; }; - fragment@17 { + fragment@13 { target = <&hdmi>; __dormant__ { dmas; }; }; - fragment@18 { + fragment@14 { target = <&usb>; #address-cells = <1>; #size-cells = <1>; --- a/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts +++ b/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts @@ -8,144 +8,120 @@ / { compatible = "brcm,bcm2835"; fragment@0 { - target-path = "/chosen"; - __dormant__ { - 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"; + target = <&cma>; __overlay__ { - bootargs = "cma=96M"; + size = <100663296>; }; }; - fragment@4 { - target-path = "/chosen"; - __dormant__ { - bootargs = "cma=64M"; - }; - }; - fragment@5 { + fragment@1 { target = <&ddc0>; __overlay__ { status = "okay"; }; }; - fragment@6 { + fragment@2 { target = <&ddc1>; __overlay__ { status = "okay"; }; }; - fragment@7 { + fragment@3 { target = <&hdmi0>; __overlay__ { status = "okay"; }; }; - fragment@8 { + fragment@4 { target = <&hdmi1>; __overlay__ { status = "okay"; }; }; - fragment@9 { + fragment@5 { target = <&hvs>; __overlay__ { status = "okay"; }; }; - fragment@10 { + fragment@6 { target = <&pixelvalve0>; __overlay__ { status = "okay"; }; }; - fragment@11 { + fragment@7 { target = <&pixelvalve1>; __overlay__ { status = "okay"; }; }; - fragment@12 { + fragment@8 { target = <&pixelvalve2>; __overlay__ { status = "okay"; }; }; - fragment@13 { + fragment@9 { target = <&pixelvalve3>; __overlay__ { status = "okay"; }; }; - fragment@14 { + fragment@10 { target = <&pixelvalve4>; __overlay__ { status = "okay"; }; }; - fragment@15 { + fragment@11 { target = <&v3d>; __overlay__ { status = "okay"; }; }; - fragment@16 { + fragment@12 { target = <&vc4>; __overlay__ { status = "okay"; }; }; - fragment@17 { + fragment@13 { target = <&txp>; __overlay__ { status = "okay"; }; }; - fragment@18 { + fragment@14 { target = <&fb>; __overlay__ { status = "disabled"; }; }; - fragment@19 { + fragment@15 { target = <&firmwarekms>; __overlay__ { status = "disabled"; }; }; - fragment@20 { + fragment@16 { target = <&vec>; __overlay__ { status = "disabled"; }; }; - fragment@21 { + fragment@17 { target = <&hdmi0>; __dormant__ { dmas; }; }; - fragment@22 { + fragment@18 { target = <&hdmi1>; __dormant__ { dmas; }; }; - fragment@23 { + fragment@19 { target = <&usb>; #address-cells = <1>; #size-cells = <1>; --- a/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts +++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts @@ -5,77 +5,36 @@ /dts-v1/; /plugin/; +#include "cma-overlay.dts" + / { 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 = <&fb>; __overlay__ { status = "disabled"; }; }; - fragment@6 { + fragment@2 { target = <&firmwarekms>; __overlay__ { status = "okay"; }; }; - fragment@7 { + fragment@3 { target = <&v3d>; __overlay__ { status = "okay"; }; }; - fragment@8 { + fragment@4 { target = <&vc4>; __overlay__ { status = "okay"; }; }; - - __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"; - }; }; --- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts @@ -7,108 +7,75 @@ #include +#include "cma-overlay.dts" + / { 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 = <&i2c2>; __overlay__ { status = "okay"; }; }; - fragment@6 { + fragment@2 { target = <&fb>; __overlay__ { status = "disabled"; }; }; - fragment@7 { + fragment@3 { target = <&pixelvalve0>; __overlay__ { status = "okay"; }; }; - fragment@8 { + fragment@4 { target = <&pixelvalve1>; __overlay__ { status = "okay"; }; }; - fragment@9 { + fragment@5 { target = <&pixelvalve2>; __overlay__ { status = "okay"; }; }; - fragment@10 { + fragment@6 { target = <&hvs>; __overlay__ { status = "okay"; }; }; - fragment@11 { + fragment@7 { target = <&hdmi>; __overlay__ { status = "okay"; }; }; - fragment@12 { + fragment@8 { target = <&v3d>; __overlay__ { status = "okay"; }; }; - fragment@13 { + fragment@9 { target = <&vc4>; __overlay__ { status = "okay"; }; }; - fragment@14 { + fragment@10 { target = <&clocks>; __overlay__ { claim-clocks = < @@ -120,21 +87,21 @@ }; }; - fragment@15 { + fragment@11 { target = <&vec>; __overlay__ { status = "okay"; }; }; - fragment@16 { + fragment@12 { target = <&txp>; __overlay__ { status = "okay"; }; }; - fragment@17 { + fragment@13 { target = <&hdmi>; __dormant__ { dmas; @@ -142,11 +109,6 @@ }; __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>,"!17"; }; }; --- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts @@ -7,164 +7,131 @@ #include +#include "cma-overlay.dts" + / { 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 { + fragment@2 { target = <&ddc1>; __overlay__ { status = "okay"; }; }; - fragment@7 { + fragment@3 { target = <&hdmi0>; __overlay__ { status = "okay"; }; }; - fragment@8 { + fragment@4 { target = <&hdmi1>; __overlay__ { status = "okay"; }; }; - fragment@9 { + fragment@5 { target = <&hvs>; __overlay__ { status = "okay"; }; }; - fragment@10 { + fragment@6 { target = <&pixelvalve0>; __overlay__ { status = "okay"; }; }; - fragment@11 { + fragment@7 { target = <&pixelvalve1>; __overlay__ { status = "okay"; }; }; - fragment@12 { + fragment@8 { target = <&pixelvalve2>; __overlay__ { status = "okay"; }; }; - fragment@13 { + fragment@9 { target = <&pixelvalve3>; __overlay__ { status = "okay"; }; }; - fragment@14 { + fragment@10 { target = <&pixelvalve4>; __overlay__ { status = "okay"; }; }; - fragment@15 { + fragment@11 { target = <&v3d>; __overlay__ { status = "okay"; }; }; - fragment@16 { + fragment@12 { target = <&vc4>; __overlay__ { status = "okay"; }; }; - fragment@17 { + fragment@13 { target = <&txp>; __overlay__ { status = "okay"; }; }; - fragment@18 { + fragment@14 { target = <&fb>; __overlay__ { status = "disabled"; }; }; - fragment@19 { + fragment@15 { target = <&firmwarekms>; __overlay__ { status = "disabled"; }; }; - fragment@20 { + fragment@16 { target = <&vec>; __overlay__ { status = "disabled"; }; }; - fragment@21 { + fragment@17 { target = <&hdmi0>; __dormant__ { dmas; }; }; - fragment@22 { + fragment@18 { target = <&hdmi1>; __dormant__ { dmas; @@ -172,12 +139,7 @@ }; __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"; + audio = <0>,"!17"; + audio1 = <0>,"!18"; }; };