Linux preempt-rt

Check our new training course

Real-Time Linux with PREEMPT_RT

Check our new training course
with Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

/*
 * Copyright (c) 2017, NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <arm/armv7-m.dtsi>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/i2c/i2c.h>
#include <dt-bindings/rdc/imx_rdc.h>

/ {
	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-m4";
			reg = <0>;
		};
	};

	soc {

		ddr_code: code@10000000 {
			compatible = "nxp,imx-code-bus";
			reg = <0x10000000 0xfff0000>;
			label = "DDR CODE";
		};

		ddr_sys: memory@80000000 {
			device_type = "memory";
			compatible = "nxp,imx-sys-bus";
			reg = <0x80000000 0x60000000>;
			label = "DDR SYSTEM";
		};

		tcml_code: code@1fff8000 {
			compatible = "nxp,imx-itcm";
			reg = <0x1fff8000 0x8000>;
			label = "TCML CODE";
		};

		tcmu_sys: memory@20000000 {
			compatible = "nxp,imx-dtcm";
			reg = <0x20000000 0x8000>;
			label = "TCMU SYSTEM";
		};

		ocram_code: code@900000 {
			compatible = "nxp,imx-code-bus";
			reg = <0x00900000 0x20000>;
			label = "OCRAM CODE";
		};

		ocram_sys: memory@20200000 {
			device_type = "memory";
			compatible = "nxp,imx-sys-bus";
			reg = <0x20200000 0x20000>;
			label = "OCRAM SYSTEM";
		};

		ocram_s_code: code@20180000 {
			compatible = "nxp,imx-code-bus";
			reg = <0x20180000 0x8000>;
			label = "OCRAM_S CODE";
		};

		ocram_s_sys: memory@180000 {
			device_type = "memory";
			compatible = "nxp,imx-sys-bus";
			reg = <0x00180000 0x8000>;
			label = "OCRAM_S SYSTEM";
		};

		gpio1: gpio@30200000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30200000 0x10000>;
			interrupts = <64 0>, <65 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_1";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio2: gpio@30210000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30210000 0x10000>;
			interrupts = <66 0>, <67 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_2";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio3: gpio@30220000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30220000 0x10000>;
			interrupts = <68 0>, <69 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_3";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio4: gpio@30230000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30230000 0x10000>;
			interrupts = <70 0>, <71 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_4";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio5: gpio@30240000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30240000 0x10000>;
			interrupts = <72 0>, <73 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_5";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio6: gpio@30250000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30250000 0x10000>;
			interrupts = <74 0>, <75 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_6";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio7: gpio@30260000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30260000 0x10000>;
			interrupts = <76 0>, <77 0>;
			label = "GPIO_7";
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		/* For now only uart2 is supported and
		 * tested with the serial driver
		 */
		uart1: uart@30860000 {
			compatible = "nxp,imx-uart";
			reg = <0x30860000 0x10000>;
			interrupts = <26 3>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "UART_1";
			status = "disabled";
		};

		uart2: uart@30890000 {
			compatible = "nxp,imx-uart";
			reg = <0x30890000 0x10000>;
			interrupts = <27 3>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "UART_2";
			status = "disabled";
		};

		uart3: uart@30880000 {
			compatible = "nxp,imx-uart";
			reg = <0x30880000 0x10000>;
			interrupts = <28 3>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "UART_3";
			status = "disabled";
		};

		uart4: uart@30a60000 {
			compatible = "nxp,imx-uart";
			reg = <0x30a60000 0x10000>;
			interrupts = <29 3>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "UART_4";
			status = "disabled";
		};

		uart5: uart@30a70000 {
			compatible = "nxp,imx-uart";
			reg = <0x30a70000 0x10000>;
			interrupts = <30 3>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "UART_5";
			status = "disabled";
		};

		uart6: uart@30a80000 {
			compatible = "nxp,imx-uart";
			reg = <0x30a80000 0x10000>;
			interrupts = <16 3>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "UART_6";
			status = "disabled";
		};

		uart7: uart@30a90000 {
			compatible = "nxp,imx-uart";
			reg = <0x30a90000 0x10000>;
			interrupts = <126 3>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "UART_7";
			status = "disabled";
		};

		mub:mu@30ab0000 {
			compatible = "nxp,imx-mu";
			reg = <0x30ab0000 0x4000>;
			interrupts = <97 0>;
			rdc = <RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)>;
			label = "MU_B";
			status = "disabled";
		};

		i2c1: i2c@30a20000 {
			compatible = "fsl,imx7d-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x30a20000 0x10000>;
			interrupts = <35 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "I2C_1";
			status = "disabled";
		};

		i2c2: i2c@30a30000 {
			compatible = "fsl,imx7d-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x30a30000 0x10000>;
			interrupts = <36 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "I2C_2";
			status = "disabled";
		};

		i2c3: i2c@30a40000 {
			compatible = "fsl,imx7d-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x30a40000 0x10000>;
			interrupts = <37 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "I2C_3";
			status = "disabled";
		};

		i2c4: i2c@30a50000 {
			compatible = "fsl,imx7d-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x30a50000 0x10000>;
			interrupts = <38 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "I2C_4";
			status = "disabled";
		};

		pwm1: pwm@30660000 {
			compatible = "fsl,imx7d-pwm";
			reg = <0x30660000 0x10000>;
			interrupts = <81 0>;
			prescaler = <0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "PWM_1";
			status = "disabled";
			#pwm-cells = <2>;
		};

		pwm2: pwm@30670000 {
			compatible = "fsl,imx7d-pwm";
			reg = <0x30670000 0x10000>;
			interrupts = <82 0>;
			prescaler = <0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "PWM_2";
			status = "disabled";
			#pwm-cells = <2>;
		};

		pwm3: pwm@30680000 {
			compatible = "fsl,imx7d-pwm";
			reg = <0x30680000 0x10000>;
			interrupts = <83 0>;
			prescaler = <0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "PWM_3";
			status = "disabled";
			#pwm-cells = <2>;
		};

		pwm4: pwm@30690000 {
			compatible = "fsl,imx7d-pwm";
			reg = <0x30690000 0x10000>;
			interrupts = <84 0>;
			prescaler = <0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "PWM_4";
			status = "disabled";
			#pwm-cells = <2>;
		};
	};
};

&nvic {
	arm,num-irq-priority-bits = <4>;
};