zephyr/dts/arm/nxp/nxp_imx7d_m4.dtsi
Diego Sueiro 9283ee7acc arch: i.MX add RDC peripheral permission setting for applications cores
This patch adds the RDC (Resource Domain Controller) peripheral
permissions settings for the i.MX applications cores (Cortex A9 on
i.MX6 and Cortex A7 on i.MX7).

This will enable both Linux (on application's core) and Zephyr (on M4
core) to share the peripherals and coexist.

The settings are defined at devicetree level and applied in the soc.c.

A complete solution should involve the SEMA4 to control the peripherals
access and prevent resource deadlocking and misusage.

Signed-off-by: Diego Sueiro <diego.sueiro@gmail.com>
2018-08-09 10:17:32 -05:00

380 lines
9.1 KiB
Plaintext

/*
* 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-code-bus";
reg = <0x1fff8000 0x8000>;
label = "TCML CODE";
};
tcmu_sys: memory@20000000 {
device_type = "memory";
compatible = "nxp,imx-sys-bus";
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";
};
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";
};
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";
};
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";
};
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";
};
};
};
&nvic {
arm,num-irq-priority-bits = <4>;
};