/*
 * Copyright (C) 2016 Freescale Semiconductor, Inc.
 * Copyright 2017-2018 NXP
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "fsl-imx8-ca53.dtsi"
#include "fsl-imx8-ca72.dtsi"
#include <dt-bindings/clock/imx8qm-clock.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/soc/imx_rsrc.h>
#include <dt-bindings/soc/imx8_hsio.h>
#include <dt-bindings/soc/imx8_pd.h>
#include <dt-bindings/pinctrl/pads-imx8qm.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/thermal/thermal.h>

/ {
	compatible = "fsl,imx8qm";
	interrupt-parent = <&gic>;
	#address-cells = <2>;
	#size-cells = <2>;

	aliases {
		csi0 = &mipi_csi_0;
		csi1 = &mipi_csi_1;
		dpu0 = &dpu1;
		dpu1 = &dpu2;
		ethernet0 = &fec1;
		ethernet1 = &fec2;
		dsiphy0 = &mipi_dsi_phy1;
		dsiphy1 = &mipi_dsi_phy2;
		mipidsi0 = &mipi_dsi1;
		mipidsi1 = &mipi_dsi2;
		ldb0 = &ldb1;
		ldb1 = &ldb2;
		isi0 = &isi_0;
		isi1 = &isi_1;
		isi2 = &isi_2;
		isi3 = &isi_3;
		isi4 = &isi_4;
		isi5 = &isi_5;
		isi6 = &isi_6;
		isi7 = &isi_7;
		serial0 = &lpuart0;
		serial1 = &lpuart1;
		serial2 = &lpuart2;
		serial3 = &lpuart3;
		serial4 = &lpuart4;
		gpio0 = &gpio0;
		gpio1 = &gpio1;
		gpio2 = &gpio2;
		gpio3 = &gpio3;
		gpio4 = &gpio4;
		gpio5 = &gpio5;
		gpio6 = &gpio6;
		gpio7 = &gpio7;
		mmc0 = &usdhc1;
		mmc1 = &usdhc2;
		mmc2 = &usdhc3;
		usb0 = &usbotg1;
		usbphy0 = &usbphy1;
		usb1 = &usbotg3;
		can0 = &flexcan1;
		can1 = &flexcan2;
		can2 = &flexcan3;
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		i2c3 = &i2c3;
		i2c4 = &i2c4;
		i2c6 = &i2c1_lvds0;
		i2c8 = &i2c1_lvds1;
		spi0 = &flexspi0;
	};

	memory@80000000 {
		device_type = "memory";
		reg = <0x00000000 0x80000000 0 0x40000000>;
		      /* DRAM space - 1, size : 1 GB DRAM */
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		/*
		 * reserved-memory layout
		 * 0x8800_0000 ~ 0x8FFF_FFFF is reserved for M4
		 * Shouldn't be used at A core and Linux side.
		 *
		 */

		decoder_boot: decoder_boot@0x84000000 {
			no-map;
			reg = <0 0x84000000 0 0x2000000>;
		};
		encoder_boot: encoder_boot@0x86000000 {
			no-map;
			reg = <0 0x86000000 0 0x400000>;
		};
		rpmsg_reserved: rpmsg@0x90000000 {
			no-map;
			reg = <0 0x90000000 0 0x400000>;
		};
		rpmsg_dma_reserved:rpmsg_dma@0x90400000 {
			compatible = "shared-dma-pool";
			no-map;
			reg = <0 0x90400000 0 0x1C00000>;
		};
		decoder_rpc: decoder_rpc@0x92000000 {
			no-map;
			reg = <0 0x92000000 0 0x200000>;
		};
		encoder_rpc: encoder_rpc@0x92200000 {
			no-map;
			reg = <0 0x92200000 0 0x200000>;
		};
		dsp_reserved: dsp@0x92400000 {
			no-map;
			reg = <0 0x92400000 0 0x2000000>;
		};
		encoder_reserved: encoder_reserved@0x94400000 {
			no-map;
			reg = <0 0x94400000 0 0x800000>;
		};

		/* 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;
		};

	};

	gic: interrupt-controller@51a00000 {
		compatible = "arm,gic-v3";
		reg = <0x0 0x51a00000 0 0x10000>, /* GIC Dist */
		      <0x0 0x51b00000 0 0xC0000>, /* GICR */
		      <0x0 0x52000000 0 0x2000>,  /* GICC */
		      <0x0 0x52010000 0 0x1000>,  /* GICH */
		      <0x0 0x52020000 0 0x20000>; /* GICV */
		#interrupt-cells = <3>;
		interrupt-controller;
		interrupts = <GIC_PPI 9
			(GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
		interrupt-parent = <&gic>;
	};

	mu8: mu@5d230000 {
		compatible = "fsl,imx-m4-mu";
		reg = <0x0 0x5d230000 0x0 0x10000>;
		interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
		power-domains = <&pd_lsio_mu8a>;
		status = "okay";
	};

	mu9: mu@5d240000 {
		compatible = "fsl,imx-m4-mu";
		reg = <0x0 0x5d240000 0x0 0x10000>;
		interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
		power-domains = <&pd_lsio_mu9a>;
		status = "okay";
	};

	mu: mu@5d1c0000 {
		compatible = "fsl,imx8-mu";
		reg = <0x0 0x5d1c0000 0x0 0x10000>;
		interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-parent = <&gic>;
		#mbox-cells = <4>;
		status = "okay";

		clk: clk {
			compatible = "fsl,imx8qm-clk";
			#clock-cells = <1>;
		};

		iomuxc: iomuxc {
			compatible = "fsl,imx8qm-iomuxc";
		};
	};

	mu13: mu13@5d280000 {
		compatible = "fsl,imx8-mu-dsp";
		reg = <0x0 0x5d280000 0x0 0x10000>;
		interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
		fsl,dsp_ap_mu_id = <13>;
		status = "okay";
	};

	mu_m0: mu_m0@2d000000 {
		compatible = "fsl,imx8-mu0-vpu-m0";
		reg = <0x0 0x2d000000 0x0 0x20000>;
		interrupts = <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>;
		fsl,vpu_ap_mu_id = <16>;
		status = "okay";
	};

	mu1_m0: mu1_m0@2d020000 {
		compatible = "fsl,imx8-mu1-vpu-m0";
		reg = <0x0 0x2d020000 0x0 0x20000>;
		interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>;
		fsl,vpu_ap_mu_id = <17>;
		status = "okay";
	};

	mu2_m0: mu2_m0@2d040000 {
		compatible = "fsl,imx8-mu2-vpu-m0";
		reg = <0x0 0x2d040000 0x0 0x20000>;
		interrupts = <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>;
		fsl,vpu_ap_mu_id = <18>;
		status = "okay";
	};

	vpu_decoder: vpu_decoder@2c000000 {
		compatible = "nxp,imx8qm-b0-vpudec", "nxp,imx8qxp-b0-vpudec";
		boot-region = <&decoder_boot>;
		rpc-region = <&decoder_rpc>;
		reg = <0x0 0x2c000000 0x0 0x1000000>;
		reg-names = "vpu_regs";
		reg-csr = <0x2d080000>;
		power-domains = <&pd_vpu_dec>;
		status = "disabled";
	};

	vpu_encoder: vpu_encoder@2d000000 {
		compatible = "nxp,imx8qm-b0-vpuenc";
		#address-cells = <1>;
		#size-cells = <1>;

		boot-region = <&encoder_boot>;
		rpc-region = <&encoder_rpc>;
		reserved-region = <&encoder_reserved>;
		reg = <0x0 0x2d000000 0x0 0x1000000>,	/*VPU Encoder*/
			<0x0 0x2c000000 0x0 0x2000000>; /*VPU*/
		reg-names = "vpu_regs";
		power-domains = <&pd_vpu_enc>;
		reg-rpc-system = <0x40000000>;

		resolution-max = <1920 1080>;
		fps-max = <120>;
		status = "disabled";

		core0@1020000 {
			compatible = "fsl,imx8-mu1-vpu-m0";
			reg = <0x1020000 0x20000>;
			reg-csr = <0x1090000 0x10000>;
			interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>;
			fsl,vpu_ap_mu_id = <17>;
			fw-buf-size = <0x200000>;
			rpc-buf-size = <0x80000>;
			print-buf-size = <0x80000>;
		};
		core1@1040000 {
			compatible = "fsl,imx8-mu2-vpu-m0";
			reg = <0x1040000 0x20000>;
			reg-csr = <0x10a0000 0x10000>;
			interrupts = <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>;
			fsl,vpu_ap_mu_id = <18>;
			fw-buf-size = <0x200000>;
			rpc-buf-size = <0x80000>;
			print-buf-size = <0x80000>;
		};
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Physical Secure */
			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Physical Non-Secure */
			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Virtual */
			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>; /* Hypervisor */
		clock-frequency = <8000000>;
		interrupt-parent = <&gic>;
	};

	smmu: iommu@51400000 {
		compatible = "arm,mmu-500";
		interrupt-parent = <&gic>;
		reg = <0 0x51400000 0 0x40000>;
		#global-interrupts = <1>;
		#iommu-cells = <2>;
		interrupts = <0 32 4>,
			     <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>,
			     <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>,
			     <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>,
			     <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>,
			     <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>,
			     <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>,
			     <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>,
			     <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>;
	};

	cci: cci@52090000 {
		compatible = "arm,cci-400";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0 0x52090000 0 0x1000>;
		ranges = <0 0 0x52090000 0x10000>;

		pmu@9000 {
			compatible = "arm,cci-400-pmu,r1",
				     "arm,cci-400-pmu";
			reg = <0x9000 0x4000>;
			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-parent = <&gic>;
		};
	};

	#include "fsl-imx8qm-device.dtsi"
};

&A53_0 {
	operating-points = <
		/* kHz    uV */
		/* voltage is maintained by SCFW, so no need here */
		1200000	   0
		1104000	   0
		900000	   0
		600000	   0
	>;
	clocks = <&clk IMX8QM_A53_DIV>;
	clock-latency = <61036>;
	#cooling-cells = <2>;
	/delete-property/ cpu-idle-states;
};

&A72_0 {
	operating-points = <
		/* kHz    uV */
		/* voltage is maintained by SCFW, so no need here */
		1596000	   0
		1296000	   0
		1056000	   0
		600000     0
	>;
	clocks = <&clk IMX8QM_A72_DIV>;
	clock-latency = <61036>;
	#cooling-cells = <2>;
	/delete-property/ cpu-idle-states;
};


&imx8_gpu_ss {/*<freq-kHz vol-uV>*/
       operating-points = <
/*overdrive*/  800000  0  /*The first tuple is for core clock frequency*/
               1000000 0  /*The second tuple is for shader clock frequency*/
/*nominal*/    650000  0
               700000  0
/*underdrive*/ 400000  0  /*core/shader clock share the same frequency on underdrive mode*/
       >;
};

&A53_1 {
	/delete-property/ cpu-idle-states;
};

&A53_2 {
	/delete-property/ cpu-idle-states;
};

&A53_3 {
	/delete-property/ cpu-idle-states;
};

&A72_1 {
	/delete-property/ cpu-idle-states;
};
