blob: 4700a2d746e58018ef9a55178737a1d2631714db [file] [log] [blame]
/*
* Copyright (c) 2019 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <arm/armv7-m.dtsi>
#include <zephyr/dt-bindings/adc/adc.h>
#include <zephyr/dt-bindings/clock/mchp_xec_pcr.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <zephyr/dt-bindings/gpio/microchip-xec-gpio.h>
/ {
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-m4";
reg = <0>;
};
};
flash0: flash@e0000 {
reg = <0x000E0000 0x38000>;
};
sram0: memory@118000 {
compatible = "mmio-sram";
reg = <0x00118000 0x8000>;
};
aliases {
i2c-smb-0 = &i2c_smb_0;
i2c-smb-1 = &i2c_smb_1;
i2c-smb-2 = &i2c_smb_2;
i2c-smb-3 = &i2c_smb_3;
i2c-smb-4 = &i2c_smb_4;
};
soc {
ecs: ecs@4000fc00 {
compatible = "microchip,xec-ecs";
reg = <0x4000fc00 0x200>;
};
pcr: pcr@40080100 {
compatible = "microchip,xec-pcr";
reg = <0x40080100 0x100 0x4000a400 0x100>;
reg-names = "pcrr", "vbatr";
core-clock-div = <1>;
/* MEC15xx requires both sources to be the same */
pll-32k-src = <MCHP_XEC_PLL_CLK32K_SRC_SIL_OSC>;
periph-32k-src = <MCHP_XEC_PERIPH_CLK32K_SRC_SO_SO>;
clk32kmon-period-min = <1435>;
clk32kmon-period-max = <1495>;
clk32kmon-duty-cycle-var-max = <132>;
clk32kmon-valid-min = <4>;
xtal-enable-delay-ms = <300>;
pll-lock-timeout-ms = <30>;
/* pin configured only if the sources is set to PIN */
pinctrl-0 = <&clk_32khz_in_gpio165>;
pinctrl-names = "default";
#clock-cells = <3>;
};
ecia: ecia@4000e000 {
reg = <0x4000e000 0x400>;
#address-cells = <1>;
#size-cells = <1>;
girq23: girq23@12c {
reg = <0x12c 0x14>;
interrupts = <14 0>;
girq-id = <15>;
sources = <0 1 2 4 5 10 16 17>;
status = "disabled";
};
};
pinctrl: pin-controller@40081000 {
compatible = "microchip,xec-pinctrl";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x40081000 0x1000>;
gpio_000_036: gpio@40081000 {
compatible = "microchip,xec-gpio";
reg = < 0x40081000 0x80 0x40081300 0x04
0x40081380 0x04 0x400813fc 0x04>;
interrupts = <3 2>;
gpio-controller;
port-id = <0>;
girq-id = <11>;
#gpio-cells=<2>;
};
gpio_040_076: gpio@40081080 {
compatible = "microchip,xec-gpio";
reg = < 0x40081080 0x80 0x40081304 0x04
0x40081384 0x04 0x400813f8 0x4>;
interrupts = <2 2>;
gpio-controller;
port-id = <1>;
girq-id = <10>;
#gpio-cells=<2>;
};
gpio_100_136: gpio@40081100 {
compatible = "microchip,xec-gpio";
reg = < 0x40081100 0x80 0x40081308 0x04
0x40081388 0x04 0x400813f4 0x04>;
gpio-controller;
interrupts = <1 2>;
port-id = <2>;
girq-id = <9>;
#gpio-cells=<2>;
};
gpio_140_176: gpio@40081180 {
compatible = "microchip,xec-gpio";
reg = < 0x40081180 0x80 0x4008130c 0x04
0x4008138c 0x04 0x400813f0 0x04>;
gpio-controller;
interrupts = <0 2>;
port-id = <3>;
girq-id = <8>;
#gpio-cells=<2>;
};
gpio_200_236: gpio@40081200 {
compatible = "microchip,xec-gpio";
reg = < 0x40081200 0x80 0x40081310 0x04
0x40081390 0x04 0x400813ec 0x04>;
gpio-controller;
interrupts = <4 2>;
port-id = <4>;
girq-id = <12>;
#gpio-cells=<2>;
};
gpio_240_276: gpio@40081280 {
compatible = "microchip,xec-gpio";
reg = < 0x40081280 0x80 0x40081314 0x04
0x40081394 0x04 0x400813e8 0x04>;
gpio-controller;
interrupts = <17 2>;
port-id = <5>;
girq-id = <26>;
#gpio-cells=<2>;
};
};
rtimer: timer@40007400 {
compatible = "microchip,xec-rtos-timer";
reg = <0x40007400 0x10>;
interrupts = <111 0>;
girqs = <23 10>;
};
bbram: bb-ram@4000a800 {
compatible = "microchip,xec-bbram";
reg = <0x4000a800 0x80>;
reg-names = "memory";
};
wdog: watchdog@40000400 {
compatible = "microchip,xec-watchdog";
reg = <0x40000400 0x400>;
interrupts = <171 0>;
girqs = <21 2>;
pcrs = <1 9>;
};
uart0: uart@400f2400 {
compatible = "microchip,xec-uart";
reg = <0x400f2400 0x400>;
interrupts = <40 0>;
clock-frequency = <1843200>;
current-speed = <38400>;
girqs = <15 0>;
pcrs = <2 1>;
ldn = <9>;
status = "disabled";
};
uart1: uart@400f2800 {
compatible = "microchip,xec-uart";
reg = <0x400f2800 0x400>;
interrupts = <41 0>;
clock-frequency = <1843200>;
current-speed = <38400>;
girqs = <15 1>;
pcrs = <2 2>;
ldn = <10>;
status = "disabled";
};
uart2: uart@400f2c00 {
compatible = "microchip,xec-uart";
reg = <0x400f2c00 0x400>;
interrupts = <44 0>;
clock-frequency = <1843200>;
current-speed = <38400>;
girqs = <15 4>;
pcrs = <2 28>;
ldn = <11>;
status = "disabled";
};
i2c_smb_0: i2c@40004000 {
compatible = "microchip,xec-i2c";
reg = <0x40004000 0x80>;
clock-frequency = <I2C_BITRATE_STANDARD>;
interrupts = <20 1>;
pcrs = <1 10>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
girq = <13>;
girq-bit = <0>;
};
i2c_smb_1: i2c@40004400 {
compatible = "microchip,xec-i2c";
reg = <0x40004400 0x80>;
clock-frequency = <I2C_BITRATE_STANDARD>;
interrupts = <21 1>;
pcrs = <3 13>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
girq = <13>;
girq-bit = <1>;
};
i2c_smb_2: i2c@40004800 {
compatible = "microchip,xec-i2c";
reg = <0x40004800 0x80>;
clock-frequency = <I2C_BITRATE_STANDARD>;
interrupts = <22 1>;
pcrs = <3 14>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
girq = <13>;
girq-bit = <2>;
};
i2c_smb_3: i2c@40004c00 {
compatible = "microchip,xec-i2c";
reg = <0x40004C00 0x80>;
clock-frequency = <I2C_BITRATE_STANDARD>;
interrupts = <23 1>;
pcrs = <3 15>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
girq = <13>;
girq-bit = <3>;
};
i2c_smb_4: i2c@40005000 {
compatible = "microchip,xec-i2c";
reg = <0x40005000 0x80>;
clock-frequency = <I2C_BITRATE_STANDARD>;
interrupts = <158 1>;
pcrs = <3 20>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
girq = <13>;
girq-bit = <4>;
};
espi0: espi@400f3400 {
compatible = "microchip,xec-espi";
reg = <0x400f3400 0x400>;
interrupts = <11 3>, <15 3>, <7 3>, <16 3>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
espi_saf0: espi@40008000 {
compatible = "microchip,xec-espi-saf";
reg = < 0x40008000 0x400
0x40070000 0x400
0x40071000 0x400>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
timer0: timer@40000c00 {
compatible = "microchip,xec-timer";
clock-frequency = <48000000>;
reg = <0x40000c00 0x20>;
interrupts = <136 0>;
max-value = <0xFFFF>;
prescaler = <0>;
status = "disabled";
girqs = <23 0>;
pcrs = <1 30>;
};
timer1: timer@40000c20 {
compatible = "microchip,xec-timer";
clock-frequency = <48000000>;
reg = <0x40000c20 0x20>;
interrupts = <137 0>;
max-value = <0xFFFF>;
prescaler = <0>;
status = "disabled";
girqs = <23 1>;
pcrs = <1 31>;
};
/*
* NOTE 1: timers 2 and 3 not implemented in MEC152x.
* NOTE 2: When RTOS timer used as kernel timer, timer4 used
* to provide high speed busy wait counter. Keep disabled to
* prevent counter driver from claiming it.
*/
timer4: timer@40000c80 {
compatible = "microchip,xec-timer";
clock-frequency = <48000000>;
reg = <0x40000c80 0x20>;
interrupts = <140 0>;
max-value = <0xFFFFFFFF>;
prescaler = <0>;
girqs = <23 4>;
pcrs = <3 23>;
status = "disabled";
};
timer5: timer@40000ca0 {
compatible = "microchip,xec-timer";
clock-frequency = <48000000>;
reg = <0x40000ca0 0x20>;
interrupts = <141 0>;
max-value = <0xFFFFFFFF>;
prescaler = <0>;
girqs = <23 5>;
pcrs = <3 24>;
};
hibtimer0: timer@40009800 {
reg = <0x40009800 0x20>;
interrupts = <112 0>;
girqs = <23 16>;
};
hibtimer1: timer@40009820 {
reg = <0x40009820 0x20>;
interrupts = <113 0>;
girqs = <23 17>;
};
ps2_0: ps2@40009000 {
compatible = "microchip,xec-ps2";
reg = <0x40009000 0x40>;
interrupts = <100 1>;
girqs = <18 10>;
pcrs = <3 5>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
ps2_1: ps2@40009040 {
compatible = "microchip,xec-ps2";
reg = <0x40009040 0x40>;
interrupts = <101 1>;
girqs = <18 11>;
pcrs = <3 6>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
pwm0: pwm@40005800 {
compatible = "microchip,xec-pwm";
reg = <0x40005800 0x20>;
pcrs = <1 4>;
status = "disabled";
#pwm-cells = <3>;
};
pwm1: pwm@40005810 {
compatible = "microchip,xec-pwm";
reg = <0x40005810 0x20>;
pcrs = <1 20>;
status = "disabled";
#pwm-cells = <3>;
};
pwm2: pwm@40005820 {
compatible = "microchip,xec-pwm";
reg = <0x40005820 0x20>;
pcrs = <1 21>;
status = "disabled";
#pwm-cells = <3>;
};
pwm3: pwm@40005830 {
compatible = "microchip,xec-pwm";
reg = <0x40005830 0x20>;
pcrs = <1 22>;
status = "disabled";
#pwm-cells = <3>;
};
pwm4: pwm@40005840 {
compatible = "microchip,xec-pwm";
reg = <0x40005840 0x20>;
pcrs = <1 23>;
status = "disabled";
#pwm-cells = <3>;
};
pwm5: pwm@40005850 {
compatible = "microchip,xec-pwm";
reg = <0x40005850 0x20>;
pcrs = <1 24>;
status = "disabled";
#pwm-cells = <3>;
};
pwm6: pwm@40005860 {
compatible = "microchip,xec-pwm";
reg = <0x40005860 0x20>;
pcrs = <1 25>;
status = "disabled";
#pwm-cells = <3>;
};
pwm7: pwm@40005870 {
compatible = "microchip,xec-pwm";
reg = <0x40005870 0x20>;
pcrs = <1 26>;
status = "disabled";
#pwm-cells = <3>;
};
pwm8: pwm@40005880 {
compatible = "microchip,xec-pwm";
reg = <0x40005880 0x20>;
pcrs = <1 27>;
status = "disabled";
#pwm-cells = <3>;
};
adc0: adc@40007c00 {
compatible = "microchip,xec-adc";
reg = <0x40007c00 0x90>;
interrupts = <78 0>, <79 0>;
girqs = <17 8>, <17 9>;
pcrs = <3 3>;
status = "disabled";
#io-channel-cells = <1>;
clktime = <32>;
};
kscan0: kscan@40009c00 {
compatible = "microchip,xec-kscan";
reg = <0x40009c00 0x18>;
interrupts = <135 0>;
girqs = <21 25>;
pcrs = <3 11>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
peci0: peci@40006400 {
compatible = "microchip,xec-peci";
reg = <0x40006400 0x80>;
interrupts = <70 4>;
girqs = <17 0>;
pcrs = <1 1>;
#address-cells = <1>;
#size-cells = <0>;
};
spi0: spi@40070000 {
compatible = "microchip,xec-qmspi";
reg = <0x40070000 0x400>;
interrupts = <91 2>;
clock-frequency = <12000000>;
rxdma = <11>;
txdma = <10>;
lines = <1>;
chip_select = <0>;
dcsckon = <6>;
dckcsoff = <4>;
dldh = <6>;
dcsda = <6>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
tach0: tach@40006000 {
compatible = "microchip,xec-tach";
reg = <0x40006000 0x10>;
interrupts = <71 4>;
girqs = <17 1>;
pcrs = <1 2>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
tach1: tach@40006010 {
compatible = "microchip,xec-tach";
reg = <0x40006010 0x10>;
interrupts = <72 4>;
girqs = <17 2>;
pcrs = <1 11>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
tach2: tach@40006020 {
compatible = "microchip,xec-tach";
reg = <0x40006020 0x10>;
interrupts = <73 4>;
girqs = <17 3>;
pcrs = <1 12>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
tach3: tach@40006030 {
compatible = "microchip,xec-tach";
reg = <0x40006030 0x10>;
interrupts = <159 4>;
girqs = <17 4>;
pcrs = <1 13>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
bbled0: bbled@4000b800 {
reg = <0x4000b800 0x100>;
interrupts = <83 0>;
girqs = <17 13>;
pcrs = <3 16>;
status = "disabled";
};
bbled1: bbled@4000b900 {
reg = <0x4000b900 0x100>;
interrupts = <84 0>;
girqs = <17 14>;
pcrs = <3 17>;
status = "disabled";
};
bbled2: bbled@4000ba00 {
reg = <0x4000ba00 0x100>;
interrupts = <85 0>;
girqs = <17 15>;
pcrs = <3 18>;
status = "disabled";
};
};
};
&nvic {
arm,num-irq-priority-bits = <3>;
};
&systick {
status = "disabled";
};