// SPDX-License-Identifier: ISC /* * Device Tree file for Gateworks IXP43x-based Cambria GW2358 */ /dts-v1/; #include "intel-ixp43x.dtsi" / { model = "Gateworks Cambria GW2358"; compatible = "gateworks,gw2358", "intel,ixp43x"; #address-cells = <1>; #size-cells = <1>; memory@0 { /* 128 MB SDRAM */ device_type = "memory"; reg = <0x00000000 0x8000000>; }; chosen { bootargs = "console=ttyS0,115200n8 root=/dev/mtdblock2 rw rootfstype=squashfs,jffs2 rootwait"; stdout-path = "uart0:115200n8"; }; aliases { serial0 = &uart0; }; leds { compatible = "gpio-leds"; led-user { label = "gw2358:green:LED"; gpios = <&pld1 0 GPIO_ACTIVE_LOW>; default-state = "on"; linux,default-trigger = "heartbeat"; }; }; i2c { compatible = "i2c-gpio"; sda-gpios = <&gpio0 7 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; scl-gpios = <&gpio0 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; #address-cells = <1>; #size-cells = <0>; hwmon@28 { compatible = "adi,ad7418"; reg = <0x28>; }; rtc: ds1672@68 { compatible = "dallas,ds1672"; reg = <0x68>; }; eeprom@51 { compatible = "atmel,24c08"; reg = <0x51>; pagesize = <16>; size = <1024>; read-only; }; pld0: pld@56 { compatible = "gateworks,pld-gpio"; reg = <0x56>; gpio-controller; #gpio-cells = <2>; }; /* This PLD just handles the LED and user button */ pld1: pld@57 { compatible = "gateworks,pld-gpio"; reg = <0x57>; gpio-controller; #gpio-cells = <2>; }; }; soc { bus@50000000 { flash@0 { compatible = "intel,ixp4xx-flash", "cfi-flash"; bank-width = <2>; /* * 32 MB of Flash in 0x20000 byte blocks * mapped in at CS0. */ reg = <0x00000000 0x2000000>; partitions { compatible = "redboot-fis"; /* Eraseblock at 0x1fe0000 */ fis-index-block = <0xff>; }; }; }; pci@c0000000 { status = "ok"; /* * In the boardfile for the Cambria from OpenWRT the interrupts * are assigned one per IDSEL, so all 4 interrupts from IDSEL * 1 are connected to IRQ 11, all 4 interrupts from IDSEL 2 * connected to IRQ 10 etc. I find this highly unlikely so I * have instead assumed that they are rotated (swizzled) like * this with 11, 10, 9, 8 for the 4 pins on IDSEL 1 etc. */ interrupt-map = /* IDSEL 1 */ <0x0800 0 0 1 &gpio0 11 3>, /* INT A on slot 1 is irq 11 */ <0x0800 0 0 2 &gpio0 10 3>, /* INT B on slot 1 is irq 10 */ <0x0800 0 0 3 &gpio0 9 3>, /* INT C on slot 1 is irq 9 */ <0x0800 0 0 4 &gpio0 8 3>, /* INT D on slot 1 is irq 8 */ /* IDSEL 2 */ <0x1000 0 0 1 &gpio0 10 3>, /* INT A on slot 2 is irq 10 */ <0x1000 0 0 2 &gpio0 9 3>, /* INT B on slot 2 is irq 9 */ <0x1000 0 0 3 &gpio0 8 3>, /* INT C on slot 2 is irq 8 */ <0x1000 0 0 4 &gpio0 11 3>, /* INT D on slot 2 is irq 11 */ /* IDSEL 3 */ <0x1800 0 0 1 &gpio0 9 3>, /* INT A on slot 3 is irq 9 */ <0x1800 0 0 2 &gpio0 8 3>, /* INT B on slot 3 is irq 8 */ <0x1800 0 0 3 &gpio0 11 3>, /* INT C on slot 3 is irq 11 */ <0x1800 0 0 4 &gpio0 10 3>, /* INT D on slot 3 is irq 10 */ /* IDSEL 4 */ <0x2000 0 0 1 &gpio0 8 3>, /* INT A on slot 3 is irq 8 */ <0x2000 0 0 2 &gpio0 11 3>, /* INT B on slot 3 is irq 11 */ <0x2000 0 0 3 &gpio0 10 3>, /* INT C on slot 3 is irq 10 */ <0x2000 0 0 4 &gpio0 9 3>, /* INT D on slot 3 is irq 9 */ /* IDSEL 6 */ <0x3000 0 0 1 &gpio0 10 3>, /* INT A on slot 3 is irq 10 */ <0x3000 0 0 2 &gpio0 9 3>, /* INT B on slot 3 is irq 9 */ <0x3000 0 0 3 &gpio0 8 3>, /* INT C on slot 3 is irq 8 */ <0x3000 0 0 4 &gpio0 11 3>, /* INT D on slot 3 is irq 11 */ /* IDSEL 15 */ <0x7800 0 0 1 &gpio0 8 3>, /* INT A on slot 3 is irq 8 */ <0x7800 0 0 2 &gpio0 11 3>, /* INT B on slot 3 is irq 11 */ <0x7800 0 0 3 &gpio0 10 3>, /* INT C on slot 3 is irq 10 */ <0x7800 0 0 4 &gpio0 9 3>; /* INT D on slot 3 is irq 9 */ }; ethernet@c800a000 { status = "ok"; queue-rx = <&qmgr 4>; queue-txready = <&qmgr 21>; phy-mode = "rgmii"; phy-handle = <&phy1>; mdio { #address-cells = <1>; #size-cells = <0>; phy1: ethernet-phy@1 { reg = <1>; }; phy2: ethernet-phy@2 { reg = <2>; }; }; }; ethernet@c800c000 { status = "ok"; queue-rx = <&qmgr 2>; queue-txready = <&qmgr 19>; phy-mode = "rgmii"; phy-handle = <&phy2>; intel,npe-handle = <&npe 0>; }; }; };