// SPDX-License-Identifier: ISC
/*
 * Device Tree file for D-Link DSM-G600 revision A based on IXP420
 * NOTE: revision B of this device uses PowerPC and is NOT supported by
 * this device tree.
 *
 * Inspired by the boardfile by Rod Whitby, Tower Technologies, Alessandro Zummo
 * and Michael Westerhof.
 */

/dts-v1/;

#include "intel-ixp42x.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "D-Link DSM-G600 rev A";
	compatible = "dlink,dsm-g600-a", "intel,ixp42x";
	#address-cells = <1>;
	#size-cells = <1>;

	memory@0 {
		/* 64 MB SDRAM */
		device_type = "memory";
		reg = <0x00000000 0x4000000>;
	};

	chosen {
		bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootwait";
		stdout-path = "uart0:115200n8";
	};

	aliases {
		serial0 = &uart0;
	};

	leds {
		compatible = "gpio-leds";
		led-power {
			label = "dsmg600:green:power";
			gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
			default-state = "on";
			linux,default-trigger = "heartbeat";
		};
		led-wlan {
			label = "dsmg600:green:wlan";
			/* CHECKME: flagged as active low in the old board file */
			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
			default-state = "on";
			/* We don't have WLAN trigger in the kernel (yet) */
			linux,default-trigger = "netdev";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

		button-reset {
			wakeup-source;
			linux,code = <KEY_RESTART>;
			label = "reset";
			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
		};
	};

	gpio_keys_polled {
		compatible = "gpio-keys-polled";

		/*
		 * According to the board file this key cannot handle interrupts and
		 * need to be polled. Investigate if this is really the case or if
		 * this can be moved adjacent to the ordinary gpio-keys above.
		 */
		button-power {
			wakeup-source;
			linux,code = <KEY_POWER>;
			label = "power";
			gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
		};
	};

	i2c {
		compatible = "i2c-gpio";
		sda-gpios = <&gpio0 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpio0 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		#address-cells = <1>;
		#size-cells = <0>;

		rtc@51 {
			compatible = "nxp,pcf8563";
			reg = <0x51>;
		};
	};

	gpio-poweroff {
		compatible = "gpio-poweroff";
		gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
		timeout-ms = <5000>;
	};

	soc {
		bus@c4000000 {
			/* The first 16MB region at CS0 on the expansion bus */
			flash@0,0 {
				compatible = "intel,ixp4xx-flash", "cfi-flash";
				bank-width = <2>;
				/*
				 * 16 MB of Flash in 128 0x20000 sized blocks
				 * mapped in at CS0.
				 */
				reg = <0 0x00000000 0x1000000>;

				partitions {
					compatible = "redboot-fis";
					/*
					 * A boot log says the directory is at 0xfe0000
					 * 0x7f * 0x20000 = 0xfe0000
					 */
					fis-index-block = <0x7f>;
				};
			};
		};

		pci@c0000000 {
			status = "okay";

			/*
			 * Taken from DSM-G600 PCI boardfile (dsmg600-pci.c)
			 * We have slots (IDSEL) 1, 2, 3, 4 and pins 1, 2 and 3.
			 * Only slot 3 have three IRQs.
			 */
			#interrupt-cells = <1>;
			interrupt-map-mask = <0xf800 0 0 7>;
			interrupt-map =
			/* IDSEL 1 */
			<0x0800 0 0 1 &gpio0 7  IRQ_TYPE_LEVEL_LOW>, /* INT E on slot 1 is irq 7 */
			/* IDSEL 2 */
			<0x1000 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 11 */
			/* IDSEL 3 */
			<0x1800 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 10 */
			<0x1800 0 0 2 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 9 */
			<0x1800 0 0 3 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 3 is irq 8 */
			/* IDSEL 4 */
			<0x2000 0 0 3 &gpio0 6  IRQ_TYPE_LEVEL_LOW>; /* INT F on slot 4 is irq 6 */
		};
	};
};
