// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Device Tree Bindings for Cisco Meraki MX64 series (Kingpin).
 *
 * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
 */

#include "bcm958625-meraki-mx6x-common.dtsi"

/ {

	keys {
		compatible = "gpio-keys-polled";
		autorepeat;
		poll-interval = <20>;

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

	leds {
		compatible = "gpio-leds";

		led-0 {
			/* green:lan1-left */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <0>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 19 GPIO_ACTIVE_LOW>;
		};

		led-1 {
			/* green:lan1-right */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <1>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 18 GPIO_ACTIVE_LOW>;
		};

		led-2 {
			/* green:lan2-left */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <2>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 24 GPIO_ACTIVE_LOW>;
		};

		led-3 {
			/* green:lan2-right */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <3>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 20 GPIO_ACTIVE_LOW>;
		};

		led-4 {
			/* green:lan3-left */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <4>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 26 GPIO_ACTIVE_LOW>;
		};

		led-5 {
			/* green:lan3-right */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <5>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 25 GPIO_ACTIVE_LOW>;
		};

		led-6 {
			/* green:lan4-left */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <6>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 28 GPIO_ACTIVE_LOW>;
		};

		led-7 {
			/* green:lan4-right */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <7>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 27 GPIO_ACTIVE_LOW>;
		};

		led-8 {
			/* green:wan-left */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <8>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 30 GPIO_ACTIVE_LOW>;
		};

		led-9 {
			/* green:wan-right */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <9>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 29 GPIO_ACTIVE_LOW>;
		};

		led-a {
			/* amber:power */
			function = LED_FUNCTION_POWER;
			color = <LED_COLOR_ID_AMBER>;
			gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
			default-state = "on";
		};

		led-b {
			/* white:status */
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_WHITE>;
			gpios = <&gpioa 31 GPIO_ACTIVE_HIGH>;
		};
	};
};

&srab {
	compatible = "brcm,bcm58625-srab", "brcm,nsp-srab";
	status = "okay";

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

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

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

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

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

		port@8 {
			ethernet = <&amac2>;
			reg = <8>;
			fixed-link {
				speed = <1000>;
				full-duplex;
			};
		};
	};
};
