// SPDX-License-Identifier: ISC
/*
 * Device Tree file for the Arcom/Eurotech Vulcan board.
 * This board is a single board computer in the PC/104 form factor based on
 * IXP425, and was released around 2005. It previously had the name "Mercury".
 */

/dts-v1/;

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

/ {
	model = "Arcom/Eurotech Vulcan";
	compatible = "arcom,vulcan", "intel,ixp42x";
	#address-cells = <1>;
	#size-cells = <1>;

	memory@0 {
		device_type = "memory";
		reg = <0x00000000 0x4000000>;
	};

	chosen {
		/* CHECKME: using a harddrive at /dev/sda1 as rootfs by default */
		bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootfstype=ext4 rootwait";
		stdout-path = "uart0:115200n8";
	};

	aliases {
		serial0 = &uart0;
	};

	onewire {
		compatible = "w1-gpio";
		gpios = <&gpio0 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
	};

	soc {
		bus@c4000000 {
			flash@0,0 {
				compatible = "intel,ixp4xx-flash", "cfi-flash";
				bank-width = <2>;
				/*
				 * 32 MB of Flash in 0x20000 byte blocks
				 * mapped in at CS0 and CS1.
				 *
				 * The documentation mentions the existence
				 * of a 16MB version, which we conveniently
				 * ignore. Shout if you own one!
				 */
				reg = <0 0x00000000 0x2000000>;

				/* Expansion bus settings */
				intel,ixp4xx-eb-t3 = <3>;
				intel,ixp4xx-eb-byte-access-on-halfword = <1>;
				intel,ixp4xx-eb-write-enable = <1>;

				partitions {
					compatible = "redboot-fis";
					fis-index-block = <0x1ff>;
				};
			};
			sram@2,0 {
				/* 256 KB SDRAM memory at CS2 */
				compatible = "shared-dma-pool";
				device_type = "memory";
				reg = <2 0x00000000 0x40000>;
				no-map;
				/* Expansion bus settings */
				intel,ixp4xx-eb-t3 = <1>;
				intel,ixp4xx-eb-t4 = <2>;
				intel,ixp4xx-eb-ahb-split-transfers = <1>;
				intel,ixp4xx-eb-write-enable = <1>;
				intel,ixp4xx-eb-byte-access = <1>;
			};
			serial@3,0 {
				/*
				 * 8250-compatible Exar XR16L2551 2 x UART
				 *
				 * CHECKME: if special tweaks are needed, then fix the
				 * operating system to handle it.
				 */
				compatible = "exar,xr16l2551", "ns8250";
				reg = <3 0x00000000 0x10>;
				interrupt-parent = <&gpio0>;
				interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
				clock-frequency = <1843200>;
				/* Expansion bus settings */
				intel,ixp4xx-eb-t3 = <3>;
				intel,ixp4xx-eb-cycle-type = <1>; /* Motorola cycles */
				intel,ixp4xx-eb-write-enable = <1>;
				intel,ixp4xx-eb-byte-access = <1>;
			};
			gpio1: gpio@4,0 {
				/*
				 * MMIO GPIO in one byte
				 */
				compatible = "arcom,vulcan-gpio";
				reg = <4 0x00000000 0x1>;
				/* Expansion bus settings */
				intel,ixp4xx-eb-write-enable = <1>;
				intel,ixp4xx-eb-byte-access = <1>;
			};
			watchdog@5,0 {
				compatible = "maxim,max6369";
				reg = <5 0x00000000 0x1>;
				/* Expansion bus settings */
				intel,ixp4xx-eb-write-enable = <1>;
				intel,ixp4xx-eb-byte-access = <1>;
			};
		};

		pci@c0000000 {
			status = "ok";

			/*
			 * Taken from Vulcan PCI boardfile.
			 *
			 * We have 2 slots (IDSEL) 1 and 2 with one dedicated interrupt
			 * per slot. This interrupt is shared (OR:ed) by all four pins.
			 */
			#interrupt-cells = <1>;
			interrupt-map-mask = <0xf800 0 0 7>;
			interrupt-map =
			/* IDSEL 1 */
			<0x0800 0 0 1 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 2 */
			<0x0800 0 0 2 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 1 is irq 2 */
			<0x0800 0 0 3 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 2 */
			<0x0800 0 0 4 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 2 */
			/* IDSEL 2 */
			<0x1000 0 0 1 &gpio0 3 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 3 */
			<0x1000 0 0 2 &gpio0 3 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 3 */
			<0x1000 0 0 3 &gpio0 3 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 3 */
			<0x1000 0 0 4 &gpio0 3 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 2 is irq 3 */
		};

		/* EthB */
		ethernet@c8009000 {
			status = "ok";
			queue-rx = <&qmgr 3>;
			queue-txready = <&qmgr 20>;
			phy-mode = "rgmii";
			phy-handle = <&phy0>;

			mdio {
				#address-cells = <1>;
				#size-cells = <0>;

				phy0: ethernet-phy@0 {
					reg = <0>;
				};

				phy1: ethernet-phy@1 {
					reg = <1>;
				};
			};
		};

		/* EthC */
		ethernet@c800a000 {
			status = "ok";
			queue-rx = <&qmgr 4>;
			queue-txready = <&qmgr 21>;
			phy-mode = "rgmii";
			phy-handle = <&phy1>;
		};
	};
};
