// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2017 Andreas Färber
 */

/dts-v1/;

#include "meson-gxbb.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	compatible = "friendlyarm,nanopi-k2", "amlogic,meson-gxbb";

	aliases {
		serial0 = &uart_AO;
		ethernet0 = &ethmac;
	};

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

	memory@0 {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x80000000>;
	};

	leds {
		compatible = "gpio-leds";

		stat {
			label = "nanopi-k2:blue:stat";
			gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
			default-state = "on";
			panic-indicator;
		};
	};

	vdd_5v: regulator-vdd-5v {
		compatible = "regulator-fixed";
		regulator-name = "VDD_5V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};

	vddio_ao18: regulator-vddio-ao18 {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_AO18";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	vddio_ao3v3: regulator-vddio-ao3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_AO3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	vddio_tf: regulator-vddio-tf {
		compatible = "regulator-gpio";

		regulator-name = "VDDIO_TF";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;

		gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
		gpios-states = <0>;

		states = <3300000 0>,
		         <1800000 1>;

		regulator-settling-time-up-us = <100>;
		regulator-settling-time-down-us = <5000>;
	};

	wifi_32k: wifi-32k {
		compatible = "pwm-clock";
		#clock-cells = <0>;
		clock-frequency = <32768>;
		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
	};

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
		clocks = <&wifi_32k>;
		clock-names = "ext_clock";
	};

	vcc1v8: regulator-vcc1v8 {
		compatible = "regulator-fixed";
		regulator-name = "VCC1.8V";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	vcc3v3: regulator-vcc3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VCC3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	emmc_pwrseq: emmc-pwrseq {
		compatible = "mmc-pwrseq-emmc";
		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
	};
};

&ethmac {
	status = "okay";
	pinctrl-0 = <&eth_rgmii_pins>;
	pinctrl-names = "default";

	phy-handle = <&eth_phy0>;
	phy-mode = "rgmii";

	amlogic,tx-delay-ns = <2>;

	snps,reset-gpio = <&gpio GPIOZ_14 0>;
	snps,reset-delays-us = <0 10000 1000000>;
	snps,reset-active-low;

	mdio {
		compatible = "snps,dwmac-mdio";
		#address-cells = <1>;
		#size-cells = <0>;

		eth_phy0: ethernet-phy@0 {
			/* Realtek RTL8211F (0x001cc916) */
			reg = <0>;
			interrupt-parent = <&gpio_intc>;
			/* MAC_INTR on GPIOZ_15 */
			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
		};
	};
};

&ir {
	status = "okay";
	pinctrl-0 = <&remote_input_ao_pins>;
	pinctrl-names = "default";
};

&pinctrl_aobus {
	gpio-line-names = "UART TX", "UART RX", "Power Control", "Power Key In",
			  "VCCK En", "CON1 Header Pin31",
			  "I2S Header Pin6", "IR In", "I2S Header Pin7",
			  "I2S Header Pin3", "I2S Header Pin4",
			  "I2S Header Pin5", "HDMI CEC", "SYS LED",
			  /* GPIO_TEST_N */
			  "";
};

&pinctrl_periphs {
	gpio-line-names = /* Bank GPIOZ */
			  "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk",
			  "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2",
			  "Eth RX D3", "Eth RGMII TX Clk", "Eth TX En",
			  "Eth TX D0", "Eth TX D1", "Eth TX D2", "Eth TX D3",
			  "Eth PHY nRESET", "Eth PHY Intc",
			  /* Bank GPIOH */
			  "HDMI HPD", "HDMI DDC SDA", "HDMI DDC SCL",
			  "CON1 Header Pin33",
			  /* Bank BOOT */
			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", "eMMC D4",
			  "eMMC D5", "eMMC D6", "eMMC D7", "eMMC Clk",
			  "eMMC Reset", "eMMC CMD",
			  "", "", "", "", "eMMC DS",
			  "", "",
			  /* Bank CARD */
			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
			  "SDCard D3", "SDCard D2", "SDCard Det",
			  /* Bank GPIODV */
			  "", "", "", "", "", "", "", "", "", "", "", "", "",
			  "", "", "", "", "", "", "", "", "", "", "",
			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
			  "VDDEE Regulator", "VCCK Regulator",
			  /* Bank GPIOY */
			  "CON1 Header Pin7", "CON1 Header Pin11",
			  "CON1 Header Pin13", "CON1 Header Pin15",
			  "CON1 Header Pin18", "CON1 Header Pin19",
			  "CON1 Header Pin22", "CON1 Header Pin21",
			  "CON1 Header Pin24", "CON1 Header Pin23",
			  "CON1 Header Pin26", "CON1 Header Pin29",
			  "CON1 Header Pin32", "CON1 Header Pin8",
			  "CON1 Header Pin10", "CON1 Header Pin16",
			  "CON1 Header Pin12",
			  /* Bank GPIOX */
			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
			  "WIFI Power Enable", "WIFI WAKE HOST",
			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
			  "Bluetooth UART TX", "Bluetooth UART RX",
			  "Bluetooth UART CTS", "Bluetooth UART RTS",
			  "", "", "", "WIFI 32K", "Bluetooth Enable",
			  "Bluetooth WAKE HOST", "",
			  /* Bank GPIOCLK */
			  "", "CON1 Header Pin35", "", "";
};

&pwm_ef {
	status = "okay";
	pinctrl-0 = <&pwm_e_pins>;
	pinctrl-names = "default";
	clocks = <&clkc CLKID_FCLK_DIV4>;
	clock-names = "clkin0";
};

&saradc {
	status = "okay";
	vref-supply = <&vddio_ao18>;
};

/* SDIO */
&sd_emmc_a {
	status = "okay";
	pinctrl-0 = <&sdio_pins>, <&sdio_irq_pins>;
	pinctrl-1 = <&sdio_clk_gate_pins>;
	pinctrl-names = "default", "clk-gate";
	#address-cells = <1>;
	#size-cells = <0>;

	bus-width = <4>;
	cap-sd-highspeed;
	max-frequency = <200000000>;

	non-removable;
	disable-wp;

	mmc-pwrseq = <&sdio_pwrseq>;

	vmmc-supply = <&vddio_ao3v3>;
	vqmmc-supply = <&vddio_ao18>;

	brcmf: wifi@1 {
		compatible = "brcm,bcm4329-fmac";
		reg = <1>;
	};
};

/* SD */
&sd_emmc_b {
	status = "okay";
	pinctrl-0 = <&sdcard_pins>;
	pinctrl-1 = <&sdcard_clk_gate_pins>;
	pinctrl-names = "default", "clk-gate";

	bus-width = <4>;
	cap-sd-highspeed;
	sd-uhs-sdr12;
	sd-uhs-sdr25;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	max-frequency = <200000000>;
	disable-wp;

	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
	cd-inverted;

	vmmc-supply = <&vddio_ao3v3>;
	vqmmc-supply = <&vddio_tf>;
};

/* eMMC */
&sd_emmc_c {
	status = "disabled";
	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
	pinctrl-1 = <&emmc_clk_gate_pins>;
	pinctrl-names = "default", "clk-gate";

	bus-width = <8>;
	max-frequency = <200000000>;
	non-removable;
	disable-wp;
	cap-mmc-highspeed;
	mmc-ddr-1_8v;
	mmc-hs200-1_8v;

	mmc-pwrseq = <&emmc_pwrseq>;
	vmmc-supply = <&vcc3v3>;
	vqmmc-supply = <&vcc1v8>;
};

/* DBG_UART */
&uart_AO {
	status = "okay";
	pinctrl-0 = <&uart_ao_a_pins>;
	pinctrl-names = "default";
};

/* Bluetooth on AP6212 */
&uart_A {
	status = "disabled";
	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
	pinctrl-names = "default";
};

/* 40-pin CON1 */
&uart_C {
	status = "disabled";
	pinctrl-0 = <&uart_c_pins>;
	pinctrl-names = "default";
};

&usb0_phy {
	status = "okay";
	phy-supply = <&vdd_5v>;
};

&usb1_phy {
	status = "okay";
};

&usb0 {
	status = "okay";
};

&usb1 {
	status = "okay";
};
