blob: 08bc1e05a2358c4f3691906ea21f696c16cf6db1 [file] [log] [blame]
/*
* Copyright 2018-2019 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.
*/
/dts-v1/;
/*
* At current stage, M41 is not ready to communicate with XEN, so we
* we need a way to tell XEN uboot is running or linux is running.
* XEN will check the contents of this area.
* So reserve a page at the beginning of GUEST_RAM0_BASE to avoid Linux
* touch this area.
*/
/memreserve/ 0x80000000 0x1000;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#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>
/ {
model = "Freescale i.MX8QM DOMU";
compatible = "fsl,imx8qm-mek", "fsl,imx8qm", "xen,xenvm-4.10", "xen,xenvm";
interrupt-parent = <&gic>;
#address-cells = <0x2>;
#size-cells = <0x2>;
/delete-node/ aliases;
aliases {
mmc0 = &usdhc1;
dpu1 = &dpu2;
ldb1 = &ldb2;
serial1 = &lpuart1;
isi0 = &isi_0;
isi1 = &isi_1;
isi2 = &isi_2;
isi3 = &isi_3;
csi0 = &mipi_csi_0;
i2c1 = &i2c_rpbus_1;
};
cpus {
#address-cells = <0x2>;
#size-cells = <0x0>;
cpu@0 {
device_type = "cpu";
compatible = "arm,armv8";
enable-method = "psci";
reg = <0x0 0x0>;
};
cpu@1 {
device_type = "cpu";
compatible = "arm,armv8";
enable-method = "psci";
reg = <0x0 0x1>;
};
cpu@2 {
device_type = "cpu";
compatible = "arm,armv8";
enable-method = "psci";
reg = <0x0 0x2>;
};
cpu@3 {
device_type = "cpu";
compatible = "arm,armv8";
enable-method = "psci";
reg = <0x0 0x3>;
};
};
psci {
compatible = "arm,psci-1.0";
method = "hvc";
};
memory@80000000 {
device_type = "memory";
/* Will be updated by U-Boot or XEN TOOL */
reg = <0x00000000 0x80000000 0 0x80000000>;
};
/*
* The reserved memory will be used when using U-Boot loading android
* image. For booting kernel using xl tool, pass args:
* cma=960M@2400M-3584M
* For the rpmsg_reserved area, need xl tool to create for non-android.
*/
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
passthrough;
/*
* 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>;
};
/*
* CM40 rpmsg memory is still for Dom0, the domu.cfg
* not map 0x90000000 - 0x90100000 to DomU.
*/
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@3001000 {
compatible = "arm,gic-v3";
#interrupt-cells = <3>;
#address-cells = <0x0>;
interrupt-controller;
redistributor-stride = <0x20000>;
#redistributor-regions = <0x1>;
reg = <0x0 0x3001000 0 0x10000>, /* GIC Dist */
<0x0 0x3020000 0 0x1000000>; /* GICR */
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
interrupt-parent = <&gic>;
linux,phandle = <0xfde8>;
phandle = <0xfde8>;
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
interrupt-parent = <&gic>;
clock-frequency = <8000000>;
};
hypervisor {
compatible = "xen,xen-4.11", "xen,xen";
reg = <0x0 0x38000000 0x0 0x1000000>;
interrupts = <GIC_PPI 15 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
interrupt-parent = <&gic>;
};
clocks {
#address-cells = <1>;
#size-cells = <0>;
clk0: clock@0 {
compatible = "fixed-clock";
reg = <0>;
#clock-cells = <0>;
clock-frequency = <24000000>;
};
};
rtc0: rtc@23000000 {
compatible = "arm,pl031", "arm,primecell";
reg = <0x0 0x23000000 0x0 0x1000>;
interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk0>;
clock-names = "apb_pclk";
};
lvds_backlight1: lvds_backlight@1 {
compatible = "pwm-backlight";
pwms = <&lvds1_pwm 0 100000 0>;
brightness-levels = < 0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
100>;
default-brightness-level = <80>;
};
passthrough {
compatible = "simple-bus";
ranges;
#address-cells = <2>;
#size-cells = <2>;
firmware {
android {
compatible = "android,firmware";
fstab {
compatible = "android,fstab";
vendor {
compatible = "android,vendor";
/* emmc node which used if androidboot.storage_type=emmc */
dev_emmc = "/dev/block/platform/passthrough/5b010000.usdhc/by-name/vendor";
type = "ext4";
mnt_flags = "ro,barrier=1,inode_readahead_blks=8";
fsmgr_flags = "wait,slotselect,avb";
};
};
vbmeta {
/*we need use FirstStageMountVBootV2 if we enable avb*/
compatible = "android,vbmeta";
/*parts means the partition witch can be mount in first stage*/
parts = "vbmeta,boot,system,vendor";
};
};
};
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";
};
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";
};
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>;
};
};
clk: clk {
compatible = "fsl,imx8qm-clk";
#clock-cells = <1>;
fsl,lpcg_base_offset = <0x00000000 0x00000000>;
};
iomuxc: iomuxc {
compatible = "fsl,imx8qm-iomuxc";
};
regulators {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;
epdev_on: fixedregulator@100 {
compatible = "regulator-fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "epdev_on";
gpio = <&gpio4 9 0>;
enable-active-high;
};
reg_audio: fixedregulator@2 {
compatible = "regulator-fixed";
reg = <2>;
regulator-name = "cs42888_supply";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
#include "fsl-imx8qm-device.dtsi"
mu2: mu@5d1d0000 {
compatible = "fsl,imx8-mu";
reg = <0x0 0x5d1d0000 0x0 0x10000>;
interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
fsl,scu_ap_mu_id = <0>;
status = "okay";
};
usb_lpcg {
reg = <0x0 0x5b270000 0x0 0x10000>;
};
edma01: dma-controller1@5a1f0000 {
compatible = "fsl,imx8qm-edma";
reg = <0x0 0x5a2e0000 0x0 0x10000>, /* channel14 UART1 rx */
<0x0 0x5a2f0000 0x0 0x10000>; /* channel15 UART1 tx */
#dma-cells = <3>;
dma-channels = <2>;
interrupts = <GIC_SPI 436 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 437 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "edma0-chan14-rx", "edma0-chan15-tx";
status = "okay";
};
edma20: dma-controller@591f0000 {
compatible = "fsl,imx8qm-adma";
reg = <0x0 0x59200000 0x0 0x10000>, /* asrc0 */
<0x0 0x59210000 0x0 0x10000>,
<0x0 0x59220000 0x0 0x10000>,
<0x0 0x59230000 0x0 0x10000>,
<0x0 0x59240000 0x0 0x10000>,
<0x0 0x59250000 0x0 0x10000>;
#dma-cells = <3>;
shared-interrupt;
dma-channels = <6>;
interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>, /* asrc0 */
<GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "edma2-chan0-rx", "edma2-chan1-rx", /* asrc0 */
"edma2-chan2-rx", "edma2-chan3-tx",
"edma2-chan4-tx", "edma2-chan5-tx";
status = "okay";
};
edma21: dma-controller@0x59260000 {
compatible = "fsl,imx8qm-adma";
reg = <0x0 0x59260000 0x0 0x10000>, /* esai0 rx */
<0x0 0x59270000 0x0 0x10000>; /* esai0 tx */
#dma-cells = <3>;
shared-interrupt;
dma-channels = <2>;
interrupts = <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>, /* esai0 */
<GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "edma2-chan6-rx", "edma2-chan7-tx"; /* esai0 */
status = "okay";
};
edma24: dma-controller@0x592c0000 {
compatible = "fsl,imx8qm-adma";
reg = <0x0 0x592c0000 0x0 0x10000>, /* sai0 rx */
<0x0 0x592d0000 0x0 0x10000>; /* sai0 tx */
#dma-cells = <3>;
shared-interrupt;
dma-channels = <2>;
interrupts = <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>, /* sai0 */
<GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "edma2-chan12-rx", "edma2-chan13-tx"; /* sai0 */
fsl,sc_rsrc_id = <SC_R_DMA_2_CH12>,
<SC_R_DMA_2_CH13>;
status = "okay";
};
sound-cs42888 {
compatible = "fsl,imx8qm-sabreauto-cs42888",
"fsl,imx-audio-cs42888";
model = "imx-cs42888";
esai-controller = <&esai0>;
audio-codec = <&cs42888>;
asrc-controller = <&asrc0>;
status = "okay";
};
xen_i2c0: xen_i2c@0 {
compatible = "xen,i2c";
be-adapter = "5a800000.i2c";
status = "okay";
};
xen_i2c1: xen_i2c@1 {
compatible = "xen,i2c";
be-adapter = "3b230000.i2c";
status = "okay";
};
};
/*
* vehicle core driver device node which open power domain dc by default
*/
vehicle_core: vehicle_core {
compatible = "nxp,imx-vehicle";
status = "disabled";
};
/*
* vehicle M4 driver which can get info from MCU.
*/
vehicle_rpmsg_m4: vehicle_rpmsg_m4 {
compatible = "nxp,imx-vehicle-m4";
status = "disabled";
};
};
/delete-node/ &tsens;
/delete-node/ &thermal_zones;
/delete-node/ &rtc;
&display {
ports = <&dpu2_disp0>, <&dpu2_disp1>;
};
&dpu2_intsteer {
reg = <0x0 0x57000000 0x0 0x10000>;
status = "okay";
};
&prg10 {
reg = <0x0 0x57040000 0x0 0x10000>;
status = "okay";
};
&prg11 {
reg = <0x0 0x57050000 0x0 0x10000>;
status = "okay";
};
&prg12 {
reg = <0x0 0x57060000 0x0 0x10000>;
status = "okay";
};
&prg13 {
reg = <0x0 0x57070000 0x0 0x10000>;
status = "okay";
};
&prg14 {
reg = <0x0 0x57080000 0x0 0x10000>;
status = "okay";
};
&prg15 {
reg = <0x0 0x57090000 0x0 0x10000>;
status = "okay";
};
&prg16 {
reg = <0x0 0x570a0000 0x0 0x10000>;
status = "okay";
};
&prg17 {
reg = <0x0 0x570b0000 0x0 0x10000>;
status = "okay";
};
&prg18 {
reg = <0x0 0x570c0000 0x0 0x10000>;
status = "okay";
};
&dpr3_channel1 {
reg = <0x0 0x570d0000 0x0 0x10000>;
status = "okay";
};
&dpr3_channel2 {
reg = <0x0 0x570e0000 0x0 0x10000>;
status = "okay";
};
&dpr3_channel3 {
reg = <0x0 0x570f0000 0x0 0x10000>;
status = "okay";
};
&dpr4_channel1 {
reg = <0x0 0x57100000 0x0 0x10000>;
status = "okay";
};
&dpr4_channel2 {
reg = <0x0 0x57110000 0x0 0x10000>;
status = "okay";
};
&dpr4_channel3 {
reg = <0x0 0x57120000 0x0 0x10000>;
status = "okay";
};
&dpu2 {
reg = <0x0 0x57180000 0x0 0x40000>;
status = "okay";
dpu2_disp0: port@0 {
dpu2_disp0_mipi_dsi: mipi-dsi-endpoint {
/delete-property/ remote-endpoint;
};
};
dpu2_disp1: port@1 {
reg = <1>;
dpu2_disp1_lvds0: lvds0-endpoint {
remote-endpoint = <&ldb2_lvds0>;
};
dpu2_disp1_lvds1: lvds1-endpoint {
remote-endpoint = <&ldb2_lvds1>;
};
};
};
&pixel_combiner2 {
status = "okay";
};
/delete-node/ &hdmi;
/delete-node/ &hdmi_rx;
/delete-node/ &irqsteer_dsi0;
/delete-node/ &i2c0_mipi_dsi0;
/delete-node/ &mipi_dsi_csr1;
/delete-node/ &mipi_dsi_phy1;
/delete-node/ &mipi_dsi1;
/delete-node/ &mipi_dsi_bridge1;
&lvds_region2 {
reg = <0x0 0x57240000 0x0 0x10000>;
status = "okay";
};
&ldb2_phy {
reg = <0x0 0x57241000 0x0 0x100>;
status = "okay";
};
&ldb2 {
status = "okay";
lvds-channel@0 {
fsl,data-mapping = "jeida";
fsl,data-width = <24>;
status = "okay";
port@1 {
reg = <1>;
lvds1_out: endpoint {
remote-endpoint = <&it6263_1_in>;
};
};
};
};
/delete-node/ &lvds0_pwm;
/delete-node/ &dpu1_intsteer;
/delete-node/ &prg1;
/delete-node/ &prg2;
/delete-node/ &prg3;
/delete-node/ &prg4;
/delete-node/ &prg5;
/delete-node/ &prg6;
/delete-node/ &prg7;
/delete-node/ &prg8;
/delete-node/ &prg9;
/delete-node/ &dpr1_channel1;
/delete-node/ &dpr1_channel2;
/delete-node/ &dpr1_channel3;
/delete-node/ &dpr2_channel1;
/delete-node/ &dpr2_channel2;
/delete-node/ &dpr2_channel3;
/delete-node/ &dpu1;
/delete-node/ &pixel_combiner1;
&dsp {
status = "okay";
};
/delete-node/ &irqsteer_dsi1;
/delete-node/ &i2c0_mipi_dsi1;
/delete-node/ &mipi_dsi_csr2;
/delete-node/ &mipi_dsi_phy2;
/delete-node/ &mipi_dsi2;
/delete-node/ &mipi_dsi_bridge2;
/delete-node/ &lvds_region1;
/delete-node/ &ldb1_phy;
/delete-node/ &ldb1;
/*/delete-node/ &camera;*/
/delete-node/ &adc0;
/delete-node/ &adc1;
/delete-node/ &i2c0;
/delete-node/ &i2c1;
/delete-node/ &i2c2;
/delete-node/ &i2c3;
/delete-node/ &i2c4;
/delete-node/ &i2c0_cm40;
/delete-node/ &i2c0_cm41;
/delete-node/ &irqsteer_hdmi;
/delete-node/ &irqsteer_hdmi_rx;
/delete-node/ &i2c0_hdmi;
&irqsteer_lvds1 {
reg = <0x0 0x57240000 0x0 0x1000>;
/delete-property/ interrupt-parent;
status = "okay";
};
/delete-node/ &flexcan1;
/delete-node/ &flexcan2;
/delete-node/ &flexcan3;
&i2c1_lvds1 {
reg = <0x0 0x57247000 0x0 0x1000>;
status = "okay";
};
/delete-node/ &irqsteer_lvds0;
/delete-node/ &i2c1_lvds0;
/*/delete-node/ &irqsteer_csi0;*/
/*/delete-node/ &i2c0_mipi_csi0;*/
/delete-node/ &irqsteer_csi1;
/delete-node/ &i2c0_mipi_csi1;
/delete-node/ &lpspi0;
/delete-node/ &lpspi3;
/delete-node/ &lpuart0;
&lpuart1 {
/delete-property/ interrupt-parent;
reg = <0x0 0x5a070000 0 0x1000>;
dmas = <&edma01 15 0 0>, <&edma01 14 0 1>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lpuart1>;
status = "okay";
};
/delete-node/ &lpuart2;
/delete-node/ &lpuart3;
/delete-node/ &lpuart4;
/delete-node/ &emvsim0;
/delete-node/ &edma0;
/delete-node/ &edma2;
/delete-node/ &edma3;
&gpio0 {
/delete-property/ power-domains;
status = "disabled";
};
&gpio1 {
/delete-property/ power-domains;
status = "okay";
};
&gpio2 {
/delete-property/ power-domains;
status = "disabled";
};
&gpio3 {
/delete-property/ power-domains;
status = "disabled";
};
&gpio4 {
/delete-property/ power-domains;
status = "okay";
};
&gpio5 {
/delete-property/ power-domains;
status = "disabled";
};
&gpio6 {
/delete-property/ power-domains;
status = "disabled";
};
&gpio7 {
/delete-property/ power-domains;
status = "disabled";
};
/*/delete-node/ &gpio0_mipi_csi0;*/
/delete-node/ &gpio0_mipi_csi1;
/delete-node/ &gpt0;
/delete-node/ &pwm0;
/delete-node/ &pwm1;
/delete-node/ &pwm2;
/delete-node/ &pwm3;
/delete-node/ &pwm4;
/delete-node/ &pwm5;
/delete-node/ &pwm6;
/delete-node/ &pwm7;
&gpu_3d1 {
reg = <0x0 0x54100000 0 0x40000>;
status = "okay";
};
/delete-node/ &gpu_3d0;
&imx8_gpu_ss {
/* xen guests have 2GB of low RAM @ 2GB */
reg = <0x0 0x80000000 0x0 0x80000000>, <0x0 0x0 0x0 0x10000000>;
reg-names = "phys_baseaddr", "contiguous_mem";
cores = <&gpu_3d1>;
status = "okay";
};
/delete-node/ &mlb;
&usdhc1 {
compatible = "fsl,imx8qm-usdhc", "fsl,imx6sl-usdhc";
/*interrupt-parent = <&gic>;*/
/delete-property/ interrupt-parent;
reg = <0x0 0x5b010000 0x0 0x10000>;
};
/delete-node/ &usdhc2;
/delete-node/ &usdhc3;
/delete-node/ &fec1;
/delete-node/ &fec2;
&usbmisc1 {
reg = <0x0 0x5b0d0200 0x0 0x200>;
};
&usbmisc2 {
status = "okay";
};
&usbphy1 {
reg = <0x0 0x5b100000 0x0 0x200>;
};
/delete-node/ &usbh1;
&usbotg3 {
/delete-property/ interrupt-parent;
dr_mode = "otg";
extcon = <&typec_ptn5110>;
status = "okay";
};
&usbphynop1 {
status = "okay";
};
/delete-node/ &usbphynop2;
&usbotg1 {
reg = <0x0 0x5b0d0000 0x0 0x200>;
/delete-property/ interrupt-parent;
};
/delete-node/ &ddr_pmu0;
/delete-node/ &ddr_pmu1;
/delete-node/ &vpu;
&acm {
status = "okay";
};
&esai0 {
compatible = "fsl,imx8qm-esai";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_esai0>;
dmas = <&edma21 6 0 1>, <&edma21 7 0 0>;
assigned-clocks = <&clk IMX8QM_ACM_ESAI0_MCLK_SEL>,
<&clk IMX8QM_AUD_PLL0_DIV>,
<&clk IMX8QM_AUD_ACM_AUD_PLL_CLK0_DIV>,
<&clk IMX8QM_AUD_ACM_AUD_REC_CLK0_DIV>,
<&clk IMX8QM_AUD_ESAI_0_EXTAL_IPG>;
assigned-clock-parents = <&clk IMX8QM_AUD_ACM_AUD_PLL_CLK0_CLK>;
assigned-clock-rates = <0>, <786432000>, <49152000>, <12288000>, <49152000>;
status = "okay";
};
/delete-node/ &esai1;
/delete-node/ &spdif0;
/delete-node/ &spdif1;
/delete-node/ &sai1;
&sai0 {
dmas = <&edma24 12 0 1>, <&edma24 13 0 0>;
};
/delete-node/ &sai2;
/delete-node/ &sai3;
/delete-node/ &sai_hdmi_rx;
/delete-node/ &sai_hdmi_tx;
/delete-node/ &sai6;
/delete-node/ &sai7;
/delete-node/ &amix;
&asrc0 {
dmas = <&edma20 0 0 0>, <&edma20 1 0 0>, <&edma20 2 0 0>,
<&edma20 3 0 1>, <&edma20 4 0 1>, <&edma20 5 0 1>;
fsl,asrc-rate = <48000>;
status = "okay";
};
/delete-node/ &asrc1;
/delete-node/ &mqs;
/delete-node/ &flexspi0;
&dma_cap {
compatible = "dma-capability";
only-dma-mask32 = <1>;
};
/delete-node/ &ocotp;
&pciea {
ext_osc = <1>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pciea>;
disable-gpio = <&gpio1 13 GPIO_ACTIVE_LOW>;
reset-gpio = <&gpio4 29 GPIO_ACTIVE_LOW>;
clkreq-gpio = <&gpio4 27 GPIO_ACTIVE_LOW>;
epdev_on-supply = <&epdev_on>;
status = "okay";
};
/delete-node/ &pcieb;
/delete-node/ &sata;
/delete-node/ &intmux_cm40;
/delete-node/ &intmux_cm41;
&rpmsg1{
/*
* 64K for one rpmsg instance:
*/
vdev-nums = <2>;
reg = <0x0 0x90100000 0x0 0x20000>;
status = "okay";
};
&mu_rpmsg1 {
reg = <0x0 0x5d210000 0x0 0x10000>;
};
/*/delete-node/ &crypto;*/
/*/delete-node/ &caam_sm;*/
/*/delete-node/ &sc_pwrkey;*/
/delete-node/ &wdog;
/delete-node/ &wu;
&iomuxc {
imx8qm-mek {
pinctrl_usdhc1: usdhc1grp {
fsl,pins = <
SC_P_EMMC0_CLK_CONN_EMMC0_CLK 0x06000041
SC_P_EMMC0_CMD_CONN_EMMC0_CMD 0x00000021
SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0 0x00000021
SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1 0x00000021
SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2 0x00000021
SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3 0x00000021
SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4 0x00000021
SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5 0x00000021
SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6 0x00000021
SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7 0x00000021
SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE 0x06000041
SC_P_EMMC0_RESET_B_CONN_EMMC0_RESET_B 0x00000021
>;
};
pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
fsl,pins = <
SC_P_EMMC0_CLK_CONN_EMMC0_CLK 0x06000040
SC_P_EMMC0_CMD_CONN_EMMC0_CMD 0x00000020
SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0 0x00000020
SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1 0x00000020
SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2 0x00000020
SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3 0x00000020
SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4 0x00000020
SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5 0x00000020
SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6 0x00000020
SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7 0x00000020
SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE 0x06000040
SC_P_EMMC0_RESET_B_CONN_EMMC0_RESET_B 0x00000020
>;
};
pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
fsl,pins = <
SC_P_EMMC0_CLK_CONN_EMMC0_CLK 0x06000040
SC_P_EMMC0_CMD_CONN_EMMC0_CMD 0x00000020
SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0 0x00000020
SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1 0x00000020
SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2 0x00000020
SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3 0x00000020
SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4 0x00000020
SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5 0x00000020
SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6 0x00000020
SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7 0x00000020
SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE 0x06000040
SC_P_EMMC0_RESET_B_CONN_EMMC0_RESET_B 0x00000020
>;
};
pinctrl_usbotg1: usbotg1 {
fsl,pins = <
SC_P_USB_SS3_TC0_CONN_USB_OTG1_PWR 0x00000021
>;
};
pinctrl_lvds1_lpi2c1: lvds1lpi2c1grp {
fsl,pins = <
SC_P_LVDS1_I2C1_SCL_LVDS1_I2C1_SCL 0xc600004c
SC_P_LVDS1_I2C1_SDA_LVDS1_I2C1_SDA 0xc600004c
>;
};
pinctrl_lvds1_pwm0: lvds1pwm0grp {
fsl,pins = <
SC_P_LVDS1_GPIO00_LVDS1_PWM0_OUT 0x00000020
>;
};
pinctrl_lpuart1: lpuart1grp {
fsl,pins = <
SC_P_UART1_RX_DMA_UART1_RX 0x06000020
SC_P_UART1_TX_DMA_UART1_TX 0x06000020
SC_P_UART1_CTS_B_DMA_UART1_CTS_B 0x06000020
SC_P_UART1_RTS_B_DMA_UART1_RTS_B 0x06000020
SC_P_QSPI1A_DQS_LSIO_GPIO4_IO22 0x00000021
>;
};
pinctrl_pciea: pcieagrp{
fsl,pins = <
SC_P_PCIE_CTRL0_CLKREQ_B_LSIO_GPIO4_IO27 0x06000021
SC_P_PCIE_CTRL0_WAKE_B_LSIO_GPIO4_IO28 0x04000021
SC_P_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO29 0x06000021
SC_P_LVDS1_I2C0_SDA_LSIO_GPIO1_IO13 0x06000000
SC_P_USDHC2_RESET_B_LSIO_GPIO4_IO09 0x06000021
>;
};
pinctrl_typec: typecgrp {
fsl,pins = <
SC_P_QSPI1A_SS0_B_LSIO_GPIO4_IO19 0x60
SC_P_USB_SS3_TC3_LSIO_GPIO4_IO06 0x60
SC_P_QSPI1A_DATA0_LSIO_GPIO4_IO26 0x00000021
>;
};
pinctrl_isl29023: isl29023grp {
fsl,pins = <
SC_P_USDHC2_WP_LSIO_GPIO4_IO11 0x00000021
>;
};
pinctrl_esai0: esai0grp {
fsl,pins = <
SC_P_ESAI0_FSR_AUD_ESAI0_FSR 0xc6000040
SC_P_ESAI0_FST_AUD_ESAI0_FST 0xc6000040
SC_P_ESAI0_SCKR_AUD_ESAI0_SCKR 0xc6000040
SC_P_ESAI0_SCKT_AUD_ESAI0_SCKT 0xc6000040
SC_P_ESAI0_TX0_AUD_ESAI0_TX0 0xc6000040
SC_P_ESAI0_TX1_AUD_ESAI0_TX1 0xc6000040
SC_P_ESAI0_TX2_RX3_AUD_ESAI0_TX2_RX3 0xc6000040
SC_P_ESAI0_TX3_RX2_AUD_ESAI0_TX3_RX2 0xc6000040
SC_P_ESAI0_TX4_RX1_AUD_ESAI0_TX4_RX1 0xc6000040
SC_P_ESAI0_TX5_RX0_AUD_ESAI0_TX5_RX0 0xc6000040
>;
};
};
};
&usdhc1 {
/delete-property/ iommus;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
bus-width = <8>;
non-removable;
status = "okay";
};
&usbotg1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg1>;
srp-disable;
hnp-disable;
adp-disable;
power-polarity-active-high;
disable-over-current;
status = "okay";
};
&i2c1_lvds1 {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds1_lpi2c1>;
clock-frequency = <100000>;
status = "okay";
lvds-to-hdmi-bridge@4c {
compatible = "ite,it6263";
reg = <0x4c>;
port {
it6263_1_in: endpoint {
clock-lanes = <3>;
data-lanes = <0 1 2 4>;
remote-endpoint = <&lvds1_out>;
};
};
};
};
&vpu_decoder {
core_type = <2>;
status = "okay";
};
&vpu_encoder {
status = "okay";
};
&xen_i2c0 {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <100000>;
status = "okay";
isl29023@44 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_isl29023>;
compatible = "fsl,isl29023";
reg = <0x44>;
rext = <499>;
interrupt-parent = <&gpio4>;
interrupts = <11 2>;
};
fxos8700@1e {
compatible = "fsl,fxos8700";
reg = <0x1e>;
interrupt-open-drain;
};
fxas2100x@20 {
compatible = "fsl,fxas2100x";
reg = <0x20>;
interrupt-open-drain;
};
mpl3115@60 {
compatible = "fsl,mpl3115";
reg = <0x60>;
interrupt-open-drain;
};
typec_ptn5110: typec@50 {
compatible = "usb,tcpci";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_typec>;
reg = <0x51>;
interrupt-parent = <&gpio4>;
interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
ss-sel-gpios = <&gpio4 6 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>;
src-pdos = <0x380190c8 0x3803c0c8>;
port-type = "drp";
sink-disable;
default-role = "source";
status = "okay";
};
};
&xen_i2c1 {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <100000>;
status = "okay";
cs42888: cs42888@48 {
compatible = "cirrus,cs42888";
reg = <0x48>;
clocks = <&clk IMX8QM_AUD_MCLKOUT0>;
clock-names = "mclk";
VA-supply = <&reg_audio>;
VD-supply = <&reg_audio>;
VLS-supply = <&reg_audio>;
VLC-supply = <&reg_audio>;
reset-gpio = <&gpio4 25 1>;
power-domains = <&pd_mclk_out0>;
assigned-clocks = <&clk IMX8QM_AUD_PLL0_DIV>,
<&clk IMX8QM_AUD_ACM_AUD_PLL_CLK0_DIV>,
<&clk IMX8QM_AUD_ACM_AUD_REC_CLK0_DIV>,
<&clk IMX8QM_AUD_MCLKOUT0>;
assigned-clock-rates = <786432000>, <49152000>, <12288000>, <12288000>;
status = "okay";
};
};
/* Camera */
/delete-node/ &isi_4;
/delete-node/ &isi_5;
/delete-node/ &isi_6;
/delete-node/ &isi_7;
/delete-node/ &mipi_csi_1;
/delete-node/ &jpegdec;
/delete-node/ &jpegenc;
&gpio0_mipi_csi0 {
status = "okay";
};
&irqsteer_csi0 {
status = "okay";
};
&isi_0 {
status = "okay";
};
&isi_1 {
status = "okay";
};
&isi_2 {
status = "okay";
};
&isi_3 {
status = "okay";
};
&mipi_csi_0 {
#address-cells = <1>;
#size-cells = <0>;
virtual-channel;
status = "okay";
/* Camera 0 MIPI CSI-2 (CSIS0) */
port@0 {
reg = <0>;
mipi_csi0_ep: endpoint {
remote-endpoint = <&max9286_0_ep>;
data-lanes = <1 2 3 4>;
};
};
};
&i2c0_mipi_csi0 {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
clock-frequency = <100000>;
status = "okay";
max9286_mipi@6A {
compatible = "maxim,max9286_mipi";
reg = <0x6A>;
clocks = <&clk IMX8QM_CLK_DUMMY>;
clock-names = "capture_mclk";
mclk = <27000000>;
mclk_source = <0>;
pwn-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
virtual-channel;
port {
max9286_0_ep: endpoint {
remote-endpoint = <&mipi_csi0_ep>;
data-lanes = <1 2 3 4>;
};
};
};
};
&lvds1_pwm {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds1_pwm0>;
status = "okay";
};