445 lines
10 KiB
Plaintext
445 lines
10 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Device Tree file for Cirrus Logic systems EP93XX SoC
|
|
*/
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/leds/common.h>
|
|
#include <dt-bindings/input/input.h>
|
|
#include <dt-bindings/clock/cirrus,ep9301-syscon.h>
|
|
/ {
|
|
soc: soc {
|
|
compatible = "simple-bus";
|
|
ranges;
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
syscon: syscon@80930000 {
|
|
compatible = "cirrus,ep9301-syscon", "syscon";
|
|
reg = <0x80930000 0x1000>;
|
|
|
|
#clock-cells = <1>;
|
|
clocks = <&xtali>;
|
|
|
|
spi_default_pins: pins-spi {
|
|
function = "spi";
|
|
groups = "ssp";
|
|
};
|
|
|
|
ac97_default_pins: pins-ac97 {
|
|
function = "ac97";
|
|
groups = "ac97";
|
|
};
|
|
|
|
i2s_on_ssp_pins: pins-i2sonssp {
|
|
function = "i2s";
|
|
groups = "i2s_on_ssp";
|
|
};
|
|
|
|
i2s_on_ac97_pins: pins-i2sonac97 {
|
|
function = "i2s";
|
|
groups = "i2s_on_ac97";
|
|
};
|
|
|
|
gpio1_default_pins: pins-gpio1 {
|
|
function = "gpio";
|
|
groups = "gpio1agrp";
|
|
};
|
|
|
|
pwm1_default_pins: pins-pwm1 {
|
|
function = "pwm";
|
|
groups = "pwm1";
|
|
};
|
|
|
|
gpio2_default_pins: pins-gpio2 {
|
|
function = "gpio";
|
|
groups = "gpio2agrp";
|
|
};
|
|
|
|
gpio3_default_pins: pins-gpio3 {
|
|
function = "gpio";
|
|
groups = "gpio3agrp";
|
|
};
|
|
|
|
keypad_default_pins: pins-keypad {
|
|
function = "keypad";
|
|
groups = "keypadgrp";
|
|
};
|
|
|
|
gpio4_default_pins: pins-gpio4 {
|
|
function = "gpio";
|
|
groups = "gpio4agrp";
|
|
};
|
|
|
|
gpio6_default_pins: pins-gpio6 {
|
|
function = "gpio";
|
|
groups = "gpio6agrp";
|
|
};
|
|
|
|
gpio7_default_pins: pins-gpio7 {
|
|
function = "gpio";
|
|
groups = "gpio7agrp";
|
|
};
|
|
|
|
ide_default_pins: pins-ide {
|
|
function = "pata";
|
|
groups = "idegrp";
|
|
};
|
|
|
|
lcd_on_dram0_pins: pins-rasteronsdram0 {
|
|
function = "lcd";
|
|
groups = "rasteronsdram0grp";
|
|
};
|
|
|
|
lcd_on_dram3_pins: pins-rasteronsdram3 {
|
|
function = "lcd";
|
|
groups = "rasteronsdram3grp";
|
|
};
|
|
};
|
|
|
|
adc: adc@80900000 {
|
|
compatible = "cirrus,ep9301-adc";
|
|
reg = <0x80900000 0x28>;
|
|
clocks = <&syscon EP93XX_CLK_ADC>;
|
|
interrupt-parent = <&vic0>;
|
|
interrupts = <30>;
|
|
status = "disabled";
|
|
};
|
|
|
|
/*
|
|
* The EP93XX expansion bus is a set of up to 7 each up to 16MB
|
|
* windows in the 256MB space from 0x50000000 to 0x5fffffff.
|
|
* But since we don't require to setup it in any way, we can
|
|
* represent it as a simple-bus.
|
|
*/
|
|
ebi: bus@80080000 {
|
|
compatible = "simple-bus";
|
|
reg = <0x80080000 0x20>;
|
|
native-endian;
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges;
|
|
};
|
|
|
|
dma0: dma-controller@80000000 {
|
|
compatible = "cirrus,ep9301-dma-m2p";
|
|
reg = <0x80000000 0x0040>,
|
|
<0x80000040 0x0040>,
|
|
<0x80000080 0x0040>,
|
|
<0x800000c0 0x0040>,
|
|
<0x80000240 0x0040>,
|
|
<0x80000200 0x0040>,
|
|
<0x800002c0 0x0040>,
|
|
<0x80000280 0x0040>,
|
|
<0x80000340 0x0040>,
|
|
<0x80000300 0x0040>;
|
|
clocks = <&syscon EP93XX_CLK_M2P0>,
|
|
<&syscon EP93XX_CLK_M2P1>,
|
|
<&syscon EP93XX_CLK_M2P2>,
|
|
<&syscon EP93XX_CLK_M2P3>,
|
|
<&syscon EP93XX_CLK_M2P4>,
|
|
<&syscon EP93XX_CLK_M2P5>,
|
|
<&syscon EP93XX_CLK_M2P6>,
|
|
<&syscon EP93XX_CLK_M2P7>,
|
|
<&syscon EP93XX_CLK_M2P8>,
|
|
<&syscon EP93XX_CLK_M2P9>;
|
|
clock-names = "m2p0", "m2p1",
|
|
"m2p2", "m2p3",
|
|
"m2p4", "m2p5",
|
|
"m2p6", "m2p7",
|
|
"m2p8", "m2p9";
|
|
interrupt-parent = <&vic0>;
|
|
interrupts = <7>, <8>, <9>, <10>, <11>,
|
|
<12>, <13>, <14>, <15>, <16>;
|
|
#dma-cells = <2>;
|
|
};
|
|
|
|
dma1: dma-controller@80000100 {
|
|
compatible = "cirrus,ep9301-dma-m2m";
|
|
reg = <0x80000100 0x0040>,
|
|
<0x80000140 0x0040>;
|
|
clocks = <&syscon EP93XX_CLK_M2M0>,
|
|
<&syscon EP93XX_CLK_M2M1>;
|
|
clock-names = "m2m0", "m2m1";
|
|
interrupt-parent = <&vic0>;
|
|
interrupts = <17>, <18>;
|
|
#dma-cells = <2>;
|
|
};
|
|
|
|
eth0: ethernet@80010000 {
|
|
compatible = "cirrus,ep9301-eth";
|
|
reg = <0x80010000 0x10000>;
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <7>;
|
|
mdio0: mdio {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
};
|
|
};
|
|
|
|
gpio0: gpio@80840000 {
|
|
compatible = "cirrus,ep9301-gpio";
|
|
reg = <0x80840000 0x04>,
|
|
<0x80840010 0x04>,
|
|
<0x80840090 0x1c>;
|
|
reg-names = "data", "dir", "intr";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <27>;
|
|
};
|
|
|
|
gpio1: gpio@80840004 {
|
|
compatible = "cirrus,ep9301-gpio";
|
|
reg = <0x80840004 0x04>,
|
|
<0x80840014 0x04>,
|
|
<0x808400ac 0x1c>;
|
|
reg-names = "data", "dir", "intr";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <27>;
|
|
};
|
|
|
|
gpio2: gpio@80840008 {
|
|
compatible = "cirrus,ep9301-gpio";
|
|
reg = <0x80840008 0x04>,
|
|
<0x80840018 0x04>;
|
|
reg-names = "data", "dir";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio2_default_pins>;
|
|
};
|
|
|
|
gpio3: gpio@8084000c {
|
|
compatible = "cirrus,ep9301-gpio";
|
|
reg = <0x8084000c 0x04>,
|
|
<0x8084001c 0x04>;
|
|
reg-names = "data", "dir";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio3_default_pins>;
|
|
};
|
|
|
|
gpio4: gpio@80840020 {
|
|
compatible = "cirrus,ep9301-gpio";
|
|
reg = <0x80840020 0x04>,
|
|
<0x80840024 0x04>;
|
|
reg-names = "data", "dir";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio4_default_pins>;
|
|
};
|
|
|
|
gpio5: gpio@80840030 {
|
|
compatible = "cirrus,ep9301-gpio";
|
|
reg = <0x80840030 0x04>,
|
|
<0x80840034 0x04>,
|
|
<0x8084004c 0x1c>;
|
|
reg-names = "data", "dir", "intr";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
interrupts-extended = <&vic0 19>, <&vic0 20>,
|
|
<&vic0 21>, <&vic0 22>,
|
|
<&vic1 15>, <&vic1 16>,
|
|
<&vic1 17>, <&vic1 18>;
|
|
};
|
|
|
|
gpio6: gpio@80840038 {
|
|
compatible = "cirrus,ep9301-gpio";
|
|
reg = <0x80840038 0x04>,
|
|
<0x8084003c 0x04>;
|
|
reg-names = "data", "dir";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio6_default_pins>;
|
|
};
|
|
|
|
gpio7: gpio@80840040 {
|
|
compatible = "cirrus,ep9301-gpio";
|
|
reg = <0x80840040 0x04>,
|
|
<0x80840044 0x04>;
|
|
reg-names = "data", "dir";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio7_default_pins>;
|
|
};
|
|
|
|
i2s: i2s@80820000 {
|
|
compatible = "cirrus,ep9301-i2s";
|
|
reg = <0x80820000 0x100>;
|
|
#sound-dai-cells = <0>;
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <28>;
|
|
clocks = <&syscon EP93XX_CLK_I2S_MCLK>,
|
|
<&syscon EP93XX_CLK_I2S_SCLK>,
|
|
<&syscon EP93XX_CLK_I2S_LRCLK>;
|
|
clock-names = "mclk", "sclk", "lrclk";
|
|
dmas = <&dma0 0 1>, <&dma0 0 2>;
|
|
dma-names = "tx", "rx";
|
|
status = "disabled";
|
|
};
|
|
|
|
ide: ide@800a0000 {
|
|
compatible = "cirrus,ep9312-pata";
|
|
reg = <0x800a0000 0x38>;
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <8>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&ide_default_pins>;
|
|
status = "disabled";
|
|
};
|
|
|
|
vic0: interrupt-controller@800b0000 {
|
|
compatible = "arm,pl192-vic";
|
|
reg = <0x800b0000 0x1000>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <1>;
|
|
valid-mask = <0x7ffffffc>;
|
|
valid-wakeup-mask = <0x0>;
|
|
};
|
|
|
|
vic1: interrupt-controller@800c0000 {
|
|
compatible = "arm,pl192-vic";
|
|
reg = <0x800c0000 0x1000>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <1>;
|
|
valid-mask = <0x1fffffff>;
|
|
valid-wakeup-mask = <0x0>;
|
|
};
|
|
|
|
keypad: keypad@800f0000 {
|
|
compatible = "cirrus,ep9307-keypad";
|
|
reg = <0x800f0000 0x0c>;
|
|
interrupt-parent = <&vic0>;
|
|
interrupts = <29>;
|
|
clocks = <&syscon EP93XX_CLK_KEYPAD>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&keypad_default_pins>;
|
|
linux,keymap = <KEY_UP>,
|
|
<KEY_DOWN>,
|
|
<KEY_VOLUMEDOWN>,
|
|
<KEY_HOME>,
|
|
<KEY_RIGHT>,
|
|
<KEY_LEFT>,
|
|
<KEY_ENTER>,
|
|
<KEY_VOLUMEUP>,
|
|
<KEY_F6>,
|
|
<KEY_F8>,
|
|
<KEY_F9>,
|
|
<KEY_F10>,
|
|
<KEY_F1>,
|
|
<KEY_F2>,
|
|
<KEY_F3>,
|
|
<KEY_POWER>;
|
|
};
|
|
|
|
pwm0: pwm@80910000 {
|
|
compatible = "cirrus,ep9301-pwm";
|
|
reg = <0x80910000 0x10>;
|
|
clocks = <&syscon EP93XX_CLK_PWM>;
|
|
#pwm-cells = <3>;
|
|
status = "disabled";
|
|
};
|
|
|
|
pwm1: pwm@80910020 {
|
|
compatible = "cirrus,ep9301-pwm";
|
|
reg = <0x80910020 0x10>;
|
|
clocks = <&syscon EP93XX_CLK_PWM>;
|
|
#pwm-cells = <3>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pwm1_default_pins>;
|
|
status = "disabled";
|
|
};
|
|
|
|
rtc0: rtc@80920000 {
|
|
compatible = "cirrus,ep9301-rtc";
|
|
reg = <0x80920000 0x100>;
|
|
};
|
|
|
|
spi0: spi@808a0000 {
|
|
compatible = "cirrus,ep9301-spi";
|
|
reg = <0x808a0000 0x18>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <21>;
|
|
clocks = <&syscon EP93XX_CLK_SPI>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&spi_default_pins>;
|
|
status = "disabled";
|
|
};
|
|
|
|
timer: timer@80810000 {
|
|
compatible = "cirrus,ep9301-timer";
|
|
reg = <0x80810000 0x100>;
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <19>;
|
|
};
|
|
|
|
uart0: serial@808c0000 {
|
|
compatible = "arm,pl011", "arm,primecell";
|
|
reg = <0x808c0000 0x1000>;
|
|
arm,primecell-periphid = <0x00041010>;
|
|
clocks = <&syscon EP93XX_CLK_UART1>, <&syscon EP93XX_CLK_UART>;
|
|
clock-names = "uartclk", "apb_pclk";
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <20>;
|
|
status = "disabled";
|
|
};
|
|
|
|
uart1: uart@808d0000 {
|
|
compatible = "arm,primecell";
|
|
reg = <0x808d0000 0x1000>;
|
|
arm,primecell-periphid = <0x00041010>;
|
|
clocks = <&syscon EP93XX_CLK_UART2>, <&syscon EP93XX_CLK_UART>;
|
|
clock-names = "apb:uart2", "apb_pclk";
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <22>;
|
|
status = "disabled";
|
|
};
|
|
|
|
uart2: uart@808b0000 {
|
|
compatible = "arm,primecell";
|
|
reg = <0x808b0000 0x1000>;
|
|
arm,primecell-periphid = <0x00041010>;
|
|
clocks = <&syscon EP93XX_CLK_UART3>, <&syscon EP93XX_CLK_UART>;
|
|
clock-names = "apb:uart3", "apb_pclk";
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <23>;
|
|
status = "disabled";
|
|
};
|
|
|
|
usb0: usb@80020000 {
|
|
compatible = "generic-ohci";
|
|
reg = <0x80020000 0x10000>;
|
|
interrupt-parent = <&vic1>;
|
|
interrupts = <24>;
|
|
clocks = <&syscon EP93XX_CLK_USB>;
|
|
status = "disabled";
|
|
};
|
|
|
|
watchdog0: watchdog@80940000 {
|
|
compatible = "cirrus,ep9301-wdt";
|
|
reg = <0x80940000 0x08>;
|
|
};
|
|
};
|
|
|
|
xtali: oscillator {
|
|
compatible = "fixed-clock";
|
|
#clock-cells = <0>;
|
|
clock-frequency = <14745600>;
|
|
clock-output-names = "xtali";
|
|
};
|
|
};
|