summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhou Peng <eagle.zhou@nxp.com>2019-01-25 16:13:32 +0800
committerDong Aisheng <aisheng.dong@nxp.com>2019-11-25 16:03:52 +0800
commit4ea49e9e9e73ea882c8077e6e35f9a7a9ea21bf6 (patch)
treef8535831a11e7fd0d7a29fc1c198786c9fb284d8
parent7a3f0cae7016d8a2494322c2835537acffb5b0cf (diff)
arm64: dts: imx8: add vpu support
add vpu support Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
-rw-r--r--arch/arm64/boot/dts/freescale/imx8-ss-vpu.dtsi58
-rw-r--r--arch/arm64/boot/dts/freescale/imx8qxp-mek.dts68
-rw-r--r--arch/arm64/boot/dts/freescale/imx8qxp.dtsi6
3 files changed, 132 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/freescale/imx8-ss-vpu.dtsi b/arch/arm64/boot/dts/freescale/imx8-ss-vpu.dtsi
new file mode 100644
index 000000000000..f289e15f15ea
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8-ss-vpu.dtsi
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2018 NXP
+ * Dong Aisheng <aisheng.dong@nxp.com>
+ */
+
+vpu_subsys: bus@2c000000 {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x2c000000 0x0 0x2c000000 0x2000000>;
+
+ vpu_lpcg: clock-controller@2d000000 {
+ compatible = "fsl,imx8qxp-lpcg-vpu";
+ reg = <0x2c000000 0x2000000>;
+ #clock-cells = <1>;
+ status = "disabled";
+ };
+
+ vpu_decoder: vpu_decoder@2c000000 {
+ compatible = "nxp,imx8qm-b0-vpudec", "nxp,imx8qxp-b0-vpudec";
+ reg = <0x2c000000 0x1000000>;
+ reg-names = "vpu_regs";
+ power-domains = <&pd IMX_SC_R_VPU_DEC_0>,
+ <&pd IMX_SC_R_VPU>, <&pd IMX_SC_R_VPU_MU_0>;
+ power-domain-names = "vpudec", "vpu", "vpumu0";
+ status = "disabled";
+ };
+
+ vpu_encoder: vpu_encoder@2d000000 {
+ compatible = "nxp,imx8qxp-b0-vpuenc";
+ reg = <0x2d000000 0x1000000>, /*VPU Encoder*/
+ <0x2c000000 0x2000000>; /*VPU*/
+ reg-names = "vpu_regs";
+ power-domains = <&pd IMX_SC_R_VPU_ENC_0>,
+ <&pd IMX_SC_R_VPU>, <&pd IMX_SC_R_VPU_MU_1>;
+ power-domain-names = "vpuenc", "vpu", "vpumu1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ status = "disabled";
+ };
+
+ mu_m0: mu_m0@2d000000 {
+ compatible = "fsl,imx8-mu0-vpu-m0";
+ reg = <0x2d000000 0x20000>;
+ interrupts = <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>;
+ fsl,vpu_ap_mu_id = <16>;
+ status = "okay";
+ };
+
+ mu1_m0: mu1_m0@2d020000 {
+ compatible = "fsl,imx8-mu1-vpu-m0";
+ reg = <0x2d020000 0x20000>;
+ interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>;
+ fsl,vpu_ap_mu_id = <17>;
+ status = "okay";
+ };
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts b/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts
index 19468058e6ae..449796966a71 100644
--- a/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts
+++ b/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts
@@ -20,6 +20,46 @@
reg = <0x00000000 0x80000000 0 0x40000000>;
};
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ /*
+ * reserved-memory layout
+ * 0x88000000 ~ 0x8fffffff is reserved for M4
+ * Shouldn't be used at A core and Linux side.
+ *
+ */
+ decoder_boot: decoder-boot@84000000 {
+ reg = <0 0x84000000 0 0x2000000>;
+ no-map;
+ };
+
+ encoder_boot: encoder-boot@86000000 {
+ reg = <0 0x86000000 0 0x200000>;
+ no-map;
+ };
+
+ decoder_rpc: decoder-rpc@0x92000000 {
+ reg = <0 0x92000000 0 0x200000>;
+ no-map;
+ };
+
+ encoder_rpc: encoder-rpc@0x92200000 {
+ reg = <0 0x92200000 0 0x200000>;
+ no-map;
+ };
+ /* global autoconfigured region for contiguous allocations */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0 0x3c000000>;
+ alloc-ranges = <0 0x96000000 0 0x3c000000>;
+ linux,cma-default;
+ };
+ };
+
reg_usdhc2_vmmc: usdhc2-vmmc {
compatible = "regulator-fixed";
regulator-name = "SD1_SPWR";
@@ -156,6 +196,34 @@
status = "okay";
};
+&vpu_decoder {
+ boot-region = <&decoder_boot>;
+ rpc-region = <&decoder_rpc>;
+ reg-csr = <0x2d040000>;
+ core_type = <1>;
+ status = "okay";
+};
+
+&vpu_encoder {
+ boot-region = <&encoder_boot>;
+ rpc-region = <&encoder_rpc>;
+ reg-rpc-system = <0x40000000>;
+ resolution-max = <1920 1080>;
+ fps-max = <120>;
+ status = "okay";
+
+ core0@1020000 {
+ compatible = "fsl,imx8-mu1-vpu-m0";
+ reg = <0x1020000 0x20000>;
+ reg-csr = <0x1050000 0x10000>;
+ interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>;
+ fsl,vpu_ap_mu_id = <17>;
+ fw-buf-size = <0x200000>;
+ rpc-buf-size = <0x80000>;
+ print-buf-size = <0x80000>;
+ };
+};
+
&iomuxc {
pinctrl_fec1: fec1grp {
fsl,pins = <
diff --git a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
index 3aac35f526ab..f0ac48cef2b1 100644
--- a/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8qxp.dtsi
@@ -206,7 +206,13 @@
clock-output-names = "xtal_24MHz";
};
+ imx_ion {
+ compatible = "fsl,mxc-ion";
+ fsl,heap-id = <0>;
+ };
+
/* sorted in register address */
+ #include "imx8-ss-vpu.dtsi"
#include "imx8-ss-adma.dtsi"
#include "imx8-ss-conn.dtsi"
#include "imx8-ss-ddr.dtsi"