// SPDX-License-Identifier: GPL-2.0
/*
 * Check Point L-50 Board Description
 * Copyright 2020 Pawel Dembicki <paweldembicki@gmail.com>
 */

/dts-v1/;

#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"

/ {
	model = "Check Point L-50";
	compatible = "checkpoint,l-50", "marvell,kirkwood-88f6281", "marvell,kirkwood";

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

	chosen {
		bootargs = "console=ttyS0,115200n8";
		stdout-path = &uart0;
	};

	ocp@f1000000 {
		pinctrl: pin-controller@10000 {
			pinctrl-0 = <&pmx_led38 &pmx_sysrst &pmx_button29>;
			pinctrl-names = "default";

			pmx_sysrst: pmx-sysrst {
				marvell,pins = "mpp6";
				marvell,function = "sysrst";
			};

			pmx_button29: pmx_button29 {
				marvell,pins = "mpp29";
				marvell,function = "gpio";
			};

			pmx_led38: pmx_led38 {
				marvell,pins = "mpp38";
				marvell,function = "gpio";
			};

			pmx_sdio_cd: pmx-sdio-cd {
				marvell,pins = "mpp46";
				marvell,function = "gpio";
			};
		};

		serial@12000 {
			status = "okay";
		};

		mvsdio@90000 {
			status = "okay";
			cd-gpios = <&gpio1 14 9>;
		};

		i2c@11000 {
			status = "okay";
			clock-frequency = <400000>;

			gpio2: gpio-expander@20 {
				#gpio-cells = <2>;
				#interrupt-cells = <2>;
				interrupt-controller;
				compatible = "semtech,sx1505q";
				reg = <0x20>;

				gpio-controller;
			};

			/* Three GPIOs from 0x21 exp. are undescribed in dts:
			 * 1: DSL module reset (active low)
			 * 5: mPCIE reset (active low)
			 * 6: Express card reset (active low)
			 */
			gpio3: gpio-expander@21 {
				#gpio-cells = <2>;
				#interrupt-cells = <2>;
				interrupt-controller;
				compatible = "semtech,sx1505q";
				reg = <0x21>;

				gpio-controller;
			};

			rtc@30 {
				compatible = "s35390a";
				reg = <0x30>;
			};
		};
	};

	leds {
		compatible = "gpio-leds";

		led-status-green {
			label = "l-50:green:status";
			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
		};

		led-status-red {
			label = "l-50:red:status";
			gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
		};

		led-wifi {
			label = "l-50:green:wifi";
			gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "phy0tpt";
		};

		led-internet-green {
			label = "l-50:green:internet";
			gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
		};

		led-internet-red {
			label = "l-50:red:internet";
			gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
		};

		led-usb1-green {
			label = "l-50:green:usb1";
			gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "usbport";
			trigger-sources = <&hub_port3>;
		};

		led-usb1-red {
			label = "l-50:red:usb1";
			gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
		};

		led-usb2-green {
			label = "l-50:green:usb2";
			gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "usbport";
			trigger-sources = <&hub_port1>;
		};

		led-usb2-red {
			label = "l-50:red:usb2";
			gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
		};
	};

	usb2_pwr {
		compatible = "regulator-fixed";
		regulator-name = "usb2_pwr";

		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio3 3 GPIO_ACTIVE_LOW>;
		regulator-always-on;
	};

	usb1_pwr {
		compatible = "regulator-fixed";
		regulator-name = "usb1_pwr";

		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio3 4 GPIO_ACTIVE_LOW>;
		regulator-always-on;
	};

	mpcie_pwr {
		compatible = "regulator-fixed";
		regulator-name = "mpcie_pwr";

		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 5 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	express_card_pwr {
		compatible = "regulator-fixed";
		regulator-name = "express_card_pwr";

		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 7 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	keys {
		compatible = "gpio-keys";

		button-factory-defaults {
			label = "factory_defaults";
			gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
		};
	};
};

&mdio {
	status = "okay";

	ethphy8: ethernet-phy@8 {
		reg = <0x08>;
	};

	switch0: switch@10 {
		compatible = "marvell,mv88e6085";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x10>;
		dsa,member = <0 0>;

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

			port@0 {
				reg = <0>;
				label = "lan5";
			};

			port@1 {
				reg = <1>;
				label = "lan1";
			};

			port@2 {
				reg = <2>;
				label = "lan6";
			};

			port@3 {
				reg = <3>;
				label = "lan2";
			};

			port@4 {
				reg = <4>;
				label = "lan7";
			};

			switch0port5: port@5 {
				reg = <5>;
				phy-mode = "rgmii-txid";
				link = <&switch1port5>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};

			port@6 {
				reg = <6>;
				phy-mode = "rgmii-id";
				ethernet = <&eth1port>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};
		};
	};

	switch@11 {
		compatible = "marvell,mv88e6085";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x11>;
		dsa,member = <0 1>;

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

			port@0 {
				reg = <0>;
				label = "lan3";
			};

			port@1 {
				reg = <1>;
				label = "lan8";
			};

			port@2 {
				reg = <2>;
				label = "lan4";
			};

			port@3 {
				reg = <3>;
				label = "dmz";
			};

			switch1port5: port@5 {
				reg = <5>;
				phy-mode = "rgmii-txid";
				link = <&switch0port5>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};

			port@6 {
				reg = <6>;
				label = "dsl";
				fixed-link {
					speed = <100>;
					full-duplex;
				};
			};
		};
	};
};

&eth0 {
	status = "okay";
	ethernet0-port@0 {
		phy-handle = <&ethphy8>;
	};
};

&eth1 {
	status = "okay";
	ethernet1-port@0 {
		speed = <1000>;
		duplex = <1>;
		phy-mode = "rgmii";
	};
};

&nand {
	status = "okay";
	pinctrl-0 = <&pmx_nand>;
	pinctrl-names = "default";

	partition@0 {
		label = "u-boot";
		reg = <0x00000000 0x000c0000>;
	};

	partition@a0000 {
		label = "bootldr-env";
		reg = <0x000c0000 0x00040000>;
	};

	partition@100000 {
		label = "kernel-1";
		reg = <0x00100000 0x00800000>;
	};

	partition@900000 {
		label = "rootfs-1";
		reg = <0x00900000 0x07100000>;
	};

	partition@7a00000 {
		label = "kernel-2";
		reg = <0x07a00000 0x00800000>;
	};

	partition@8200000 {
		label = "rootfs-2";
		reg = <0x08200000 0x07100000>;
	};

	partition@f300000 {
		label = "default_sw";
		reg = <0x0f300000 0x07900000>;
	};

	partition@16c00000 {
		label = "logs";
		reg = <0x16c00000 0x01800000>;
	};

	partition@18400000 {
		label = "preset_cfg";
		reg = <0x18400000 0x00100000>;
	};

	partition@18500000 {
		label = "adsl";
		reg = <0x18500000 0x00100000>;
	};

	partition@18600000 {
		label = "storage";
		reg = <0x18600000 0x07a00000>;
	};
};

&rtc {
	status = "disabled";
};

&pciec {
	status = "okay";
};

&pcie0 {
	status = "okay";
};

&sata_phy0 {
	status = "disabled";
};

&sata_phy1 {
	status = "disabled";
};

&usb0 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	port@1 {
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <1>;
		#trigger-source-cells = <0>;

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

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