blob: 648bd0a05a147da193b1143dedc100d1f1a33bef [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Copyright (C) 2018 Synaptics Incorporated
*
* Author: Jisheng Zhang <jszhang@kernel.org>
*/
#include <dt-bindings/clock/as370.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
/ {
compatible = "syna,as370";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
psci {
compatible = "arm,psci-0.2";
method = "smc";
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
compatible = "arm,cortex-a53", "arm,armv8";
device_type = "cpu";
reg = <0x0>;
enable-method = "psci";
next-level-cache = <&l2>;
cpu-idle-states = <&CPU_SLEEP_0>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&cpupll 0>;
};
cpu1: cpu@1 {
compatible = "arm,cortex-a53", "arm,armv8";
device_type = "cpu";
reg = <0x1>;
enable-method = "psci";
next-level-cache = <&l2>;
cpu-idle-states = <&CPU_SLEEP_0>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&cpupll 0>;
};
cpu2: cpu@2 {
compatible = "arm,cortex-a53", "arm,armv8";
device_type = "cpu";
reg = <0x2>;
enable-method = "psci";
next-level-cache = <&l2>;
cpu-idle-states = <&CPU_SLEEP_0>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&cpupll 0>;
};
cpu3: cpu@3 {
compatible = "arm,cortex-a53", "arm,armv8";
device_type = "cpu";
reg = <0x3>;
enable-method = "psci";
next-level-cache = <&l2>;
cpu-idle-states = <&CPU_SLEEP_0>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&cpupll 0>;
};
l2: l2-cache0 {
compatible = "cache";
};
idle-states {
entry-method = "psci";
CPU_SLEEP_0: cpu-sleep-0 {
compatible = "arm,idle-state";
local-timer-stop;
arm,psci-suspend-param = <0x0010000>;
entry-latency-us = <75>;
exit-latency-us = <155>;
min-residency-us = <50000>;
};
};
cpu_opp_table: opp_table0 {
compatible = "operating-points-v2";
opp-shared;
opp@400000000 {
opp-hz = /bits/ 64 <400000000>;
opp-microvolt = <825000 825000 900000>;
clock-latency-ns = <17500000>;
};
opp@800000000 {
opp-hz = /bits/ 64 <800000000>;
opp-microvolt = <825000 825000 900000>;
clock-latency-ns = <17500000>;
};
opp@1200000000 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <825000 825000 900000>;
clock-latency-ns = <17500000>;
};
opp@1400000000 {
opp-hz = /bits/ 64 <1400000000>;
opp-microvolt = <825000 825000 900000>;
clock-latency-ns = <17500000>;
};
opp@1500000000 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <900000 900000 900000>;
clock-latency-ns = <17500000>;
};
opp@1800000000 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <900000 900000 900000>;
clock-latency-ns = <17500000>;
};
};
};
chosen {
bootargs = "console=ttyS0,115200";
};
osc: osc {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <25000000>;
};
pmu {
compatible = "arm,cortex-a53-pmu";
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
interrupt-affinity = <&cpu0>,
<&cpu1>,
<&cpu2>,
<&cpu3>;
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
};
soc {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0 0xf7000000 0x1000000
0xe0000000 0 0xe0000000 0x10000000>;
apll0: apll0 {
compatible = "syna,as370-pll";
reg = <0x420008 0x18>, <0x420044 0x4>;
#clock-cells = <1>;
clocks = <&osc>;
bypass-shift = /bits/ 8 <2>;
};
apll1: apll1 {
compatible = "syna,as370-pll";
reg = <0x420028 0x18>, <0x420044 0x4>;
#clock-cells = <1>;
clocks = <&osc>;
bypass-shift = /bits/ 8 <3>;
};
axi_meter: axi_meter {
compatible = "syna,as370-axi-meter";
reg = <0x940000 0x200>;
status = "disabled";
};
aviodrv: aviodrv {
compatible = "marvell,berlin-avio";
reg = <0x400000 0x200000>;
status = "disabled";
};
avio@400000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x400000 0x100000>;
avio64b_dhub@40000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x0 0x20000>;
dhubctr_a: interrupt-controller@10000 {
compatible = "syna,as370-dhub-irq";
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x10000 0x418>;
interrupt-controller;
#interrupt-cells = <1>;
};
};
as370_outdai: as370-outdai {
compatible = "syna,as370-outdai";
status = "disabled";
interrupt-parent = <&dhubctr_a>;
reg = <0x40000 0x28>,
<0x4012C 0x4>,
<0x40138 0x4>,
<0x40044 0x10>,
<0x40164 0x4>,
<0x20000 0x5C>;
reg-names = "pri_base",
"pri_bclk",
"pri_fsync",
"spdif_base",
"pri_mclk",
"avioGbl_base";
interrupts = <0>, <0xE>;
interrupt-names = "pri", "spdifo";
};
as370_sec: as370-sec {
compatible = "syna,as370-sec";
status = "disabled";
interrupt-parent = <&dhubctr_a>;
reg = <0x40028 0x1C>,
<0x40130 0x4>,
<0x4013C 0x4>,
<0x4015C 0x4>,
<0x2005C 0x4>;
reg-names = "sec_base",
"sec_bclk",
"sec_fsync",
"sec_src",
"sec_oen";
interrupts = <0x7>;
};
as370_mic1_0: as370-mic1-0 {
compatible = "syna,as370-mic1";
status = "disabled";
interrupt-parent = <&dhubctr_a>;
reg = <0x40054 0x3C>,
<0x40134 0x4>,
<0x40140 0x4>,
<0x40160 0x4>;
reg-names = "mic1_base",
"mic1_bclk",
"mic1_fsync",
"pdmmic_sel";
interrupts = <0x4>;
};
as370_mic2: as370-mic2 {
compatible = "syna,as370-mic2";
status = "disabled";
interrupt-parent = <&dhubctr_a>;
reg = <0x40090 0x30>,
<0x40144 0x4>,
<0x40148 0x4>;
reg-names = "mic2_base",
"mic2_fsync",
"mic2_bclk";
interrupts = <0xC>;
};
as370_pdmi0: as370-pdmi-0 {
compatible = "syna,as370-pdmi";
status = "disabled";
interrupt-parent = <&dhubctr_a>;
reg = <0x400c0 0x30>,
<0x4014c 0x4>,
<0x40160 0x4>;
reg-names = "pdm_base",
"iosel_pdm",
"pdmmic_sel";
interrupts = <0xA>, <0xB>, <0x6>, <0x9>;
};
as370_pdmi1: as370-pdmi-1 {
compatible = "syna,as370-pdmi";
status = "disabled";
interrupt-parent = <&dhubctr_a>;
reg = <0x400c0 0x30>,
<0x4014c 0x4>,
<0x40160 0x4>;
reg-names = "pdm_base",
"iosel_pdm",
"pdmmic_sel";
interrupts = <0xB>;
};
as370_pcm: as370-pcm {
compatible = "syna,as370-pcm";
status = "disabled";
interrupt-parent = <&dhubctr_a>;
};
as370_asoc: as370-asoc {
compatible = "syna,as370-asoc";
status = "disabled";
interrupt-parent = <&dhubctr_a>;
};
};
gic: interrupt-controller@901000 {
compatible = "arm,gic-400";
#interrupt-cells = <3>;
interrupt-controller;
reg = <0x901000 0x1000>,
<0x902000 0x2000>,
<0x904000 0x2000>,
<0x906000 0x2000>;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
};
cpupll: cpupll {
compatible = "syna,as370-pll";
reg = <0x922000 0x18>, <0xea0518 0x4>;
#clock-cells = <1>;
clocks = <&osc>;
bypass-shift = /bits/ 8 <2>;
};
mempll: mempll {
compatible = "syna,as370-pll";
reg = <0x940004 0x18>, <0xea0518 0x4>;
#clock-cells = <1>;
clocks = <&osc>;
bypass-shift = /bits/ 8 <1>;
};
sdhci2: sdhci@aa0000 {
compatible = "snps,dwcmshc-sdhci";
reg = <0xaa0000 0x1000>;
interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk CLK_EMMC>, <&gateclk CLK_EMMCSYS>;
clock-names = "core", "bus";
resets = <&chip 0x49c 11 0 0>;
bus-width = <8>;
non-removable;
no-sd;
no-sdio;
status = "disabled";
};
sdhci0: sdhci@ab0000 {
compatible = "snps,dwcmshc-sdhci";
reg = <0xab0000 0x200>;
interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk CLK_SD0>, <&gateclk CLK_SDIOSYS>;
clock-names = "core", "bus";
resets = <&chip 0x49c 4 0 0>;
bus-width = <4>;
status = "disabled";
};
pcie0: pcie@e10000 {
compatible = "syna,as370-pcie";
reg = <0xe10000 0x8000>, <0xe1a000 0x58>, <0xe0000000 0x00800000>;
reg-names = "dbi", "ctrl", "config";
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gateclk CLK_PCIE0SYS>;
resets = <&chip 0x508 0 1 0>;
#address-cells = <3>;
#size-cells = <2>;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
num-lanes = <1>;
device_type = "pci";
ranges = <0x81000000 0 0 0xe0800000 0 0x00800000
0x82000000 0 0xe1000000 0xe1000000 0 0x07000000>;
phys = <&pcie_phy0>;
phy-names = "pcie-phy";
status = "disabled";
};
pcie_phy0: phy@e20000 {
compatible = "syna,as370-pcie-phy";
reg = <0xe20000 0x20000>;
resets = <&chip 0x508 5 1 0>;
#phy-cells = <0>;
status = "disabled";
};
pcie_phy1: phy@e40000 {
compatible = "syna,as370-pcie-phy";
reg = <0xe40000 0x20000>;
resets = <&chip 0x508 6 1 0>;
#phy-cells = <0>;
status = "disabled";
};
pcie1: pcie@e60000 {
compatible = "syna,as370-pcie";
reg = <0xe60000 0x8000>, <0xe6a000 0x58>, <0xe8000000 0x00800000>;
reg-names = "dbi", "ctrl", "config";
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gateclk CLK_PCIE1SYS>;
resets = <&chip 0x508 1 1 0>;
#address-cells = <3>;
#size-cells = <2>;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
num-lanes = <1>;
device_type = "pci";
ranges = <0x81000000 0 0 0xe8800000 0 0x00800000
0x82000000 0 0xe9000000 0xe9000000 0 0x07000000>;
phys = <&pcie_phy1>;
phy-names = "pcie-phy";
status = "disabled";
};
apb@e80000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0xe80000 0x10000>;
watchdog0: watchdog@0400 {
compatible = "snps,dw-wdt";
reg = <0x0400 0x100>;
clocks = <&osc>;
status = "disabled";
};
i2c1: i2c@0800 {
compatible = "snps,designware-i2c";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x0800 0x100>;
clocks = <&clk CLK_APBCORE>;
i2c-sda-hold-time-ns = <449>;
i2c-sda-falling-time-ns = <425>;
i2c-scl-falling-time-ns = <205>;
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
uart0: uart@0c00 {
compatible = "snps,dw-apb-uart";
reg = <0x0c00 0x100>;
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&osc>;
reg-shift = <2>;
no-suspend-resume;
status = "disabled";
};
watchdog1: watchdog@1000 {
compatible = "snps,dw-wdt";
reg = <0x1000 0x100>;
clocks = <&osc>;
status = "disabled";
};
watchdog2: watchdog@1400 {
compatible = "snps,dw-wdt";
reg = <0x1400 0x100>;
clocks = <&osc>;
status = "disabled";
};
gpio0: gpio@1800 {
compatible = "snps,dw-apb-gpio";
dev_name = "gpio_soc_0";
reg = <0x1800 0x400>;
#address-cells = <1>;
#size-cells = <0>;
porta: gpio-port@0 {
compatible = "snps,dw-apb-gpio-port";
gpio-controller;
#gpio-cells = <2>;
snps,nr-gpios = <32>;
reg = <0>;
interrupt-controller;
#interrupt-cells = <2>;
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
};
};
timer0: timer@1c00 {
compatible = "snps,dw-apb-timer";
reg = <0x1c00 0x14>;
clocks = <&clk CLK_APBCORE>;
clock-names = "timer";
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
};
timer1: timer@1c14 {
compatible = "snps,dw-apb-timer";
reg = <0x1c14 0x14>;
clocks = <&clk CLK_APBCORE>;
clock-names = "timer";
status = "disabled";
};
timer2: timer@1c28 {
compatible = "snps,dw-apb-timer";
reg = <0x1c28 0x14>;
clocks = <&clk CLK_APBCORE>;
clock-names = "timer";
status = "disabled";
};
timer3: timer@1c3c {
compatible = "snps,dw-apb-timer";
reg = <0x1c3c 0x14>;
clocks = <&clk CLK_APBCORE>;
clock-names = "timer";
status = "disabled";
};
gpio1: gpio@2000 {
compatible = "snps,dw-apb-gpio";
dev_name = "gpio_soc_1";
reg = <0x2000 0x400>;
#address-cells = <1>;
#size-cells = <0>;
portb: gpio-port@1 {
compatible = "snps,dw-apb-gpio-port";
gpio-controller;
#gpio-cells = <2>;
snps,nr-gpios = <32>;
reg = <0>;
interrupt-controller;
#interrupt-cells = <2>;
interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
};
};
i2c0: i2c@2800 {
compatible = "snps,designware-i2c";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x2800 0x100>;
clocks = <&clk CLK_APBCORE>;
i2c-sda-hold-time-ns = <449>;
i2c-sda-falling-time-ns = <425>;
i2c-scl-falling-time-ns = <205>;
interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
uart1: uart@2c00 {
compatible = "snps,dw-apb-uart";
reg = <0x2c00 0x100>;
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk CLK_APBCORE>;
reg-shift = <2>;
status = "disabled";
};
spi1: spi@3000 {
compatible = "snps,dw-apb-ssi";
reg = <0x3000 0x100>;
num-cs = <4>;
clocks = <&clk CLK_APBCORE>;
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};
chipid@ea0000 {
compatible = "marvell,berlin-chipid";
reg = <0xea0000 12>;
};
chip: chip-control@ea0000 {
compatible = "marvell,berlin4ct-chip-ctrl";
reg = <0xea0000 0x10000>;
#reset-cells = <4>;
};
syspll: syspll {
compatible = "syna,as370-pll";
reg = <0xea0088 0x18>, <0xea0518 0x4>;
#clock-cells = <1>;
clocks = <&osc>;
bypass-shift = /bits/ 8 <0>;
};
gateclk: gateclk {
compatible = "syna,as370-gateclk";
reg = <0xea0514 0x4>;
#clock-cells = <1>;
};
clk: clk {
compatible = "syna,as370-clk";
reg = <0xea051c 0x5c>;
#clock-cells = <1>;
clocks = <&syspll 0>, <&apll0 1>, <&apll1 1>, <&mempll 1>, <&cpupll 1>, <&syspll 1>;
};
adc: adc {
compatible = "syna,as370-adc";
reg = <0xea0800 0x10>;
interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
#io-channel-cells = <1>;
status = "disabled";
};
hwmon@ea0810 {
compatible = "syna,as370-hwmon";
reg = <0xea0810 0xc>;
};
pinctrl: pinctrl@ea0840 {
compatible = "syna,as370-soc-pinctrl";
reg = <0xea0840 0x20>;
};
usb0: usb@ed0000 {
compatible = "syna,berlin-usb";
reg = <0xed0000 0x8000>;
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gateclk CLK_USB0CORE>;
clock-names = "otg";
phys = <&usb_phy0>;
phy-names = "usb2-phy";
resets = <&chip 0x508 2 1 0>, <&chip 0x508 3 1 0>;
reset-names = "dwc2", "dwc2-ecc";
dr_mode = "otg";
g-rx-fifo-size = <512>;
g-np-tx-fifo-size = <64>;
g-tx-fifo-size = <256 256 256 256 256 128 64 64
64 64 64 64 64 64 64>;
status = "disabled";
};
usb_phy0: phy@ed8000 {
compatible = "syna,as370-usb2-phy";
reg = <0xed8000 0x100>;
#phy-cells = <0>;
resets = <&chip 0x508 4 1 1>;
reset-names = "phy";
status = "disabled";
};
nand0: nand@f10000 {
compatible = "cdns,hpnfc-dt";
reg = <0xf10000 0x10000>, <0xf00000 0x10000>;
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk CLK_NFCCORE>, <&clk CLK_NFCECC>, <&gateclk CLK_NFCSYS>;
clock-names = "core", "ecc", "sys";
resets = <&chip 0x49c 2 0 0>, <&chip 0x49c 3 0 0>;
reset-names = "host", "reg";
status = "disabled";
};
pwm0: pwm@f20000 {
compatible = "marvell,berlin-pwm";
reg = <0xf20000 0x40>;
clocks = <&clk CLK_CFG>;
#pwm-cells = <3>;
status = "disabled";
};
nna: nna@f30000 {
compatible = "vivante,galcore";
reg = <0xf30000 0x10000>;
resets = <&chip 0x504 0 1 0>;
interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk CLK_NNASYS>, <&clk CLK_NNACORE>;
clock-names = "sys", "core";
status = "disabled";
};
pwm1: pwm@f40000 {
compatible = "marvell,berlin-pwm";
reg = <0xf40000 0x40>;
clocks = <&clk CLK_CFG>;
#pwm-cells = <3>;
status = "disabled";
};
};
};