Message ID | 20240116134142.2092483-4-devarsht@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add display sharing support in tidss | expand |
Hi, On 16/01/2024 15:41, Devarsh Thakkar wrote: > This overlay needs to be used with display sharing supported device > manager firmware only. > > Remote core running this firmware has write access to "common" register > space, VIDL pipeline, OVR1 overlay and VP1 videoport. > > The processing core running Linux is provided write access to VID > pipeline and "common1" register space. > > The VP1 video port is shared between Linux and remote core with remote > core configuring the overlay manager to set Zorder 1 for VID pipeline > and Zorder 2 for VIDL pipeline. > > Add reserved memory region for framebuffer region used by remote core in > dss shared mode overlay file so that Linux does not re-use the same > while allocating memory. I don't understand this one. Why is RAM used by RTOS accessible by Linux in the first place? Tomi > Also add a label for reserved memory region in base device-tree file so > that it can be referred back in overlay file. > > Signed-off-by: Devarsh Thakkar <devarsht@ti.com> > --- > arch/arm64/boot/dts/ti/Makefile | 1 + > .../arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 2 +- > .../dts/ti/k3-am62x-sk-dss-shared-mode.dtso | 33 +++++++++++++++++++ > 3 files changed, 35 insertions(+), 1 deletion(-) > create mode 100644 arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso > > diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile > index 52c1dc910308..ff832741b367 100644 > --- a/arch/arm64/boot/dts/ti/Makefile > +++ b/arch/arm64/boot/dts/ti/Makefile > @@ -35,6 +35,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-ov5640.dtbo > dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-tevi-ov5640.dtbo > dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-imx219.dtbo > dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-hdmi-audio.dtbo > +dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-dss-shared-mode.dtbo > > # Boards with AM64x SoC > dtb-$(CONFIG_ARCH_K3) += k3-am642-evm.dtb > diff --git a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi > index 33768c02d8eb..8b55ca10102f 100644 > --- a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi > +++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi > @@ -34,7 +34,7 @@ memory@80000000 { > reg = <0x00000000 0x80000000 0x00000000 0x80000000>; > }; > > - reserved-memory { > + reserved_memory: reserved-memory { > #address-cells = <2>; > #size-cells = <2>; > ranges; > diff --git a/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso b/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso > new file mode 100644 > index 000000000000..02153748a5c2 > --- /dev/null > +++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso > @@ -0,0 +1,33 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/** > + * DT overlay to enable display sharing mode for AM62P DSS0 > + * This is compatible with custom AM62 Device Manager firmware > + * > + * Copyright (C) 2023 Texas Instruments Incorporated - http://www.ti.com/ > + */ > + > +/dts-v1/; > +/plugin/; > + > +#include <dt-bindings/interrupt-controller/irq.h> > +#include <dt-bindings/interrupt-controller/arm-gic.h> > + > +&dss0 { > + ti,dss-shared-mode; > + ti,dss-shared-mode-vp = "vp1"; > + ti,dss-shared-mode-vp-owned = <0>; > + ti,dss-shared-mode-common = "common1"; > + ti,dss-shared-mode-planes = "vid"; > + ti,dss-shared-mode-plane-zorder = <0>; > + interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; > +}; > + > +&reserved_memory { > + #address-cells = <2>; > + #size-cells = <2>; > + rtos_framebuffer_memory_region: rtos-framebuffer-memory@94800000 { > + compatible = "shared-dma-pool"; > + reg = <0x00 0x94800000 0x00 0x08000000>; > + no-map; > + }; > +};
Hi Tomi, Thanks for the review. On 23/01/24 13:59, Tomi Valkeinen wrote: > Hi, > > On 16/01/2024 15:41, Devarsh Thakkar wrote: >> This overlay needs to be used with display sharing supported device >> manager firmware only. >> >> Remote core running this firmware has write access to "common" register >> space, VIDL pipeline, OVR1 overlay and VP1 videoport. >> >> The processing core running Linux is provided write access to VID >> pipeline and "common1" register space. >> >> The VP1 video port is shared between Linux and remote core with remote >> core configuring the overlay manager to set Zorder 1 for VID pipeline >> and Zorder 2 for VIDL pipeline. >> >> Add reserved memory region for framebuffer region used by remote core in >> dss shared mode overlay file so that Linux does not re-use the same >> while allocating memory. > > I don't understand this one. Why is RAM used by RTOS accessible by Linux > in the first place? > Well, I think the R5 SPL initializes full DDR before starting firmwares on remote cores and the regions used by this remote cores be it for IPC or Code/data are marked as reserved both in Linux as well as U-boot so that Linux/U-boot does not use it [1]. Same scheme is followed here w.r. t RTOS framebuffer too. [1] : https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi?h=v6.7#n63 Regards Devarsh > Tomi > >> Also add a label for reserved memory region in base device-tree file so >> that it can be referred back in overlay file. >> >> Signed-off-by: Devarsh Thakkar <devarsht@ti.com> >> --- >> arch/arm64/boot/dts/ti/Makefile | 1 + >> .../arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 2 +- >> .../dts/ti/k3-am62x-sk-dss-shared-mode.dtso | 33 +++++++++++++++++++ >> 3 files changed, 35 insertions(+), 1 deletion(-) >> create mode 100644 >> arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso >> >> diff --git a/arch/arm64/boot/dts/ti/Makefile >> b/arch/arm64/boot/dts/ti/Makefile >> index 52c1dc910308..ff832741b367 100644 >> --- a/arch/arm64/boot/dts/ti/Makefile >> +++ b/arch/arm64/boot/dts/ti/Makefile >> @@ -35,6 +35,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-ov5640.dtbo >> dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-tevi-ov5640.dtbo >> dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-imx219.dtbo >> dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-hdmi-audio.dtbo >> +dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-dss-shared-mode.dtbo >> # Boards with AM64x SoC >> dtb-$(CONFIG_ARCH_K3) += k3-am642-evm.dtb >> diff --git a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi >> b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi >> index 33768c02d8eb..8b55ca10102f 100644 >> --- a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi >> +++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi >> @@ -34,7 +34,7 @@ memory@80000000 { >> reg = <0x00000000 0x80000000 0x00000000 0x80000000>; >> }; >> - reserved-memory { >> + reserved_memory: reserved-memory { >> #address-cells = <2>; >> #size-cells = <2>; >> ranges; >> diff --git a/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso >> b/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso >> new file mode 100644 >> index 000000000000..02153748a5c2 >> --- /dev/null >> +++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso >> @@ -0,0 +1,33 @@ >> +// SPDX-License-Identifier: GPL-2.0 >> +/** >> + * DT overlay to enable display sharing mode for AM62P DSS0 >> + * This is compatible with custom AM62 Device Manager firmware >> + * >> + * Copyright (C) 2023 Texas Instruments Incorporated - >> http://www.ti.com/ >> + */ >> + >> +/dts-v1/; >> +/plugin/; >> + >> +#include <dt-bindings/interrupt-controller/irq.h> >> +#include <dt-bindings/interrupt-controller/arm-gic.h> >> + >> +&dss0 { >> + ti,dss-shared-mode; >> + ti,dss-shared-mode-vp = "vp1"; >> + ti,dss-shared-mode-vp-owned = <0>; >> + ti,dss-shared-mode-common = "common1"; >> + ti,dss-shared-mode-planes = "vid"; >> + ti,dss-shared-mode-plane-zorder = <0>; >> + interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; >> +}; >> + >> +&reserved_memory { >> + #address-cells = <2>; >> + #size-cells = <2>; >> + rtos_framebuffer_memory_region: rtos-framebuffer-memory@94800000 { >> + compatible = "shared-dma-pool"; >> + reg = <0x00 0x94800000 0x00 0x08000000>; >> + no-map; >> + }; >> +}; > >
diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile index 52c1dc910308..ff832741b367 100644 --- a/arch/arm64/boot/dts/ti/Makefile +++ b/arch/arm64/boot/dts/ti/Makefile @@ -35,6 +35,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-ov5640.dtbo dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-tevi-ov5640.dtbo dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-imx219.dtbo dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-hdmi-audio.dtbo +dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-dss-shared-mode.dtbo # Boards with AM64x SoC dtb-$(CONFIG_ARCH_K3) += k3-am642-evm.dtb diff --git a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi index 33768c02d8eb..8b55ca10102f 100644 --- a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi @@ -34,7 +34,7 @@ memory@80000000 { reg = <0x00000000 0x80000000 0x00000000 0x80000000>; }; - reserved-memory { + reserved_memory: reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; diff --git a/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso b/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso new file mode 100644 index 000000000000..02153748a5c2 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0 +/** + * DT overlay to enable display sharing mode for AM62P DSS0 + * This is compatible with custom AM62 Device Manager firmware + * + * Copyright (C) 2023 Texas Instruments Incorporated - http://www.ti.com/ + */ + +/dts-v1/; +/plugin/; + +#include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/interrupt-controller/arm-gic.h> + +&dss0 { + ti,dss-shared-mode; + ti,dss-shared-mode-vp = "vp1"; + ti,dss-shared-mode-vp-owned = <0>; + ti,dss-shared-mode-common = "common1"; + ti,dss-shared-mode-planes = "vid"; + ti,dss-shared-mode-plane-zorder = <0>; + interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; +}; + +&reserved_memory { + #address-cells = <2>; + #size-cells = <2>; + rtos_framebuffer_memory_region: rtos-framebuffer-memory@94800000 { + compatible = "shared-dma-pool"; + reg = <0x00 0x94800000 0x00 0x08000000>; + no-map; + }; +};
This overlay needs to be used with display sharing supported device manager firmware only. Remote core running this firmware has write access to "common" register space, VIDL pipeline, OVR1 overlay and VP1 videoport. The processing core running Linux is provided write access to VID pipeline and "common1" register space. The VP1 video port is shared between Linux and remote core with remote core configuring the overlay manager to set Zorder 1 for VID pipeline and Zorder 2 for VIDL pipeline. Add reserved memory region for framebuffer region used by remote core in dss shared mode overlay file so that Linux does not re-use the same while allocating memory. Also add a label for reserved memory region in base device-tree file so that it can be referred back in overlay file. Signed-off-by: Devarsh Thakkar <devarsht@ti.com> --- arch/arm64/boot/dts/ti/Makefile | 1 + .../arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 2 +- .../dts/ti/k3-am62x-sk-dss-shared-mode.dtso | 33 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 arch/arm64/boot/dts/ti/k3-am62x-sk-dss-shared-mode.dtso