#include "rt2880.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "belkin,f5d8235-v1", "ralink,rt2880-soc";
	model = "Belkin F5D8235 v1";

	aliases {
		led-boot = &led_wired_blue;
		led-failsafe = &led_wired_blue;
	};

	flash@1f000000 {
		compatible = "cfi-flash";
		reg = <0xbc400000 0x800000>;
		bank-width = <2>;
		device-width = <2>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "uboot";
				reg = <0x0 0x30000>;
				read-only;
			};

			partition@30000 {
				label = "uboot-env";
				reg = <0x30000 0x10000>;
				read-only;
			};

			partition@40000 {
				label = "factory";
				reg = <0x40000 0x10000>;
				read-only;

				nvmem-layout {
					compatible = "fixed-layout";
					#address-cells = <1>;
					#size-cells = <1>;

					eeprom_factory_0: eeprom@0 {
						reg = <0x0 0x200>;
					};

					macaddr_factory_4: macaddr@4 {
						reg = <0x4 0x6>;
					};
				};
			};

			partition@50000 {
				compatible = "denx,uimage";
				label = "firmware";
				reg = <0x50000 0x7b0000>;
			};
		};
	};

	rtl8366s {
		compatible = "realtek,rtl8366s";
		gpio-sda = <&gpio0 1 GPIO_ACTIVE_HIGH>;
		gpio-sck = <&gpio0 2 GPIO_ACTIVE_HIGH>;

		realtek,initvals = <
			0x0242 0x02BF
			0x0245 0x02BF
			0x0248 0x02BF
			0x024B 0x02BF
			0x024E 0x02BF
			0x0251 0x02BF
			0x0254 0x0A3F
			0x0256 0x0A3F
			0x0258 0x0A3F
			0x025A 0x0A3F
			0x025C 0x0A3F
			0x025E 0x0A3F
			0x0263 0x007C
			0x0100 0x0004
			0xBE5B 0x3500
			0x800E 0x200F
			0xBE1D 0x0F00
			0x8001 0x5011
			0x800A 0xA2F4
			0x800B 0x17A3
			0xBE4B 0x17A3
			0xBE41 0x5011
			0xBE17 0x2100
			0x8000 0x8304
			0xBE40 0x8304
			0xBE4A 0xA2F4
			0x800C 0xA8D5
			0x8014 0x5500
			0x8015 0x0004
			0xBE4C 0xA8D5
			0xBE59 0x0008
			0xBE09 0x0E00
			0xBE36 0x1036
			0xBE37 0x1036
			0x800D 0x00FF
			0xBE4D 0x00FF
		>;

		realtek,green-ethernet-features;
	};

	keys {
		compatible = "gpio-keys";

		wps {
			label = "wps";
			gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_WPS_BUTTON>;
		};

		reset {
			label = "reset";
			gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
		};
	};

	leds {
		compatible = "gpio-leds";

		internet {
			label = "blue:internet";
			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
		};

		internet2 {
			label = "amber:internet";
			gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
		};

		modem {
			label = "blue:modem";
			gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
		};

		modem2 {
			label = "amber:modem";
			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
		};

		router {
			label = "blue:router";
			gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
		};

		storage {
			label = "blue:storage";
			gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
			trigger-sources = <&ohci_port1>, <&ehci_port1>;
			linux,default-trigger = "usbport";
		};

		storage2 {
			label = "amber:storage";
			gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
		};

		security {
			label = "blue:security";
			gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
		};

		security2 {
			label = "amber:security";
			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
		};

		led_wired_blue: wired {
			label = "blue:wired";
			gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
		};

		wired2 {
			label = "amber:wired";
			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
		};

		wireless {
			label = "blue:wireless";
			gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
		};

		wireless2 {
			label = "amber:wireless";
			gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
		};
	};
};

&state_default {
	gpio {
		groups = "spi", "i2c", "jtag", "mdio", "uartlite";
		function = "gpio";
	};
};

&ethernet {
	status = "okay";
	nvmem-cells = <&macaddr_factory_4>;
	nvmem-cell-names = "mac-address";

	port@0 {
		mediatek,fixed-link = <1000 1 1 1>;
	};
};

&pci {
	status = "okay";

	usb@11,0 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "pci1033,0035";
		reg = <0x8800 0 0 0 0>;

		ohci_port1: port@1 {
			reg = <1>;
			#trigger-source-cells = <0>;
		};
	};

	usb@11,1 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "pci1033,00e0";
		reg = <0x8900 0 0 0 0>;

		ehci_port1: port@1 {
			reg = <1>;
			#trigger-source-cells = <0>;
		};
	};
};

&wmac {
	nvmem-cells = <&eeprom_factory_0>;
	nvmem-cell-names = "eeprom";
};
