// SPDX-License-Identifier: GPL-2.0 /* * Device Tree file for Cirrus Logic systems EP93XX SoC */ #include #include #include #include / { 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 = , , , , , , , , , , , , , , , ; }; 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"; }; };