// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2022 Vyacheslav Bocharov <adeep@lexina.in>
 * Copyright (c) 2022 JetHome
 * Author: Vyacheslav Bocharov <adeep@lexina.in>
 * Author: Aleksandr Kazantsev <ak@tvip.ru>
 * Author: Alexey Shevelkin <ash@tvip.ru>
 */

/dts-v1/;

#include "meson-axg.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/thermal/thermal.h>

/ {
	aliases {
		serial0 = &uart_AO;   /* Console */
		serial2 = &uart_AO_B; /* External UART (Wireless Module) */
		ethernet0 = &ethmac;
	};

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

	reserved-memory {
		linux,cma {
			size = <0x0 0x400000>;
		};
	};

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

	vcc_3v3: regulator-vcc_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vddao_3v3>;
		regulator-always-on;
	};

	vcc_5v: regulator-vcc_5v {
		compatible = "regulator-fixed";
		regulator-name = "VCC5V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-always-on;
	};

	vddao_3v3: regulator-vddao_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VDDAO_3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vcc_5v>;
		regulator-always-on;
	};

	vddio_ao18: regulator-vddio_ao18 {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_AO18";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		vin-supply = <&vddao_3v3>;
		regulator-always-on;
	};

	vddio_boot: regulator-vddio_boot {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_BOOT";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vddao_3v3>;
		regulator-always-on;
	};

	vccq_1v8: regulator-vccq_1v8 {
		compatible = "regulator-fixed";
		regulator-name = "VCCQ_1V8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		vin-supply = <&vddao_3v3>;
		regulator-always-on;
	};

	usb_pwr: regulator-usb_pwr {
		compatible = "regulator-fixed";
		regulator-name = "USB_PWR";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		vin-supply = <&vcc_5v>;
		regulator-always-on;
	};

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

	wifi32k: wifi32k {
		compatible = "pwm-clock";
		#clock-cells = <0>;
		clock-frequency = <32768>;
		pwms = <&pwm_ab 0 30518 0>; /* PWM_A at 32.768KHz */
	};

	thermal-zones {
		cpu_thermal: cpu-thermal {
			polling-delay-passive = <250>;
			polling-delay = <1000>;
			thermal-sensors = <&scpi_sensors 0>;
			trips {
				cpu_passive: cpu-passive {
					temperature = <70000>; /* millicelsius */
					hysteresis = <2000>; /* millicelsius */
					type = "passive";
				};

				cpu_hot: cpu-hot {
					temperature = <80000>; /* millicelsius */
					hysteresis = <2000>; /* millicelsius */
					type = "hot";
				};

				cpu_critical: cpu-critical {
					temperature = <100000>; /* millicelsius */
					hysteresis = <2000>; /* millicelsius */
					type = "critical";
				};
			};

			cpu_cooling_maps: cooling-maps {
				map0 {
					trip = <&cpu_passive>;
					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
							<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
							<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
							<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
				};

				map1 {
					trip = <&cpu_hot>;
					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
							<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
							<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
							<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
				};
			};
		};
	};

	onewire {
		compatible = "w1-gpio";
		gpios = <&gpio GPIOA_14 GPIO_ACTIVE_HIGH>;
		#gpio-cells = <1>;
	};
};

&efuse {
	sn: sn@32 {
		reg = <0x32 0x20>;
	};

	eth_mac: eth_mac@0 {
		reg = <0x0 0x6>;
	};

	bt_mac: bt_mac@6 {
		reg = <0x6 0x6>;
	};

	wifi_mac: wifi_mac@c {
		reg = <0xc 0x6>;
	};

	bid: bid@12 {
		reg = <0x12 0x20>;
	};
};

&ethmac {
	status = "okay";
	pinctrl-0 = <&eth_rmii_x_pins>;
	pinctrl-names = "default";
	phy-handle = <&eth_phy0>;
	phy-mode = "rmii";

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

		/* ICPlus IP101A/G Ethernet PHY (vendor_id=0x0243, model_id=0x0c54) */
		eth_phy0: ethernet-phy@0 {
			/* compatible = "ethernet-phy-id0243.0c54";*/
			max-speed = <100>;
			reg = <0>;

			reset-assert-us = <10000>;
			reset-deassert-us = <10000>;
			reset-gpios = <&gpio GPIOZ_5 GPIO_ACTIVE_LOW>;
		};
	};
};

/* Internal I2C bus (on CPU module) */
&i2c1 {
	status = "okay";
	pinctrl-0 = <&i2c1_z_pins>;
	pinctrl-names = "default";

	/* RTC */
	pcf8563: pcf8563@51 {
		compatible = "nxp,pcf8563";
		reg = <0x51>;
		status = "okay";
	};
};

/* Peripheral I2C bus (on motherboard) */
&i2c_AO {
	status = "okay";
	pinctrl-0 = <&i2c_ao_sck_10_pins>, <&i2c_ao_sda_11_pins>;
	pinctrl-names = "default";
};

&pwm_ab {
	status = "okay";
	pinctrl-0 = <&pwm_a_x20_pins>;
	pinctrl-names = "default";
};

/* wifi module */
&sd_emmc_b {
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;

	pinctrl-0 = <&sdio_pins>;
	pinctrl-1 = <&sdio_clk_gate_pins>;
	pinctrl-names = "default", "clk-gate";

	bus-width = <4>;
	cap-sd-highspeed;
	max-frequency = <50000000>;
	disable-wp;

	mmc-pwrseq = <&sdio_pwrseq>;

	vmmc-supply = <&vddao_3v3>;
	vqmmc-supply = <&vddio_boot>;
};

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

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

	mmc-pwrseq = <&emmc_pwrseq>;

	vmmc-supply = <&vcc_3v3>;
	vqmmc-supply = <&vccq_1v8>;
};

/* UART Bluetooth */
&uart_B {
	status = "okay";
	pinctrl-0 = <&uart_b_z_pins>, <&uart_b_z_cts_rts_pins>;
	pinctrl-names = "default";
	uart-has-rtscts;
};

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

/* UART Wireless module */
&uart_AO_B {
	status = "okay";
	pinctrl-0 = <&uart_ao_b_pins>;
	pinctrl-names = "default";
};

&usb {
	status = "okay";
	phy-supply = <&usb_pwr>;
};

&spicc1 {
	status = "okay";
	pinctrl-0 = <&spi1_x_pins>, <&spi1_ss0_x_pins>;
	pinctrl-names = "default";
};

&gpio {
	gpio-line-names =
		"", "", "", "", "", // 0 - 4
		"", "", "", "", "", // 5 - 9
		"UserButton", "", "", "", "", // 10 - 14
		"", "", "", "", "", // 15 - 19
		"", "", "", "", "", // 20 - 24
		"", "LedRed", "LedGreen", "Output3", "Output2", // 25 - 29
		"Output1", "", "", "", "", // 30 - 34
		"", "ZigBeeBOOT", "", "", "", // 35 - 39
		"1Wire", "ZigBeeRESET", "", "Input4", "Input3", // 40 - 44
		"Input2", "Input1", "", "", "", // 45 - 49
		"", "", "", "", "", // 50 - 54
		"", "", "", "", "", // 55 - 59
		"", "", "", "", "", // 60 - 64
		"", "", "", "", "", // 65 - 69
		"", "", "", "", "", // 70 - 74
		"", "", "", "", "", // 75 - 79
		"", "", "", "", "", // 80 - 84
		"", ""; // 85-86
};

&cpu0 {
	#cooling-cells = <2>;
};

&cpu1 {
	#cooling-cells = <2>;
};

&cpu2 {
	#cooling-cells = <2>;
};

&cpu3 {
	#cooling-cells = <2>;
};
