162306a36Sopenharmony_ci// SPDX-License-Identifier: ISC 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Device Tree file for D-Link DSM-G600 revision A based on IXP420 462306a36Sopenharmony_ci * NOTE: revision B of this device uses PowerPC and is NOT supported by 562306a36Sopenharmony_ci * this device tree. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Inspired by the boardfile by Rod Whitby, Tower Technologies, Alessandro Zummo 862306a36Sopenharmony_ci * and Michael Westerhof. 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/dts-v1/; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include "intel-ixp42x.dtsi" 1462306a36Sopenharmony_ci#include <dt-bindings/input/input.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci/ { 1762306a36Sopenharmony_ci model = "D-Link DSM-G600 rev A"; 1862306a36Sopenharmony_ci compatible = "dlink,dsm-g600-a", "intel,ixp42x"; 1962306a36Sopenharmony_ci #address-cells = <1>; 2062306a36Sopenharmony_ci #size-cells = <1>; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci memory@0 { 2362306a36Sopenharmony_ci /* 64 MB SDRAM */ 2462306a36Sopenharmony_ci device_type = "memory"; 2562306a36Sopenharmony_ci reg = <0x00000000 0x4000000>; 2662306a36Sopenharmony_ci }; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci chosen { 2962306a36Sopenharmony_ci bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootwait"; 3062306a36Sopenharmony_ci stdout-path = "uart0:115200n8"; 3162306a36Sopenharmony_ci }; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci aliases { 3462306a36Sopenharmony_ci serial0 = &uart0; 3562306a36Sopenharmony_ci }; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci leds { 3862306a36Sopenharmony_ci compatible = "gpio-leds"; 3962306a36Sopenharmony_ci led-power { 4062306a36Sopenharmony_ci label = "dsmg600:green:power"; 4162306a36Sopenharmony_ci gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>; 4262306a36Sopenharmony_ci default-state = "on"; 4362306a36Sopenharmony_ci linux,default-trigger = "heartbeat"; 4462306a36Sopenharmony_ci }; 4562306a36Sopenharmony_ci led-wlan { 4662306a36Sopenharmony_ci label = "dsmg600:green:wlan"; 4762306a36Sopenharmony_ci /* CHECKME: flagged as active low in the old board file */ 4862306a36Sopenharmony_ci gpios = <&gpio0 14 GPIO_ACTIVE_LOW>; 4962306a36Sopenharmony_ci default-state = "on"; 5062306a36Sopenharmony_ci /* We don't have WLAN trigger in the kernel (yet) */ 5162306a36Sopenharmony_ci linux,default-trigger = "netdev"; 5262306a36Sopenharmony_ci }; 5362306a36Sopenharmony_ci }; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci gpio_keys { 5662306a36Sopenharmony_ci compatible = "gpio-keys"; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci button-reset { 5962306a36Sopenharmony_ci wakeup-source; 6062306a36Sopenharmony_ci linux,code = <KEY_ESC>; 6162306a36Sopenharmony_ci label = "reset"; 6262306a36Sopenharmony_ci gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; 6362306a36Sopenharmony_ci }; 6462306a36Sopenharmony_ci }; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci gpio_keys_polled { 6762306a36Sopenharmony_ci compatible = "gpio-keys-polled"; 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci /* 7062306a36Sopenharmony_ci * According to the board file this key cannot handle interrupts and 7162306a36Sopenharmony_ci * need to be polled. Investigate if this is really the case or if 7262306a36Sopenharmony_ci * this can be moved adjacent to the ordinary gpio-keys above. 7362306a36Sopenharmony_ci */ 7462306a36Sopenharmony_ci button-power { 7562306a36Sopenharmony_ci wakeup-source; 7662306a36Sopenharmony_ci linux,code = <KEY_POWER>; 7762306a36Sopenharmony_ci label = "power"; 7862306a36Sopenharmony_ci gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; 7962306a36Sopenharmony_ci }; 8062306a36Sopenharmony_ci }; 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci i2c { 8362306a36Sopenharmony_ci compatible = "i2c-gpio"; 8462306a36Sopenharmony_ci sda-gpios = <&gpio0 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 8562306a36Sopenharmony_ci scl-gpios = <&gpio0 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 8662306a36Sopenharmony_ci #address-cells = <1>; 8762306a36Sopenharmony_ci #size-cells = <0>; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci rtc@51 { 9062306a36Sopenharmony_ci compatible = "nxp,pcf8563"; 9162306a36Sopenharmony_ci reg = <0x51>; 9262306a36Sopenharmony_ci }; 9362306a36Sopenharmony_ci }; 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci gpio-poweroff { 9662306a36Sopenharmony_ci compatible = "gpio-poweroff"; 9762306a36Sopenharmony_ci gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>; 9862306a36Sopenharmony_ci timeout-ms = <5000>; 9962306a36Sopenharmony_ci }; 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci soc { 10262306a36Sopenharmony_ci bus@c4000000 { 10362306a36Sopenharmony_ci /* The first 16MB region at CS0 on the expansion bus */ 10462306a36Sopenharmony_ci flash@0,0 { 10562306a36Sopenharmony_ci compatible = "intel,ixp4xx-flash", "cfi-flash"; 10662306a36Sopenharmony_ci bank-width = <2>; 10762306a36Sopenharmony_ci /* 10862306a36Sopenharmony_ci * 16 MB of Flash in 128 0x20000 sized blocks 10962306a36Sopenharmony_ci * mapped in at CS0. 11062306a36Sopenharmony_ci */ 11162306a36Sopenharmony_ci reg = <0 0x00000000 0x1000000>; 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci partitions { 11462306a36Sopenharmony_ci compatible = "redboot-fis"; 11562306a36Sopenharmony_ci /* 11662306a36Sopenharmony_ci * A boot log says the directory is at 0xfe0000 11762306a36Sopenharmony_ci * 0x7f * 0x20000 = 0xfe0000 11862306a36Sopenharmony_ci */ 11962306a36Sopenharmony_ci fis-index-block = <0x7f>; 12062306a36Sopenharmony_ci }; 12162306a36Sopenharmony_ci }; 12262306a36Sopenharmony_ci }; 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci pci@c0000000 { 12562306a36Sopenharmony_ci status = "okay"; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci /* 12862306a36Sopenharmony_ci * Taken from DSM-G600 PCI boardfile (dsmg600-pci.c) 12962306a36Sopenharmony_ci * We have slots (IDSEL) 1, 2, 3, 4 and pins 1, 2 and 3. 13062306a36Sopenharmony_ci * Only slot 3 have three IRQs. 13162306a36Sopenharmony_ci */ 13262306a36Sopenharmony_ci #interrupt-cells = <1>; 13362306a36Sopenharmony_ci interrupt-map-mask = <0xf800 0 0 7>; 13462306a36Sopenharmony_ci interrupt-map = 13562306a36Sopenharmony_ci /* IDSEL 1 */ 13662306a36Sopenharmony_ci <0x0800 0 0 1 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT E on slot 1 is irq 7 */ 13762306a36Sopenharmony_ci /* IDSEL 2 */ 13862306a36Sopenharmony_ci <0x1000 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 11 */ 13962306a36Sopenharmony_ci /* IDSEL 3 */ 14062306a36Sopenharmony_ci <0x1800 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 10 */ 14162306a36Sopenharmony_ci <0x1800 0 0 2 &gpio0 9 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 9 */ 14262306a36Sopenharmony_ci <0x1800 0 0 3 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 3 is irq 8 */ 14362306a36Sopenharmony_ci /* IDSEL 4 */ 14462306a36Sopenharmony_ci <0x2000 0 0 3 &gpio0 6 IRQ_TYPE_LEVEL_LOW>; /* INT F on slot 4 is irq 6 */ 14562306a36Sopenharmony_ci }; 14662306a36Sopenharmony_ci }; 14762306a36Sopenharmony_ci}; 148