// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright (C) 2021 MediaTek Inc.
 * Authors: Frank Wunderlich <frank-w@public-files.de>
 *          Eric Woudstra <ericwouds@gmail.com>
 *          Tianling Shen <cnsztl@immortalwrt.org>
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/mt65xx.h>

#include "mt7986a.dtsi"

/ {
	model = "Bananapi BPI-R3 Mini";
	chassis-type = "embedded";
	compatible = "bananapi,bpi-r3mini", "mediatek,mt7986a";

	aliases {
		serial0 = &uart0;
		ethernet0 = &gmac0;
		ethernet1 = &gmac1;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	dcin: regulator-12v {
		compatible = "regulator-fixed";
		regulator-name = "12vd";
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
		regulator-boot-on;
		regulator-always-on;
	};

	fan: pwm-fan {
		compatible = "pwm-fan";
		#cooling-cells = <2>;
		/*
		 * The signal is inverted on this board and the PWM driver
		 * does not support polarity inversion.
		 */
		/* cooling level (0, 1, 2) */
		cooling-levels = <255 96 0>;
		pwms = <&pwm 0 10000>;
	};

	reg_1p8v: regulator-1v8 {
		compatible = "regulator-fixed";
		regulator-name = "1.8vd";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-boot-on;
		regulator-always-on;
		vin-supply = <&dcin>;
	};

	reg_3p3v: regulator-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "3.3vd";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		regulator-always-on;
		vin-supply = <&dcin>;
	};

	usb_vbus: regulator-5v {
		compatible = "regulator-fixed";
		regulator-name = "usb_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpios = <&pio 20 GPIO_ACTIVE_LOW>;
		regulator-boot-on;
	};

	en8811_a: regulator-phy1 {
		compatible = "regulator-fixed";
		regulator-name = "phy1";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&pio 16 GPIO_ACTIVE_LOW>;
		regulator-always-on;
	};

	en8811_b: regulator-phy2 {
		compatible = "regulator-fixed";
		regulator-name = "phy2";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&pio 17 GPIO_ACTIVE_LOW>;
		regulator-always-on;
	};

	leds {
		compatible = "gpio-leds";

		green_led: led-0 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_POWER;
			gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};
	};

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

		reset-key {
			label = "reset";
			linux,code = <KEY_RESTART>;
			gpios = <&pio 7 GPIO_ACTIVE_LOW>;
		};
	};

};

&cpu_thermal {
	cooling-maps {
		map0 {
			/* active: set fan to cooling level 2 */
			cooling-device = <&fan 2 2>;
			trip = <&cpu_trip_active_high>;
		};

		map1 {
			/* active: set fan to cooling level 1 */
			cooling-device = <&fan 1 1>;
			trip = <&cpu_trip_active_med>;
		};

		map2 {
			/* active: set fan to cooling level 0 */
			cooling-device = <&fan 0 0>;
			trip = <&cpu_trip_active_low>;
		};
	};
};

&crypto {
	status = "okay";
};

&eth {
	status = "okay";

	gmac0: mac@0 {
		compatible = "mediatek,eth-mac";
		reg = <0>;
		phy-mode = "2500base-x";
		phy-handle = <&phy0>;
	};

	gmac1: mac@1 {
		compatible = "mediatek,eth-mac";
		reg = <1>;
		phy-mode = "2500base-x";
		phy-handle = <&phy1>;
	};

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

&mmc0 {
	pinctrl-names = "default", "state_uhs";
	pinctrl-0 = <&mmc0_pins_default>;
	pinctrl-1 = <&mmc0_pins_uhs>;
	vmmc-supply = <&reg_3p3v>;
	vqmmc-supply = <&reg_1p8v>;
};


&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c_pins>;
	status = "okay";

	/* MAC Address EEPROM */
	eeprom@50 {
		compatible = "atmel,24c02";
		reg = <0x50>;

		address-width = <8>;
		pagesize = <8>;
		size = <256>;
	};
};

&mdio {
	phy0: ethernet-phy@14 {
		reg = <14>;
		interrupts-extended = <&pio 48 IRQ_TYPE_EDGE_FALLING>;
		reset-gpios = <&pio 49 GPIO_ACTIVE_LOW>;
		reset-assert-us = <10000>;
		reset-deassert-us = <20000>;
		phy-mode = "2500base-x";
		full-duplex;
		pause;
		airoha,pnswap-rx;

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

			led@0 { /* en8811_a_gpio5 */
				reg = <0>;
				color = <LED_COLOR_ID_YELLOW>;
				function = LED_FUNCTION_LAN;
				function-enumerator = <1>;
				default-state = "keep";
			};
			led@1 { /* en8811_a_gpio4 */
				reg = <1>;
				color = <LED_COLOR_ID_GREEN>;
				function = LED_FUNCTION_LAN;
				function-enumerator = <2>;
				default-state = "keep";
			};
		};
	};

	phy1: ethernet-phy@15 {
		reg = <15>;
		interrupts-extended = <&pio 46 IRQ_TYPE_EDGE_FALLING>;
		reset-gpios = <&pio 47 GPIO_ACTIVE_LOW>;
		reset-assert-us = <10000>;
		reset-deassert-us = <20000>;
		phy-mode = "2500base-x";
		full-duplex;
		pause;
		airoha,pnswap-rx;

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

			led@0 { /* en8811_b_gpio5 */
				reg = <0>;
				color = <LED_COLOR_ID_YELLOW>;
				function = LED_FUNCTION_WAN;
				function-enumerator = <1>;
				default-state = "keep";
			};
			led@1 { /* en8811_b_gpio4 */
				reg = <1>;
				color = <LED_COLOR_ID_GREEN>;
				function = LED_FUNCTION_WAN;
				function-enumerator = <2>;
				default-state = "keep";
			};
		};
	};
};

&pcie {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie_pins>;
	status = "okay";
};

&pcie_phy {
	status = "okay";
};

&pio {
	i2c_pins: i2c-pins {
		mux {
			function = "i2c";
			groups = "i2c";
		};
	};

	mmc0_pins_default: mmc0-pins {
		mux {
			function = "emmc";
			groups = "emmc_51";
		};
		conf-cmd-dat {
			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
			input-enable;
			drive-strength = <4>;
			bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
		};
		conf-clk {
			pins = "EMMC_CK";
			drive-strength = <6>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
		};
		conf-ds {
			pins = "EMMC_DSL";
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
		};
		conf-rst {
			pins = "EMMC_RSTB";
			drive-strength = <4>;
			bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
		};
	};

	mmc0_pins_uhs: mmc0-uhs-pins {
		mux {
			function = "emmc";
			groups = "emmc_51";
		};
		conf-cmd-dat {
			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
			input-enable;
			drive-strength = <4>;
			bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
		};
		conf-clk {
			pins = "EMMC_CK";
			drive-strength = <6>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
		};
		conf-ds {
			pins = "EMMC_DSL";
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
		};
		conf-rst {
			pins = "EMMC_RSTB";
			drive-strength = <4>;
			bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
		};
	};

	pcie_pins: pcie-pins {
		mux {
			function = "pcie";
			groups = "pcie_clk", "pcie_wake", "pcie_pereset";
		};
	};

	pwm_pins: pwm-pins {
		mux {
			function = "pwm";
			groups = "pwm0";
		};
	};

	spi_flash_pins: spi-flash-pins {
		mux {
			function = "spi";
			groups = "spi0", "spi0_wp_hold";
		};
	};

	usb_ngff_pins: usb-ngff-pins {
		ngff-gnss-off-conf {
			pins = "GPIO_6";
			drive-strength = <8>;
			mediatek,pull-up-adv = <1>;
		};
		ngff-pe-rst-conf {
			pins = "GPIO_7";
			drive-strength = <8>;
			mediatek,pull-up-adv = <1>;
		};
		ngff-wwan-off-conf {
			pins = "GPIO_8";
			drive-strength = <8>;
			mediatek,pull-up-adv = <1>;
		};
		ngff-pwr-off-conf {
			pins = "GPIO_9";
			drive-strength = <8>;
			mediatek,pull-up-adv = <1>;
		};
		ngff-rst-conf {
			pins = "GPIO_10";
			drive-strength = <8>;
			mediatek,pull-up-adv = <1>;
		};
		ngff-coex-conf {
			pins = "SPI1_CS";
			drive-strength = <8>;
			mediatek,pull-up-adv = <1>;
		};
	};

	wf_2g_5g_pins: wf-2g-5g-pins {
		mux {
			function = "wifi";
			groups = "wf_2g", "wf_5g";
		};
		conf {
			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
			       "WF1_TOP_CLK", "WF1_TOP_DATA";
			drive-strength = <4>;
		};
	};

	wf_dbdc_pins: wf-dbdc-pins {
		mux {
			function = "wifi";
			groups = "wf_dbdc";
		};
		conf {
			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
			       "WF1_TOP_CLK", "WF1_TOP_DATA";
			drive-strength = <4>;
		};
	};

	wf_led_pins: wf-led-pins {
		mux {
			function = "led";
			groups = "wifi_led";
		};
	};
};

&pwm {
	pinctrl-names = "default";
	pinctrl-0 = <&pwm_pins>;
	status = "okay";
};

&spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi_flash_pins>;
	status = "okay";

	flash@0 {
		compatible = "spi-nand";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0>;

		spi-max-frequency = <20000000>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
	};
};

&ssusb {
	pinctrl-names = "default";
	pinctrl-0 = <&usb_ngff_pins>;
	vusb33-supply = <&reg_3p3v>;
	vbus-supply = <&usb_vbus>;
	status = "okay";
};

&trng {
	status = "okay";
};

&uart0 {
	status = "okay";
};

&usb_phy {
	status = "okay";
};

&watchdog {
	status = "okay";
};

&wifi {
	status = "okay";
	pinctrl-names = "default", "dbdc";
	pinctrl-0 = <&wf_2g_5g_pins>, <&wf_led_pins>;
	pinctrl-1 = <&wf_dbdc_pins>, <&wf_led_pins>;

	led {
		led-active-low;
	};
};

