Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-only
# Copyright 2023 Mobileye Vision Technologies Ltd.
dtb-$(CONFIG_MACH_EYEQ5) += eyeq5-epm5.dtb
dtb-$(CONFIG_MACH_EYEQ6H) += eyeq6h-epm6.dtb
dtb-$(CONFIG_MACH_EYEQ6LPLUS) += eyeq6lplus-epm6.dtb
@@ -0,0 +1,57 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Copyright 2023 Mobileye Vision Technologies Ltd.
*/
/dts-v1/;
#include "eyeq5.dtsi"
/ {
compatible = "mobileye,eyeq5-epm5", "mobileye,eyeq5";
model = "Mobile EyeQ5 MP5 Evaluation board";
chosen {
stdout-path = "serial2:115200n8";
};
memory@0 {
device_type = "memory";
reg = <0x0 0x40000000 0x0 0x02000000>,
<0x8 0x02000000 0x0 0x7E000000>;
};
};
&i2c2 {
temperature-sensor@48 {
compatible = "ti,tmp112";
reg = <0x48>;
label = "U60";
};
};
&macb0 {
phy-mode = "sgmii";
phy-handle = <&macb0_phy>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
macb0_phy: ethernet-phy@e {
reg = <0xe>;
};
};
};
&macb1 {
phy-mode = "rgmii-id";
phy-handle = <&macb1_phy>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
macb1_phy: ethernet-phy@e {
reg = <0xe>;
};
};
};
@@ -0,0 +1,125 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Default pin configuration for Mobileye EyeQ5 boards. We mostly create one
* pin configuration node per function.
*/
&olb {
timer0_pins: timer0-pins {
function = "timer0";
pins = "PA0", "PA1";
};
timer1_pins: timer1-pins {
function = "timer1";
pins = "PA2", "PA3";
};
timer2_pins: timer2-pins {
function = "timer2";
pins = "PA4", "PA5";
};
pps0_pins: pps0-pin {
function = "timer2";
pins = "PA4";
};
pps1_pins: pps1-pin {
function = "timer2";
pins = "PA5";
};
timer5_ext_pins: timer5-ext-pins {
function = "timer5";
pins = "PA6", "PA7", "PA8", "PA9";
};
timer5_ext_input_pins: timer5-ext-input-pins {
function = "timer5";
pins = "PA6", "PA7";
};
timer5_ext_incap_a_pins: timer5-ext-incap-a-pin {
function = "timer5";
pins = "PA6";
};
timer5_ext_incap_b_pins: timer5-ext-incap-b-pin {
function = "timer5";
pins = "PA7";
};
can0_pins: can0-pins {
function = "can0";
pins = "PA14", "PA15";
};
can1_pins: can1-pins {
function = "can1";
pins = "PA16", "PA17";
};
uart0_pins: uart0-pins {
function = "uart0";
pins = "PA10", "PA11";
};
uart1_pins: uart1-pins {
function = "uart1";
pins = "PA12", "PA13";
};
spi0_pins: spi0-pins {
function = "spi0";
pins = "PA18", "PA19", "PA20", "PA21", "PA22";
};
spi1_pins: spi1-pins {
function = "spi1";
pins = "PA23", "PA24", "PA25", "PA26", "PA27";
};
spi1_slave_pins: spi1-slave-pins {
function = "spi1";
pins = "PA24", "PA25", "PA26";
};
refclk0_pins: refclk0-pin {
function = "refclk0";
pins = "PA28";
};
timer3_pins: timer3-pins {
function = "timer3";
pins = "PB0", "PB1";
};
timer4_pins: timer4-pins {
function = "timer4";
pins = "PB2", "PB3";
};
timer6_ext_pins: timer6-ext-pins {
function = "timer6";
pins = "PB4", "PB5", "PB6", "PB7";
};
timer6_ext_input_pins: timer6-ext-input-pins {
function = "timer6";
pins = "PB4", "PB5";
};
timer6_ext_incap_a_pins: timer6-ext-incap-a-pin {
function = "timer6";
pins = "PB4";
};
timer6_ext_incap_b_pins: timer6-ext-incap-b-pin {
function = "timer6";
pins = "PB5";
};
can2_pins: can2-pins {
function = "can2";
pins = "PB10", "PB11";
};
uart2_pins: uart2-pins {
function = "uart2";
pins = "PB8", "PB9";
};
spi2_pins: spi2-pins {
function = "spi2";
pins = "PB12", "PB13", "PB14", "PB15", "PB16";
};
spi3_pins: spi3-pins {
function = "spi3";
pins = "PB17", "PB18", "PB19", "PB20", "PB21";
};
spi3_slave_pins: spi3-slave-pins {
function = "spi3";
pins = "PB18", "PB19", "PB20";
};
mclk0_pins: mclk0-pin {
function = "mclk0";
pins = "PB22";
};
};
@@ -0,0 +1,356 @@
// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
/*
* Copyright 2023 Mobileye Vision Technologies Ltd.
*/
#include <dt-bindings/interrupt-controller/mips-gic.h>
#include <dt-bindings/clock/mobileye,eyeq5-clk.h>
/ {
#address-cells = <2>;
#size-cells = <2>;
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "img,i6500";
reg = <0>;
clocks = <&olb EQ5C_CPU_CORE0>;
};
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* These reserved memory regions are also defined in bootmanager
* for configuring inbound translation for BARS, don't change
* these without syncing with bootmanager
*/
shmem0_reserved: shmem@804000000 {
reg = <0x8 0x04000000 0x0 0x1000000>;
};
shmem1_reserved: shmem@805000000 {
reg = <0x8 0x05000000 0x0 0x1000000>;
};
pci0_msi_reserved: pci0-msi@806000000 {
reg = <0x8 0x06000000 0x0 0x100000>;
};
pci1_msi_reserved: pci1-msi@806100000 {
reg = <0x8 0x06100000 0x0 0x100000>;
};
mini_coredump0_reserved: mini-coredump0@806200000 {
reg = <0x8 0x06200000 0x0 0x100000>;
};
mhm_reserved_0: the-mhm-reserved-0@0 {
reg = <0x8 0x00000000 0x0 0x0000800>;
};
nvram@461fe00 {
compatible = "mobileye,eyeq5-bootloader-config", "nvmem-rmem";
reg = <0x0 0x0461fe00 0x0 0x200>;
#address-cells = <1>;
#size-cells = <1>;
no-map;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
eth0_mac: mac@7c {
reg = <0x7c 0x6>;
};
eth1_mac: mac@82 {
reg = <0x82 0x6>;
};
};
};
};
aliases {
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
ethernet0 = &macb0;
ethernet1 = &macb1;
};
cpu_intc: interrupt-controller {
compatible = "mti,cpu-interrupt-controller";
interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <1>;
};
xtal: xtal {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <30000000>;
};
pclk: pclk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <250000000>; /* 250MHz */
};
tsu_clk: tsu-clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <125000000>; /* 125MHz */
};
soc: soc {
#address-cells = <2>;
#size-cells = <2>;
ranges;
compatible = "simple-bus";
i2c0: i2c@300000 {
compatible = "mobileye,eyeq5-i2c", "arm,primecell";
reg = <0 0x300000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 1 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <400000>; /* Fast mode */
#address-cells = <1>;
#size-cells = <0>;
clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
clock-names = "i2cclk", "apb_pclk";
resets = <&olb 0 13>;
i2c-transfer-timeout-us = <10000>;
mobileye,olb = <&olb 0>;
};
i2c1: i2c@400000 {
compatible = "mobileye,eyeq5-i2c", "arm,primecell";
reg = <0 0x400000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 2 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <400000>; /* Fast mode */
#address-cells = <1>;
#size-cells = <0>;
clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
clock-names = "i2cclk", "apb_pclk";
resets = <&olb 0 14>;
i2c-transfer-timeout-us = <10000>;
mobileye,olb = <&olb 1>;
};
i2c2: i2c@500000 {
compatible = "mobileye,eyeq5-i2c", "arm,primecell";
reg = <0 0x500000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 3 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <400000>; /* Fast mode */
#address-cells = <1>;
#size-cells = <0>;
clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
clock-names = "i2cclk", "apb_pclk";
resets = <&olb 0 15>;
i2c-transfer-timeout-us = <10000>;
mobileye,olb = <&olb 2>;
};
i2c3: i2c@600000 {
compatible = "mobileye,eyeq5-i2c", "arm,primecell";
reg = <0 0x600000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <400000>; /* Fast mode */
#address-cells = <1>;
#size-cells = <0>;
clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
clock-names = "i2cclk", "apb_pclk";
resets = <&olb 0 16>;
i2c-transfer-timeout-us = <10000>;
mobileye,olb = <&olb 3>;
};
i2c4: i2c@700000 {
compatible = "mobileye,eyeq5-i2c", "arm,primecell";
reg = <0 0x700000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 5 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <400000>; /* Fast mode */
#address-cells = <1>;
#size-cells = <0>;
clocks = <&olb 35>, <&olb EQ5C_PER_I2C>;
clock-names = "i2cclk", "apb_pclk";
resets = <&olb 0 17>;
i2c-transfer-timeout-us = <10000>;
mobileye,olb = <&olb 4>;
};
uart0: serial@800000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0 0x800000 0x0 0x1000>;
reg-io-width = <4>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&olb EQ5C_PER_UART>, <&olb EQ5C_PER_OCC>;
clock-names = "uartclk", "apb_pclk";
resets = <&olb 0 10>;
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins>;
};
uart1: serial@900000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0 0x900000 0x0 0x1000>;
reg-io-width = <4>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&olb EQ5C_PER_UART>, <&olb EQ5C_PER_OCC>;
clock-names = "uartclk", "apb_pclk";
resets = <&olb 0 11>;
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>;
};
uart2: serial@a00000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0 0xa00000 0x0 0x1000>;
reg-io-width = <4>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&olb EQ5C_PER_UART>, <&olb EQ5C_PER_OCC>;
clock-names = "uartclk", "apb_pclk";
resets = <&olb 0 12>;
pinctrl-names = "default";
pinctrl-0 = <&uart2_pins>;
};
olb: system-controller@e00000 {
compatible = "mobileye,eyeq5-olb", "syscon";
reg = <0 0xe00000 0x0 0x400>;
#reset-cells = <2>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
#phy-cells = <1>;
};
gic: interrupt-controller@140000 {
compatible = "mti,gic";
reg = <0x0 0x140000 0x0 0x20000>;
interrupt-controller;
#interrupt-cells = <3>;
/*
* Declare the interrupt-parent even though the mti,gic
* binding doesn't require it, such that the kernel can
* figure out that cpu_intc is the root interrupt
* controller & should be probed first.
*/
interrupt-parent = <&cpu_intc>;
timer {
compatible = "mti,gic-timer";
interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>;
clocks = <&olb EQ5C_CPU_CORE0>;
};
};
emmc: mmc@2200000 {
compatible = "mobileye,eyeq-sd4hc", "cdns,sd4hc";
reg = <0 0x2200000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 10 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&olb EQ5C_PER_EMMC>;
bus-width = <8>;
max-frequency = <200000000>;
mmc-ddr-1_8v;
sd-uhs-ddr50;
mmc-hs200-1_8v;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
cdns,phy-input-delay-legacy = <4>;
cdns,phy-input-delay-mmc-highspeed = <2>;
cdns,phy-input-delay-mmc-ddr = <3>;
cdns,phy-dll-delay-sdclk = <32>;
cdns,phy-dll-delay-sdclk-hsmmc = <32>;
cdns,phy-dll-delay-strobe = <32>;
};
gpio0: gpio@1400000 {
compatible = "mobileye,eyeq5-gpio";
reg = <0x0 0x1400000 0x0 0x1000>;
gpio-bank = <0>;
ngpios = <29>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 14 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&olb 0 0 29>;
interrupt-controller;
#interrupt-cells = <2>;
resets = <&olb 0 26>;
};
gpio1: gpio@1500000 {
compatible = "mobileye,eyeq5-gpio";
reg = <0x0 0x1500000 0x0 0x1000>;
gpio-bank = <1>;
ngpios = <23>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 14 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
gpio-ranges = <&olb 0 29 23>;
interrupt-controller;
#interrupt-cells = <2>;
resets = <&olb 0 26>;
};
iocu-bus {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges;
dma-coherent;
dma-ranges = <0x10 0x00000000 0x0 0x0 0x10 0>;
macb0: ethernet@2a00000 {
compatible = "mobileye,eyeq5-gem";
reg = <0x0 0x02a00000 0x0 0x4000>;
interrupt-parent = <&gic>;
/* One interrupt per queue */
interrupts = <GIC_SHARED 23 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SHARED 23 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SHARED 23 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SHARED 23 IRQ_TYPE_LEVEL_HIGH>;
clock-names = "pclk", "hclk", "tsu_clk";
clocks = <&pclk>, <&pclk>, <&tsu_clk>;
nvmem-cells = <&eth0_mac>;
nvmem-cell-names = "mac-address";
phys = <&olb 0>;
};
macb1: ethernet@2b00000 {
compatible = "mobileye,eyeq5-gem";
reg = <0x0 0x02b00000 0x0 0x4000>;
interrupt-parent = <&gic>;
/* One interrupt per queue */
interrupts = <GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>;
clock-names = "pclk", "hclk", "tsu_clk";
clocks = <&pclk>, <&pclk>, <&tsu_clk>;
nvmem-cells = <&eth1_mac>;
nvmem-cell-names = "mac-address";
phys = <&olb 1>;
};
};
};
};
#include "eyeq5-pins.dtsi"
@@ -0,0 +1,22 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Copyright 2024 Mobileye Vision Technologies Ltd.
*/
/dts-v1/;
#include "eyeq6h.dtsi"
/ {
compatible = "mobileye,eyeq6h-epm6", "mobileye,eyeq6h";
model = "Mobile EyeQ6H MP6 Evaluation board";
chosen {
stdout-path = "serial0:921600n8";
};
memory@0 {
device_type = "memory";
reg = <0x1 0x00000000 0x1 0x00000000>;
};
};
@@ -0,0 +1,88 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Copyright 2024 Mobileye Vision Technologies Ltd.
*/
/*
* MUX register structure
* bits | field | comment
* [0] | MUX_SEL | 0 - GPIO, 1 - alternative func
* [4] | SW_LOOPBACK|
* [5] | SW_OUT_HZ |
* [7] | DBG_IN |
* [11:8] | DS | drive strength
* [13:12] | PUD | pull-up/pull-down. 0, 3 - no, 1 - PD, 2 - PU
* [14] | OD | Open drain
* [15] | ST_CFG | Hysteretic input enable (Schmitt trigger)
*/
&pinctrl_west {
// TODO: use pinctrl-single,bias-pullup
// TODO: use pinctrl-single,bias-pulldown
// TODO: use pinctrl-single,drive-strength
// TODO: use pinctrl-single,input-schmitt
i2c0_pins: i2c0-pins {
pinctrl-single,pins = <
0x000 0x200 // I2C0_SCL pin
0x004 0x200 // I2C0_SDA pin
>;
};
i2c1_pins: i2c1-pins {
pinctrl-single,pins = <
0x008 0x200 // I2C1_SCL pin
0x00c 0x200 // I2C1_SDA pin
>;
};
eth0_pins: eth0-pins {
pinctrl-single,pins = <
0x080 1 // GPIO_C4__SMA0_MDC pin
0x084 1 // GPIO_C5__SMA0_MDIO pin
>;
};
uart0_pins: uart0-pins {
pinctrl-single,pins = <0x0a8 1>; // UART0 pin group
};
uart1_pins: uart1-pins {
pinctrl-single,pins = <0x0a0 1>; // UART1 pin group
};
spi0_pins: spi0-pins {
pinctrl-single,pins = <0x0ac 1>; // SPI0 pin group
};
spi1_pins: spi1-pins {
pinctrl-single,pins = <0x0a4 1>; // SPI1 pin group
};
};
&pinctrl_east {
i2c2_pins: i2c2-pins {
pinctrl-single,pins = <
0x000 0x200 // i2c2_SCL pin
0x004 0x200 // i2c2_SDA pin
>;
};
i2c3_pins: i2c3-pins {
pinctrl-single,pins = <
0x008 0x200 // i2c3_SCL pin
0x00c 0x200 // i2c3_SDA pin
>;
};
eth1_pins: eth1-pins {
pinctrl-single,pins = <
0x080 1 // GPIO_D4__SMA1_MDC pin
0x084 1 // GPIO_D5__SMA1_MDIO pin
>;
};
uart2_sel_pins: uart2-pins {
pinctrl-single,pins = <0x0a4 1>; // UART2 pin group
};
uart3_pins: uart3-pins {
pinctrl-single,pins = <0x09c 1>; // UART3 pin group
};
spi2_pins: spi2-pins {
pinctrl-single,pins = <0x0a8 1>; // SPI2 pin group
};
spi3_pins: spi3-pins {
pinctrl-single,pins = <0x0a0 1>; // SPI3 pin group
};
};
@@ -0,0 +1,189 @@
// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
/*
* Copyright 2024 Mobileye Vision Technologies Ltd.
*/
#include <dt-bindings/interrupt-controller/mips-gic.h>
#include <dt-bindings/clock/mobileye,eyeq5-clk.h>
/ {
#address-cells = <2>;
#size-cells = <2>;
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "img,i6500";
reg = <0>;
clocks = <&olb_central EQ6HC_CENTRAL_CPU_OCC>;
};
};
aliases {
serial0 = &uart0;
};
cpu_intc: interrupt-controller {
compatible = "mti,cpu-interrupt-controller";
interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <1>;
};
coherency-manager {
compatible = "mobileye,eyeq6-cm";
};
xtal: clock-30000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <30000000>;
};
soc: soc {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges;
olb_acc: system-controller@d2003000 {
compatible = "mobileye,eyeq6h-acc-olb", "syscon";
reg = <0x0 0xd2003000 0x0 0x1000>;
#reset-cells = <1>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
};
olb_central: system-controller@d3100000 {
compatible = "mobileye,eyeq6h-central-olb", "syscon";
reg = <0x0 0xd3100000 0x0 0x1000>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
};
uart0: serial@d3331000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0 0xd3331000 0x0 0x1000>;
reg-io-width = <4>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 43 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&olb_west EQ6HC_WEST_PER_UART>, <&olb_west EQ6HC_WEST_PER_OCC>;
clock-names = "uartclk", "apb_pclk";
};
pinctrl_west: pinctrl@d3337000 {
compatible = "pinctrl-single";
reg = <0x0 0xd3337000 0x0 0xb0>;
#pinctrl-cells = <1>;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <0xffff>;
};
olb_west: system-controller@d3338000 {
compatible = "mobileye,eyeq6h-west-olb", "syscon";
reg = <0x0 0xd3338000 0x0 0x1000>;
#reset-cells = <1>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
};
pinctrl_east: pinctrl@d3357000 {
compatible = "pinctrl-single";
reg = <0x0 0xd3357000 0x0 0xb0>;
#pinctrl-cells = <1>;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <0xffff>;
};
olb_east: system-controller@d3358000 {
compatible = "mobileye,eyeq6h-east-olb", "syscon";
reg = <0x0 0xd3358000 0x0 0x1000>;
#reset-cells = <1>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
};
emmc: mmc@d8010000 {
compatible = "mobileye,eyeq-sd4hc", "cdns,sd4hc";
reg = <0 0xd8010000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 91 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&olb_south EQ6HC_SOUTH_DIV_EMMC>;
bus-width = <8>;
max-frequency = <200000000>;
mmc-ddr-1_8v;
sd-uhs-ddr50;
mmc-hs200-1_8v;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
cdns,phy-input-delay-legacy = <4>;
cdns,phy-input-delay-mmc-highspeed = <2>;
cdns,phy-input-delay-mmc-ddr = <3>;
cdns,phy-dll-delay-sdclk = <32>;
cdns,phy-dll-delay-sdclk-hsmmc = <32>;
cdns,phy-dll-delay-strobe = <32>;
};
olb_south: system-controller@d8013000 {
compatible = "mobileye,eyeq6h-south-olb", "syscon";
reg = <0x0 0xd8013000 0x0 0x1000>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
};
pinctrl_south: pinctrl@d8014000 {
compatible = "pinctrl-single";
reg = <0x0 0xd8014000 0x0 0xf8>;
#pinctrl-cells = <1>;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <0xffff>;
};
olb_ddr0: system-controller@e4080000 {
compatible = "mobileye,eyeq6h-ddr0-olb", "syscon";
reg = <0x0 0xe4080000 0x0 0x1000>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
};
olb_ddr1: system-controller@e4081000 {
compatible = "mobileye,eyeq6h-ddr1-olb", "syscon";
reg = <0x0 0xe4081000 0x0 0x1000>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
};
gic: interrupt-controller@f0920000 {
compatible = "mti,gic";
reg = <0x0 0xf0920000 0x0 0x20000>;
interrupt-controller;
#interrupt-cells = <3>;
/*
* Declare the interrupt-parent even though the mti,gic
* binding doesn't require it, such that the kernel can
* figure out that cpu_intc is the root interrupt
* controller & should be probed first.
*/
interrupt-parent = <&cpu_intc>;
timer {
compatible = "mti,gic-timer";
interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>;
clocks = <&olb_central EQ6HC_CENTRAL_CPU_OCC>;
};
};
};
};
#include "eyeq6h-pins.dtsi"
@@ -0,0 +1,103 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
* Copyright 2025 Mobileye Vision Technologies Ltd.
*/
/dts-v1/;
#include "eyeq6lplus.dtsi"
/ {
compatible = "mobileye,eyeq6lplus-epm6", "mobileye,eyeq6lplus";
model = "Mobileye EyeQ6Lplus Evaluation board";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:921600n8";
};
memory@0 {
device_type = "memory";
reg = <0x1 0x00000000 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* These reserved memory regions are also defined in bootmanager
* for configuring inbound translation for BARS, don't change
* these without syncing with bootmanager
*/
mhm_reserved_0: the-mhm-reserved-0 {
reg = <0x1 0x00000000 0x0 0x0000800>;
};
bm_logs_reserved: bm-logs-reserved {
reg = <0x1 0x0000800 0x0 0x000f800>;
};
shmem0_reserved: shmem@804000000 {
reg = <0x1 0x04000000 0x0 0x1000000>;
};
shmem1_reserved: shmem@805000000 {
reg = <0x1 0x05000000 0x0 0x1000000>;
};
mini_coredump0_reserved: mini-coredump0@806200000 {
reg = <0x1 0x06200000 0x0 0x100000>;
};
mailbox_reserved: mailbox-reserved {
reg = <0x1 0x06300000 0x0 0x000300>;
};
sys_logs_reserved: sys-logs-reserved {
reg = <0x1 0x10000000 0x0 0x800000>;
};
csl_policy_logs_reserved: csl-policy-logs-reserved {
reg = <0x1 0x10800000 0x0 0x10000>;
};
};
};
&ospi {
status = "okay";
flash@0 {
compatible = "spi-nand";
reg = <0>;
spi-max-frequency = <40000000>;
cdns,read-delay = <0>;
cdns,tshsl-ns = <400>;
cdns,tsd2d-ns = <120>;
cdns,tchsh-ns = <40>;
cdns,tslch-ns = <20>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <8>;
};
};
&spi0 {
pinctrl-0 = <&spi0_pins>;
pinctrl-names = "default";
status = "okay";
};
&spi1 {
pinctrl-0 = <&spi1_pins>;
pinctrl-names = "default";
status = "okay";
};
&uart0 {
pinctrl-0 = <&uart0_pins>;
pinctrl-names = "default";
status = "okay";
};
&i2c0 {
status = "okay";
};
&i2c1 {
status = "okay";
};
@@ -0,0 +1,84 @@
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
&olb {
timer0_pins: timer0-pins {
function = "timer0";
pins = "PA0", "PA1";
};
timer1_pins: timer1-pins {
function = "timer1";
pins = "PA2", "PA3";
};
uart_ssi_pins: uart-ssi-pins {
function = "uart_ssi";
pins = "PA4", "PA5";
};
spi0_pins: spi0-pins {
function = "spi0";
pins = "PA6", "PA7", "PA8", "PA9";
};
uart0_pins: uart0-pins {
function = "uart0";
pins = "PA11", "PA12";
};
timer2_pins: timer2-pins {
function = "timer2";
pins = "PA13", "PA14";
};
timer3_pins: timer3-pins {
function = "timer3";
pins = "PA15", "PA16";
};
timer_ext0_pins: timer-ext0-pins {
function = "timer_ext0";
pins = "PA17", "PA18", "PA19", "PA20";
};
timer_ext0_input_a_pins: timer-ext0-input-a-pins {
function = "timer_ext0";
pins = "PA17";
};
pps0_pins: pps0-pins {
function = "timer_ext0";
pins = "PA17";
};
timer_ext0_input_b_pins: timer-ext0-input-b-pins {
function = "timer_ext0";
pins = "PA18";
};
timer_ext0_output_pins: timer-ext0-output-pins {
function = "timer_ext0";
pins = "PA19", "PA20";
};
spi1_pins: spi1-pins {
function = "spi1";
pins = "PA21", "PA22", "PA23", "PA24";
};
spi1_reduced_pins: spi1-reduced-pins {
function = "spi1";
pins = "PA21", "PA22", "PA23";
};
timer_ext1_pins: timer-ext1-pins {
function = "timer_ext1";
pins = "PA26", "PA27", "PA28", "PA29";
};
timer_ext1_input_a_pins: timer-ext1-input-a-pins {
function = "timer_ext1";
pins = "PA26";
};
timer_ext1_input_b_pins: timer-ext1-input-b-pins {
function = "timer_ext1";
pins = "PA27";
};
timer_ext1_output_pins: timer-ext1-output-pins {
function = "timer_ext1";
pins = "PA28", "PA29";
};
ext_ref_clk_pins: ext-ref-clk-pins {
function = "ext_ref_clk";
pins = "PA30";
};
mipi_ref_clk_pins: mipi-ref-clk-pins {
function = "mipi_ref_clk";
pins = "PA31";
};
};
@@ -0,0 +1,170 @@
// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
/*
* Copyright 2025 Mobileye Vision Technologies Ltd.
*/
#include <dt-bindings/interrupt-controller/mips-gic.h>
#include <dt-bindings/clock/mobileye,eyeq6lplus-clk.h>
/ {
#address-cells = <2>;
#size-cells = <2>;
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "img,i6500";
reg = <0>;
clocks = <&olb EQ6LPC_CPU_OCC>;
};
};
cpu_intc: interrupt-controller {
compatible = "mti,cpu-interrupt-controller";
interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <1>;
};
coherency-manager {
compatible = "mobileye,eyeq6-cm";
};
xtal: clock-30000000 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <30000000>;
};
soc: soc {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges;
olb: system-controller@e8400000 {
compatible = "mobileye,eyeq6lplus-olb", "syscon";
reg = <0 0xe8400000 0x0 0x80000>;
#reset-cells = <2>;
#clock-cells = <1>;
clocks = <&xtal>;
clock-names = "ref";
};
ospi: spi@e8800000 {
compatible = "mobileye,eyeq5-ospi", "cdns,qspi-nor";
#address-cells = <1>;
#size-cells = <0>;
reg = <0 0xe8800000 0x0 0x100000>,
<0 0xb0000000 0x0 0x30000000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 10 IRQ_TYPE_LEVEL_HIGH>;
cdns,fifo-depth = <128>;
cdns,fifo-width = <4>;
cdns,trigger-address = <0x00000000>;
clocks = <&olb EQ6LPC_PER_OSPI>;
status = "disabled";
};
spi0: spi@eac0d000 {
compatible = "snps,dw-apb-ssi";
reg = <0 0xeac0d000 0x0 0x1000>;
clocks = <&olb EQ6LPC_PER_SPI>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 11 IRQ_TYPE_LEVEL_HIGH>;
resets = <&olb 0 0>;
reset-names = "spi";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
spi1: spi@eac0e000 {
compatible = "snps,dw-apb-ssi";
reg = <0 0xeac0e000 0x0 0x1000>;
spi-slave;
clocks = <&olb EQ6LPC_PER_SPI>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 12 IRQ_TYPE_LEVEL_HIGH>;
resets = <&olb 0 1>;
reset-names = "spi";
#address-cells = <0>;
#size-cells = <0>;
status = "disabled";
};
uart0: serial@eac10000 {
compatible = "snps,dw-apb-uart";
reg-shift = <2>;
reg-io-width = <4>;
clocks = <&olb EQ6LPC_PER_UART>;
clock-frequency = <15625000>;
reg = <0 0xeac10000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 8 IRQ_TYPE_LEVEL_HIGH>;
resets = <&olb 0 2>;
status = "disabled";
};
i2c0: i2c@eac11000 {
compatible = "mobileye,eyeq6lplus-i2c", "snps,designware-i2c";
reg = <0 0xeac11000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 6 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <400000>;
clocks = <&olb EQ6LPC_PER_I2C_SER>;
resets = <&olb 0 3>;
i2c-sda-hold-time-ns = <50>;
status = "disabled";
};
i2c1: i2c@eac12000 {
compatible = "mobileye,eyeq6lplus-i2c", "snps,designware-i2c";
reg = <0 0xeac12000 0x0 0x1000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 7 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <400000>;
clocks = <&olb EQ6LPC_PER_I2C_SER>;
resets = <&olb 0 4>;
i2c-sda-hold-time-ns = <50>;
status = "disabled";
};
gpio: gpio@eac14000 {
compatible = "snps,dw-apb-gpio";
reg = <0x0 0xeac14000 0x0 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
resets = <&olb 0 13>;
porta: gpio-port@0 {
compatible = "snps,dw-apb-gpio-port";
gpio-controller;
#gpio-cells = <2>;
snps,nr-gpios = <32>;
gpio-ranges = <&olb 0 0 32>;
reg = <0>;
interrupt-controller;
#interrupt-cells = <2>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 13 IRQ_TYPE_LEVEL_HIGH>;
};
};
gic: interrupt-controller@f0920000 {
compatible = "mti,gic";
reg = <0x0 0xf0920000 0x0 0x20000>;
interrupt-controller;
#interrupt-cells = <3>;
interrupt-parent = <&cpu_intc>;
timer {
compatible = "mti,gic-timer";
interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>;
clocks = <&olb EQ6LPC_CPU_OCC>;
};
};
};
};
#include "eyeq6lplus-pins.dtsi"