[PATCH 39/39] arm64: dts: imx95: Describe display pipeline
Marek Vasut
marek.vasut at mailbox.org
Sat Oct 11 09:51:54 PDT 2025
Describe the entire i.MX95 display pipeline, which includes the DPU or DC
display controller, MIPI DSI serializer, LVDS serializer and the bridges
between those components.
Signed-off-by: Marek Vasut <marek.vasut at mailbox.org>
---
Cc: Abel Vesa <abelvesa at kernel.org>
Cc: Conor Dooley <conor+dt at kernel.org>
Cc: Fabio Estevam <festevam at gmail.com>
Cc: Krzysztof Kozlowski <krzk+dt at kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart at ideasonboard.com>
Cc: Liu Ying <victor.liu at nxp.com>
Cc: Lucas Stach <l.stach at pengutronix.de>
Cc: Peng Fan <peng.fan at nxp.com>
Cc: Pengutronix Kernel Team <kernel at pengutronix.de>
Cc: Rob Herring <robh at kernel.org>
Cc: Shawn Guo <shawnguo at kernel.org>
Cc: Thomas Zimmermann <tzimmermann at suse.de>
Cc: devicetree at vger.kernel.org
Cc: dri-devel at lists.freedesktop.org
Cc: imx at lists.linux.dev
Cc: linux-arm-kernel at lists.infradead.org
Cc: linux-clk at vger.kernel.org
---
arch/arm64/boot/dts/freescale/imx95.dtsi | 710 +++++++++++++++++++++++
1 file changed, 710 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx95.dtsi b/arch/arm64/boot/dts/freescale/imx95.dtsi
index ad47b7f0d173a..e26942ab0b28b 100644
--- a/arch/arm64/boot/dts/freescale/imx95.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx95.dtsi
@@ -19,6 +19,87 @@ / {
#address-cells = <2>;
#size-cells = <2>;
+ ldb_pll_pixel: ldb_pll_div7 {
+ #clock-cells = <0>;
+ compatible = "fixed-factor-clock";
+ clocks = <&scmi_clk IMX95_CLK_LDBPLL>;
+ clock-div = <7>;
+ clock-mult = <1>;
+ clock-output-names = "ldb_pll_div7";
+ };
+
+ display_pixel_link_0: pixel-link-0 {
+ compatible = "fsl,imx95-dc-pixel-link";
+ fsl,dc-stream-id = /bits/ 8 <0>;
+ fsl,syscon = <&dispmix_csr>;
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port at 0 {
+ reg = <0>;
+
+ display_pixel_link0_to_pixel_interleaver_disp0: endpoint {
+ remote-endpoint = <&pixel_interleaver_disp0_to_display_pixel_link0>;
+ };
+ };
+
+ port at 1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+
+ display_pixel_link0_to_mipi_dsi: endpoint at 0 {
+ reg = <0>;
+ remote-endpoint = <&mipi_dsi_to_display_pixel_link0>;
+ };
+
+ display_pixel_link0_to_lvds_ch0: endpoint at 1 {
+ reg = <1>;
+ remote-endpoint = <&lvds_ch0_to_display_pixel_link0>;
+ };
+ };
+ };
+ };
+
+ display_pixel_link_1: pixel-link-1 {
+ compatible = "fsl,imx95-dc-pixel-link";
+ fsl,dc-stream-id = /bits/ 8 <1>;
+ fsl,syscon = <&dispmix_csr>;
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port at 0 {
+ reg = <0>;
+
+ display_pixel_link1_to_pixel_interleaver_disp1: endpoint {
+ remote-endpoint = <&pixel_interleaver_disp1_to_display_pixel_link1>;
+ };
+ };
+
+ port at 1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+
+ display_pixel_link1_to_mipi_dsi: endpoint at 0 {
+ reg = <0>;
+ remote-endpoint = <&mipi_dsi_to_display_pixel_link1>;
+ };
+
+ display_pixel_link1_to_lvds_ch1: endpoint at 1 {
+ reg = <1>;
+ remote-endpoint = <&lvds_ch1_to_display_pixel_link1>;
+ };
+ };
+ };
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -1772,6 +1853,635 @@ smmu: iommu at 490d0000 {
};
};
+ mipi_dsi: dsi at 4acf0000 {
+ compatible = "fsl,imx95-mipi-dsi";
+ reg = <0x0 0x4acf0000 0x0 0x10000>;
+ interrupt-parent = <&displaymix_irqsteer>;
+ interrupts = <48>;
+ clocks = <&scmi_clk IMX95_CLK_CAMAPB>,
+ <&scmi_clk IMX95_CLK_DISP1PIX>,
+ <&scmi_clk IMX95_CLK_MIPIPHYCFG>,
+ <&scmi_clk IMX95_CLK_MIPIPHYPLLREF>;
+ clock-names = "pclk", "pix", "phy_cfg", "phy_ref";
+ assigned-clocks = <&scmi_clk IMX95_CLK_MIPIPHYCFG>,
+ <&scmi_clk IMX95_CLK_MIPIPHYPLLBYPASS>,
+ <&scmi_clk IMX95_CLK_MIPIPHYPLLREF>;
+ assigned-clock-parents = <&scmi_clk IMX95_CLK_24M>,
+ <&scmi_clk IMX95_CLK_VIDEOPLL1>,
+ <&scmi_clk IMX95_CLK_24M>;
+ power-domains = <&scmi_devpd IMX95_PD_CAMERA>;
+ fsl,disp-master-csr = <&display_master_csr>;
+ fsl,disp-stream-csr = <&display_stream_csr>;
+ fsl,mipi-combo-phy-csr = <&mipi_tx_phy_csr>;
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port at 0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ mipi_dsi_to_display_pixel_link0: endpoint at 0 {
+ reg = <0>;
+ remote-endpoint = <&display_pixel_link0_to_mipi_dsi>;
+ };
+
+ mipi_dsi_to_display_pixel_link1: endpoint at 1 {
+ reg = <1>;
+ remote-endpoint = <&display_pixel_link1_to_mipi_dsi>;
+ };
+ };
+
+ port at 1 {
+ reg = <1>;
+ };
+ };
+ };
+
+ display_stream_csr: syscon at 4ad00000 {
+ compatible = "nxp,imx95-display-stream-csr", "syscon";
+ reg = <0x0 0x4ad00000 0x0 0x10000>;
+ clocks = <&scmi_clk IMX95_CLK_CAMAPB>;
+ };
+
+ display_master_csr: syscon at 4ad10000 {
+ compatible = "nxp,imx95-master-stream-csr", "syscon";
+ reg = <0x0 0x4ad10000 0x0 0x10000>;
+ clocks = <&scmi_clk IMX95_CLK_CAMAPB>;
+ };
+
+ mipi_tx_phy_csr: syscon at 4ad20100 {
+ compatible = "nxp,imx95-mipi-tx-phy-csr", "syscon";
+ reg = <0x0 0x4ad20100 0x0 0x14>;
+ clocks = <&scmi_clk IMX95_CLK_CAMAPB>;
+ };
+
+ dispmix_csr: syscon at 4b010000 {
+ compatible = "nxp,imx95-display-csr", "syscon";
+ reg = <0x0 0x4b010000 0x0 0x10000>;
+ #clock-cells = <1>;
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>;
+ power-domains = <&scmi_devpd IMX95_PD_DISPLAY>;
+ };
+
+ displaymix_irqsteer: interrupt-controller at 4b0b0000 {
+ compatible = "fsl,imx95-irqsteer", "fsl,imx-irqsteer";
+ reg = <0x0 0x4b0b0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>, /* reserved */
+ <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>, /* reserved */
+ <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&scmi_devpd IMX95_PD_DISPLAY>;
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>;
+ clock-names = "ipg";
+ fsl,channel = <0>;
+ fsl,num-irqs = <512>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ status = "disabled";
+ };
+
+ lvds_csr: syscon at 4b0c0000 {
+ compatible = "nxp,imx95-lvds-csr", "syscon";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x0 0x4b0c0000 0x0 0x10000>;
+ #clock-cells = <1>;
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>;
+ power-domains = <&scmi_devpd IMX95_PD_DISPLAY>;
+
+ lvds: lvds at 4 {
+ compatible = "fsl,imx95-lvds";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x4 0x4>;
+ clocks = <&lvds_csr IMX95_CLK_DISPMIX_PIX_DI0_GATE>,
+ <&lvds_csr IMX95_CLK_DISPMIX_PIX_DI1_GATE>,
+ <&lvds_csr IMX95_CLK_DISPMIX_LVDS_CH0_GATE>,
+ <&lvds_csr IMX95_CLK_DISPMIX_LVDS_CH1_GATE>;
+ clock-names = "ldb_di0", "ldb_di1", "ldb_ch0", "ldb_ch1";
+ status = "disabled";
+
+ lvds_ch0: channel at 0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ status = "disabled";
+
+ port at 0 {
+ reg = <0>;
+
+ lvds_ch0_to_display_pixel_link0: endpoint {
+ remote-endpoint = <&display_pixel_link0_to_lvds_ch0>;
+ };
+ };
+
+ port at 1 {
+ reg = <1>;
+
+ lvds_ch0_to_ldb0: endpoint {
+ remote-endpoint = <&ldb0_to_lvds_ch0>;
+ };
+ };
+ };
+
+ lvds_ch1: channel at 1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ status = "disabled";
+
+ port at 0 {
+ reg = <0>;
+
+ lvds_ch1_to_display_pixel_link1: endpoint {
+ remote-endpoint = <&display_pixel_link1_to_lvds_ch1>;
+ };
+ };
+
+ port at 1 {
+ reg = <1>;
+
+ lvds_ch1_to_ldb1: endpoint {
+ remote-endpoint = <&ldb1_to_lvds_ch1>;
+ };
+ };
+ };
+ };
+
+ ldb0: phy at 8 {
+ compatible = "fsl,imx95-ldb";
+ reg = <0x8 0x4>, <0x8 0x4>;
+ reg-names = "ldb", "lvds";
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>;
+ clock-names = "ldb";
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port at 0 {
+ reg = <0>;
+
+ ldb0_to_lvds_ch0: endpoint {
+ remote-endpoint = <&lvds_ch0_to_ldb0>;
+ };
+ };
+
+ ldb0_port1: port at 1 {
+ reg = <1>;
+ };
+ };
+ };
+
+ ldb1: phy at c {
+ compatible = "fsl,imx95-ldb";
+ reg = <0xc 0x4>, <0xc 0x4>;
+ reg-names = "ldb", "lvds";
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>;
+ clock-names = "ldb";
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port at 0 {
+ reg = <0>;
+
+ ldb1_to_lvds_ch1: endpoint {
+ remote-endpoint = <&lvds_ch1_to_ldb1>;
+ };
+ };
+
+ ldb1_port1: port at 1 {
+ reg = <1>;
+ };
+ };
+ };
+ };
+
+ pixel_interleaver_0: bridge at 4b0d0000 {
+ compatible = "fsl,imx95-pixel-interleaver";
+ reg = <0x0 0x4b0d0000 0x0 0x50>;
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>;
+ fsl,syscon = <&dispmix_csr>;
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port at 0 {
+ reg = <0>;
+
+ pixel_interleaver_disp0_to_dpu_disp0: endpoint {
+ remote-endpoint = <&dpu_disp0_to_pixel_interleaver_disp0>;
+ };
+ };
+
+ port at 1 {
+ reg = <1>;
+
+ pixel_interleaver_disp0_to_display_pixel_link0: endpoint {
+ remote-endpoint = <&display_pixel_link0_to_pixel_interleaver_disp0>;
+ };
+ };
+ };
+ };
+
+ pixel_interleaver_1: bridge at 4b0e0000 {
+ compatible = "fsl,imx95-pixel-interleaver";
+ reg = <0x0 0x4b0e0000 0x0 0x50>;
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>;
+ fsl,syscon = <&dispmix_csr>;
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port at 0 {
+ reg = <0>;
+
+ pixel_interleaver_disp1_to_dpu_disp1: endpoint {
+ remote-endpoint = <&dpu_disp1_to_pixel_interleaver_disp1>;
+ };
+ };
+
+ port at 1 {
+ reg = <1>;
+
+ pixel_interleaver_disp1_to_display_pixel_link1: endpoint {
+ remote-endpoint = <&display_pixel_link1_to_pixel_interleaver_disp1>;
+ };
+ };
+ };
+ };
+
+ dpu: display-controller at 4b400000 {
+ compatible = "fsl,imx95-dc";
+ reg = <0 0x4b400000 0 0x400000>;
+ clocks = <&scmi_clk IMX95_CLK_DISP1PIX>,
+ <&scmi_clk IMX95_CLK_DISPAPB>,
+ <&scmi_clk IMX95_CLK_DISPAXI>,
+ <&scmi_clk IMX95_CLK_DISPOCRAM>,
+ <&ldb_pll_pixel>,
+ <&scmi_clk IMX95_CLK_LDBPLL_VCO>;
+ clock-names = "pix", "apb", "axi", "ocram", "ldb", "ldb_vco";
+ fsl,syscon = <&dispmix_csr>;
+ power-domains = <&scmi_devpd IMX95_PD_DISPLAY>;
+ assigned-clocks = <&scmi_clk IMX95_CLK_DISPAXI>,
+ <&scmi_clk IMX95_CLK_DISPOCRAM>,
+ <&scmi_clk IMX95_CLK_DISPAPB>;
+ assigned-clock-parents = <&scmi_clk IMX95_CLK_SYSPLL1_PFD1>,
+ <&scmi_clk IMX95_CLK_SYSPLL1_PFD1>,
+ <&scmi_clk IMX95_CLK_SYSPLL1_PFD1_DIV2>;
+ assigned-clock-rates = <400000000>, <400000000>, <133333333>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ dc1_intc: interrupt-controller at 4b781000 {
+ compatible = "fsl,imx95-dc-intc";
+ reg = <0 0x4b781000 0 0x60>;
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>,
+ <&scmi_clk IMX95_CLK_DISPAXI>;
+ clock-names = "apb", "axi";
+ power-domains = <&scmi_devpd IMX95_PD_DISPLAY>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ interrupt-parent = <&displaymix_irqsteer>;
+ interrupts = <448>, <449>, <450>, <64>,
+ <65>, <66>, <67>, <68>,
+ <69>, <192>, <193>, <194>,
+ <195>, <196>, <197>, <70>,
+ <71>, <72>, <73>, <74>,
+ <75>, <76>, <77>, <78>,
+ <79>, <80>, <81>, <82>,
+ <83>, <84>, <85>, <86>,
+ <87>, <88>, <89>, <90>,
+ <91>, <92>, <198>, <199>,
+ <200>, <201>, <202>, <203>,
+ <204>, <205>, <206>, <207>,
+ <208>, <209>, <210>, <211>,
+ <212>, <451>, <1>, <2>,
+ <3>, <4>, <93>, <94>,
+ <95>, <96>, <97>, <98>,
+ <99>, <100>, <101>, <102>,
+ <103>, <104>, <105>, <106>,
+ <213>, <214>, <215>, <216>,
+ <217>, <218>, <219>, <220>,
+ <221>, <222>, <223>, <224>,
+ <225>, <226>;
+ interrupt-names = "store9_shdload",
+ "store9_framecomplete",
+ "store9_seqcomplete",
+ "extdst0_shdload",
+ "extdst0_framecomplete",
+ "extdst0_seqcomplete",
+ "extdst4_shdload",
+ "extdst4_framecomplete",
+ "extdst4_seqcomplete",
+ "extdst1_shdload",
+ "extdst1_framecomplete",
+ "extdst1_seqcomplete",
+ "extdst5_shdload",
+ "extdst5_framecomplete",
+ "extdst5_seqcomplete",
+ "domainblend0_shdload",
+ "domainblend0_framecomplete",
+ "domainblend0_seqcomplete",
+ "disengcfg_shdload0",
+ "disengcfg_framecomplete0",
+ "disengcfg_seqcomplete0",
+ "framegen0_int0",
+ "framegen0_int1",
+ "framegen0_int2",
+ "framegen0_int3",
+ "sig0_shdload",
+ "sig0_valid",
+ "sig0_error",
+ "sig0_cluster_error",
+ "sig0_cluster_match",
+ "sig2_shdload",
+ "sig2_valid",
+ "sig2_error",
+ "sig2_cluster_error",
+ "sig2_cluster_match",
+ "idhash0_shdload",
+ "idhash0_valid",
+ "idhash0_window_error",
+ "domainblend1_shdload",
+ "domainblend1_framecomplete",
+ "domainblend1_seqcomplete",
+ "disengcfg_shdload1",
+ "disengcfg_framecomplete1",
+ "disengcfg_seqcomplete1",
+ "framegen1_int0",
+ "framegen1_int1",
+ "framegen1_int2",
+ "framegen1_int3",
+ "sig1_shdload",
+ "sig1_valid",
+ "sig1_error",
+ "sig1_cluster_error",
+ "sig1_cluster_match",
+ "cmdseq_error",
+ "comctrl_sw0",
+ "comctrl_sw1",
+ "comctrl_sw2",
+ "comctrl_sw3",
+ "framegen0_primsync_on",
+ "framegen0_primsync_off",
+ "framegen0_overflow0_on",
+ "framegen0_overflow0_off",
+ "framegen0_underrun0_on",
+ "framegen0_underrun0_off",
+ "framegen0_threshold0_rise",
+ "framegen0_threshold0_fail",
+ "framegen0_overflow1_on",
+ "framegen0_overflow1_off",
+ "framegen0_underrun1_on",
+ "framegen0_underrun1_off",
+ "framegen0_threshold1_rise",
+ "framegen0_threshold1_fail",
+ "framegen1_primsync_on",
+ "framegen1_primsync_off",
+ "framegen1_overflow0_on",
+ "framegen1_overflow0_off",
+ "framegen1_underrun0_on",
+ "framegen1_underrun0_off",
+ "framegen1_threshold0_rise",
+ "framegen1_threshold0_fail",
+ "framegen1_overflow1_on",
+ "framegen1_overflow1_off",
+ "framegen1_underrun1_on",
+ "framegen1_underrun1_off",
+ "framegen1_threshold1_rise",
+ "framegen1_threshold1_fail";
+ };
+
+ pixel-engine at 4b4f0000 {
+ compatible = "fsl,imx95-dc-pixel-engine", "fsl,imx8qxp-dc-pixel-engine";
+ reg = <0 0x4b4f0000 0 0x1d0000>;
+ clocks = <&scmi_clk IMX95_CLK_DISPAPB>,
+ <&scmi_clk IMX95_CLK_DISPAXI>;
+ clock-names = "apb", "axi";
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ constframe at 4b4f0000 {
+ compatible = "fsl,imx95-dc-constframe";
+ reg = <0 0x4b4f1000 0 0xc>, <0 0x4b4f0000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ extdst at 4b510000 {
+ compatible = "fsl,imx95-dc-extdst";
+ reg = <0 0x4b511000 0 0x1c>, <0 0x4b510000 0 0x28>;
+ reg-names = "pec", "cfg";
+ interrupt-parent = <&dc1_intc>;
+ interrupts = <3>, <4>, <5>;
+ interrupt-names = "shdload", "framecomplete", "seqcomplete";
+ };
+
+ constframe at 4b500000 {
+ compatible = "fsl,imx95-dc-constframe";
+ reg = <0 0x4b501000 0 0xc>, <0 0x4b500000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ extdst at 4b520000 {
+ compatible = "fsl,imx95-dc-extdst";
+ reg = <0 0x4b521000 0 0x1c>, <0 0x4b520000 0 0x28>;
+ reg-names = "pec", "cfg";
+ interrupt-parent = <&dc1_intc>;
+ interrupts = <9>, <10>, <11>;
+ interrupt-names = "shdload", "framecomplete", "seqcomplete";
+ };
+
+ constframe at 4b530000 {
+ compatible = "fsl,imx95-dc-constframe";
+ reg = <0 0x4b531000 0 0xc>, <0 0x4b530000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ extdst at 4b550000 {
+ compatible = "fsl,imx95-dc-extdst";
+ reg = <0 0x4b551000 0 0x1c>, <0 0x4b550000 0 0x28>;
+ reg-names = "pec", "cfg";
+ interrupt-parent = <&dc1_intc>;
+ interrupts = <6>, <7>, <8>;
+ interrupt-names = "shdload", "framecomplete", "seqcomplete";
+ };
+
+ constframe at 4b540000 {
+ compatible = "fsl,imx95-dc-constframe";
+ reg = <0 0x4b541000 0 0xc>, <0 0x4b540000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ extdst at 4b560000 {
+ compatible = "fsl,imx95-dc-extdst";
+ reg = <0 0x4b561000 0 0x1c>, <0 0x4b560000 0 0x28>;
+ reg-names = "pec", "cfg";
+ interrupt-parent = <&dc1_intc>;
+ interrupts = <12>, <13>, <14>;
+ interrupt-names = "shdload", "framecomplete", "seqcomplete";
+ };
+
+ fetchlayer at 4b5d0000 {
+ compatible = "fsl,imx95-dc-fetchlayer";
+ reg = <0 0x4b5d1000 0 0xc>, <0 0x4b5d0000 0 0x404>;
+ reg-names = "pec", "cfg";
+ };
+
+ fetchlayer at 4b5e0000 {
+ compatible = "fsl,imx95-dc-fetchlayer";
+ reg = <0 0x4b5e1000 0 0xc>, <0 0x4b5e0000 0 0x404>;
+ reg-names = "pec", "cfg";
+ };
+
+ layerblend at 4b570000 {
+ compatible = "fsl,imx95-dc-layerblend";
+ reg = <0 0x4b571000 0 0x10>, <0 0x4b570000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ layerblend at 4b580000 {
+ compatible = "fsl,imx95-dc-layerblend";
+ reg = <0 0x4b581000 0 0x10>, <0 0x4b580000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ layerblend at 4b590000 {
+ compatible = "fsl,imx95-dc-layerblend";
+ reg = <0 0x4b591000 0 0x10>, <0 0x4b590000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ layerblend at 4b5a0000 {
+ compatible = "fsl,imx95-dc-layerblend";
+ reg = <0 0x4b5a1000 0 0x10>, <0 0x4b5a0000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ layerblend at 4b5b0000 {
+ compatible = "fsl,imx95-dc-layerblend";
+ reg = <0 0x4b5b1000 0 0x10>, <0 0x4b5b0000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+
+ layerblend at 4b5c0000 {
+ compatible = "fsl,imx95-dc-layerblend";
+ reg = <0 0x4b5c1000 0 0x10>, <0 0x4b5c0000 0 0x20>;
+ reg-names = "pec", "cfg";
+ };
+ };
+
+ display-engine at 4b600000 {
+ compatible = "fsl,imx95-dc-display-engine";
+ reg = <0 0x4b711000 0 0x14>, <0 0x4b710000 0 0x1c00>;
+ reg-names = "top", "cfg";
+ interrupt-parent = <&dc1_intc>;
+ interrupts = <18>, <19>, <20>;
+ interrupt-names = "shdload", "framecomplete", "seqcomplete";
+ power-domains = <&scmi_devpd IMX95_PD_DISPLAY>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ domainblend at 4b6a0000 {
+ compatible = "fsl,imx95-dc-domainblend";
+ reg = <0 0x4b6a0000 0 0x20>;
+ };
+
+ framegen at 4b6b0000 {
+ compatible = "fsl,imx95-dc-framegen";
+ reg = <0 0x4b6b0000 0 0x98>;
+
+ clocks = <&scmi_clk IMX95_CLK_DISP1PIX>,
+ <&scmi_clk IMX95_CLK_DISPAPB>,
+ <&scmi_clk IMX95_CLK_DISPAXI>,
+ <&scmi_clk IMX95_CLK_DISPOCRAM>,
+ <&ldb_pll_pixel>,
+ <&scmi_clk IMX95_CLK_LDBPLL_VCO>;
+ clock-names = "pix", "apb", "axi", "ocram", "ldb", "ldb_vco";
+
+ interrupt-parent = <&dc1_intc>;
+ interrupts = <21>, <22>, <23>, <24>, <58>, <59>;
+ interrupt-names = "int0", "int1", "int2", "int3",
+ "primsync_on", "primsync_off";
+ };
+
+ tcon {
+ compatible = "fsl,imx95-dc-tcon";
+
+ port {
+ dpu_disp0_to_pixel_interleaver_disp0: endpoint {
+ remote-endpoint = <&pixel_interleaver_disp0_to_dpu_disp0>;
+ };
+ };
+ };
+ };
+
+ display-engine at 4b700000 {
+ compatible = "fsl,imx95-dc-display-engine";
+ reg = <0 0x4b771000 0 0x14>, <0 0x4b770000 0 0x1c00>;
+ reg-names = "top", "cfg";
+ interrupt-parent = <&dc1_intc>;
+ interrupts = <41>, <42>, <43>;
+ interrupt-names = "shdload", "framecomplete", "seqcomplete";
+ power-domains = <&scmi_devpd IMX95_PD_DISPLAY>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ domainblend at 4b720000 {
+ compatible = "fsl,imx95-dc-domainblend";
+ reg = <0 0x4b720000 0 0x20>;
+ };
+
+ framegen at 4b730000 {
+ compatible = "fsl,imx95-dc-framegen";
+ reg = <0 0x4b730000 0 0x98>;
+
+ clocks = <&scmi_clk IMX95_CLK_DISP1PIX>,
+ <&scmi_clk IMX95_CLK_DISPAPB>,
+ <&scmi_clk IMX95_CLK_DISPAXI>,
+ <&scmi_clk IMX95_CLK_DISPOCRAM>,
+ <&ldb_pll_pixel>,
+ <&scmi_clk IMX95_CLK_LDBPLL_VCO>;
+ clock-names = "pix", "apb", "axi", "ocram", "ldb", "ldb_vco";
+
+ interrupt-parent = <&dc1_intc>;
+ interrupts = <34>, <35>, <36>, <37>, <72>, <73>;
+ interrupt-names = "int0", "int1", "int2", "int3",
+ "primsync_on", "primsync_off";
+ };
+
+ tcon {
+ compatible = "fsl,imx95-dc-tcon";
+
+ port {
+ dpu_disp1_to_pixel_interleaver_disp1: endpoint {
+ remote-endpoint = <&pixel_interleaver_disp1_to_dpu_disp1>;
+ };
+ };
+ };
+ };
+ };
+
usb3: usb at 4c010010 {
compatible = "fsl,imx95-dwc3", "fsl,imx8mp-dwc3";
reg = <0x0 0x4c010010 0x0 0x04>,
--
2.51.0
More information about the linux-arm-kernel
mailing list