// SPDX-License-Identifier: GPL-2.0 /* * Device Tree for the ST-Ericsson U300 Machine and SoC */ /dts-v1/; /include/ "skeleton.dtsi" / { model = "ST-Ericsson U300"; compatible = "stericsson,u300"; #address-cells = <1>; #size-cells = <1>; chosen { bootargs = "root=/dev/ram0 console=ttyAMA0,115200n8 earlyprintk"; }; aliases { serial0 = &uart0; serial1 = &uart1; }; memory { reg = <0x48000000 0x03c00000>; }; s365 { compatible = "stericsson,s365"; vana15-supply = <&ab3100_ldo_d_reg>; syscon = <&syscon>; }; syscon: syscon@c0011000 { compatible = "stericsson,u300-syscon", "syscon"; reg = <0xc0011000 0x1000>; clk32: app_32_clk@32k { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <32768>; }; pll13: pll13@13M { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <13000000>; }; /* Slow bridge clocks under PLL13 */ slow_clk: slow_clk@13M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <0>; /* Slow */ clock-id = <0>; clocks = <&pll13>; }; uart0_clk: uart0_clk@13M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <0>; /* Slow */ clock-id = <1>; clocks = <&slow_clk>; }; gpio_clk: gpio_clk@13M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <0>; /* Slow */ clock-id = <4>; clocks = <&slow_clk>; }; rtc_clk: rtc_clk@13M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <0>; /* Slow */ clock-id = <6>; clocks = <&slow_clk>; }; apptimer_clk: app_tmr_clk@13M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <0>; /* Slow */ clock-id = <7>; clocks = <&slow_clk>; }; acc_tmr_clk@13M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <0>; /* Slow */ clock-id = <8>; clocks = <&slow_clk>; }; pll208: pll208@208M { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <208000000>; }; app208: app_208_clk@208M { #clock-cells = <0>; compatible = "fixed-factor-clock"; clock-div = <1>; clock-mult = <1>; clocks = <&pll208>; }; cpu_clk@208M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <2>; /* Rest */ clock-id = <3>; clocks = <&app208>; }; app104: app_104_clk@104M { #clock-cells = <0>; compatible = "fixed-factor-clock"; clock-div = <2>; clock-mult = <1>; clocks = <&pll208>; }; semi_clk@104M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <2>; /* Rest */ clock-id = <9>; clocks = <&app104>; }; app52: app_52_clk@52M { #clock-cells = <0>; compatible = "fixed-factor-clock"; clock-div = <4>; clock-mult = <1>; clocks = <&pll208>; }; /* AHB subsystem clocks */ ahb_clk: ahb_subsys_clk@52M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <2>; /* Rest */ clock-id = <10>; clocks = <&app52>; }; intcon_clk@52M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <2>; /* Rest */ clock-id = <12>; clocks = <&ahb_clk>; }; emif_clk@52M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <2>; /* Rest */ clock-id = <5>; clocks = <&ahb_clk>; }; dmac_clk: dmac_clk@52M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <2>; /* Rest */ clock-id = <4>; clocks = <&app52>; }; fsmc_clk: fsmc_clk@52M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <2>; /* Rest */ clock-id = <6>; clocks = <&app52>; }; xgam_clk: xgam_clk@52M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <2>; /* Rest */ clock-id = <8>; clocks = <&app52>; }; app26: app_26_clk@26M { #clock-cells = <0>; compatible = "fixed-factor-clock"; clock-div = <2>; clock-mult = <1>; clocks = <&app52>; }; /* Fast bridge clocks */ fast_clk: fast_clk@26M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <1>; /* Fast */ clock-id = <0>; clocks = <&app26>; }; i2c0_clk: i2c0_clk@26M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <1>; /* Fast */ clock-id = <1>; clocks = <&fast_clk>; }; i2c1_clk: i2c1_clk@26M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <1>; /* Fast */ clock-id = <2>; clocks = <&fast_clk>; }; mmc_pclk: mmc_p_clk@26M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <1>; /* Fast */ clock-id = <5>; clocks = <&fast_clk>; }; mmc_mclk: mmc_mclk { #clock-cells = <0>; compatible = "stericsson,u300-syscon-mclk"; clocks = <&mmc_pclk>; }; spi_clk: spi_p_clk@26M { #clock-cells = <0>; compatible = "stericsson,u300-syscon-clk"; clock-type = <1>; /* Fast */ clock-id = <6>; clocks = <&fast_clk>; }; }; timer: timer@c0014000 { compatible = "stericsson,u300-apptimer"; reg = <0xc0014000 0x1000>; interrupt-parent = <&vica>; interrupts = <24 25 26 27>; clocks = <&apptimer_clk>; }; gpio: gpio@c0016000 { compatible = "stericsson,gpio-coh901"; reg = <0xc0016000 0x1000>; interrupt-parent = <&vicb>; interrupts = <0 1 2 18 21 22 23>; clocks = <&gpio_clk>; interrupt-names = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6"; interrupt-controller; #interrupt-cells = <2>; gpio-controller; #gpio-cells = <2>; }; pinctrl: pinctrl@c0011000 { compatible = "stericsson,pinctrl-u300"; reg = <0xc0011000 0x1000>; }; watchdog: watchdog@c0012000 { compatible = "stericsson,coh901327"; reg = <0xc0012000 0x1000>; interrupt-parent = <&vicb>; interrupts = <3>; clocks = <&clk32>; }; rtc: rtc@c0017000 { compatible = "stericsson,coh901331"; reg = <0xc0017000 0x1000>; interrupt-parent = <&vicb>; interrupts = <10>; clocks = <&rtc_clk>; }; dmac: dma-controller@c00020000 { compatible = "stericsson,coh901318"; reg = <0xc0020000 0x1000>; interrupt-parent = <&vica>; interrupts = <2>; #dma-cells = <1>; dma-channels = <40>; clocks = <&dmac_clk>; }; /* A NAND flash of 128 MiB */ fsmc: flash@40000000 { compatible = "stericsson,fsmc-nand"; #address-cells = <1>; #size-cells = <1>; reg = <0x9f800000 0x1000>, /* FSMC Register*/ <0x80000000 0x4000>, /* NAND Base DATA */ <0x80020000 0x4000>, /* NAND Base ADDR */ <0x80010000 0x4000>; /* NAND Base CMD */ reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd"; nand-skip-bbtscan; clocks = <&fsmc_clk>; partition@0 { label = "boot records"; reg = <0x0 0x20000>; }; partition@20000 { label = "free"; reg = <0x20000 0x7e0000>; }; partition@800000 { label = "platform"; reg = <0x800000 0xf800000>; }; }; i2c0: i2c@c0004000 { compatible = "st,ddci2c"; reg = <0xc0004000 0x1000>; interrupt-parent = <&vicb>; interrupts = <8>; clocks = <&i2c0_clk>; #address-cells = <1>; #size-cells = <0>; ab3100: ab3100@48 { compatible = "stericsson,ab3100"; reg = <0x48>; interrupt-parent = <&vica>; interrupts = <0>; /* EXT0 IRQ */ ab3100-regulators { compatible = "stericsson,ab3100-regulators"; ab3100_ldo_a_reg: ab3100_ldo_a { startup-delay-us = <200>; regulator-always-on; regulator-boot-on; }; ab3100_ldo_c_reg: ab3100_ldo_c { startup-delay-us = <200>; }; ab3100_ldo_d_reg: ab3100_ldo_d { startup-delay-us = <200>; }; ab3100_ldo_e_reg: ab3100_ldo_e { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; startup-delay-us = <200>; regulator-always-on; regulator-boot-on; }; ab3100_ldo_f_reg: ab3100_ldo_f { regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; startup-delay-us = <600>; regulator-always-on; regulator-boot-on; }; ab3100_ldo_g_reg: ab3100_ldo_g { regulator-min-microvolt = <1500000>; regulator-max-microvolt = <2850000>; startup-delay-us = <400>; }; ab3100_ldo_h_reg: ab3100_ldo_h { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <2750000>; startup-delay-us = <200>; }; ab3100_ldo_k_reg: ab3100_ldo_k { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <2750000>; startup-delay-us = <200>; }; ab3100_ext_reg: ab3100_ext { }; ab3100_buck_reg: ab3100_buck { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1800000>; startup-delay-us = <1000>; regulator-always-on; regulator-boot-on; }; }; }; }; i2c1: i2c@c0005000 { compatible = "st,ddci2c"; reg = <0xc0005000 0x1000>; interrupt-parent = <&vicb>; interrupts = <9>; clocks = <&i2c1_clk>; #address-cells = <1>; #size-cells = <0>; fwcam0: fwcam@10 { reg = <0x10>; }; fwcam1: fwcam@5d { reg = <0x5d>; }; }; amba { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges; vica: interrupt-controller@a0001000 { compatible = "arm,versatile-vic"; interrupt-controller; #interrupt-cells = <1>; reg = <0xa0001000 0x20>; }; vicb: interrupt-controller@a0002000 { compatible = "arm,versatile-vic"; interrupt-controller; #interrupt-cells = <1>; reg = <0xa0002000 0x20>; }; uart0: serial@c0013000 { compatible = "arm,pl011", "arm,primecell"; reg = <0xc0013000 0x1000>; interrupt-parent = <&vica>; interrupts = <22>; clocks = <&uart0_clk>, <&uart0_clk>; clock-names = "apb_pclk", "uart0_clk"; dmas = <&dmac 17 &dmac 18>; dma-names = "tx", "rx"; }; uart1: serial@c0007000 { compatible = "arm,pl011", "arm,primecell"; reg = <0xc0007000 0x1000>; interrupt-parent = <&vicb>; interrupts = <20>; dmas = <&dmac 38 &dmac 39>; dma-names = "tx", "rx"; }; mmcsd: mmcsd@c0001000 { compatible = "arm,pl18x", "arm,primecell"; reg = <0xc0001000 0x1000>; interrupt-parent = <&vicb>; interrupts = <6 7>; clocks = <&mmc_pclk>, <&mmc_mclk>; clock-names = "apb_pclk", "mclk"; max-frequency = <24000000>; bus-width = <4>; // SD-card slot cap-mmc-highspeed; cap-sd-highspeed; cd-gpios = <&gpio 12 0x4>; cd-inverted; vmmc-supply = <&ab3100_ldo_g_reg>; dmas = <&dmac 14>; dma-names = "rx"; }; spi: spi@c0006000 { compatible = "arm,pl022", "arm,primecell"; reg = <0xc0006000 0x1000>; interrupt-parent = <&vica>; interrupts = <23>; clocks = <&spi_clk>, <&spi_clk>; clock-names = "SSPCLK", "apb_pclk"; dmas = <&dmac 27 &dmac 28>; dma-names = "tx", "rx"; num-cs = <3>; #address-cells = <1>; #size-cells = <0>; spi-dummy@1 { compatible = "arm,pl022-dummy"; reg = <1>; spi-max-frequency = <20000000>; }; }; }; };