// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2019 BayLibre, SAS
 * Author: Neil Armstrong <narmstrong@baylibre.com>
 */

#include "meson-g12b-odroid.dtsi"

/ {
	aliases {
		rtc0 = &rtc;
	};

	dio2133: audio-amplifier-0 {
		compatible = "simple-audio-amplifier";
		enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
		VCC-supply = <&vcc_5v>;
		sound-name-prefix = "U19";
		status = "okay";
	};

	hub_5v: regulator-hub-5v {
		compatible = "regulator-fixed";
		regulator-name = "HUB_5V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		vin-supply = <&vcc_5v>;

		/* Connected to the Hub CHIPENABLE, LOW sets low power state */
		gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	/* USB hub supports both USB 2.0 and USB 3.0 root hub */
	usb-hub {
		dr_mode = "host";
		#address-cells = <1>;
		#size-cells = <0>;

		/* 2.0 hub on port 1 */
		hub_2_0: hub@1 {
			compatible = "usb5e3,610";
			reg = <1>;
			peer-hub = <&hub_3_0>;
			vdd-supply = <&usb_pwr_en>;
		};

		/* 3.0 hub on port 4 */
		hub_3_0: hub@2 {
			compatible = "usb5e3,620";
			reg = <2>;
			peer-hub = <&hub_2_0>;
			reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
			vdd-supply = <&vcc_5v>;
		};
	};

	sound {
		compatible = "amlogic,axg-sound-card";
		model = "ODROID-N2";
		audio-widgets = "Line", "Lineout";
		audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>,
				 <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>,
				 <&dio2133>;
		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
				"TDM_B Playback", "TDMOUT_B OUT",
				"TDMOUT_C IN 0", "FRDDR_A OUT 2",
				"TDMOUT_C IN 1", "FRDDR_B OUT 2",
				"TDMOUT_C IN 2", "FRDDR_C OUT 2",
				"TDM_C Playback", "TDMOUT_C OUT",
				"TDMIN_A IN 4", "TDM_B Loopback",
				"TDMIN_B IN 4", "TDM_B Loopback",
				"TDMIN_C IN 4", "TDM_B Loopback",
				"TDMIN_LB IN 1", "TDM_B Loopback",
				"TDMIN_A IN 5", "TDM_C Loopback",
				"TDMIN_B IN 5", "TDM_C Loopback",
				"TDMIN_C IN 5", "TDM_C Loopback",
				"TDMIN_LB IN 2", "TDM_C Loopback",
				"TODDR_A IN 0", "TDMIN_A OUT",
				"TODDR_B IN 0", "TDMIN_A OUT",
				"TODDR_C IN 0", "TDMIN_A OUT",
				"TODDR_A IN 1", "TDMIN_B OUT",
				"TODDR_B IN 1", "TDMIN_B OUT",
				"TODDR_C IN 1", "TDMIN_B OUT",
				"TODDR_A IN 2", "TDMIN_C OUT",
				"TODDR_B IN 2", "TDMIN_C OUT",
				"TODDR_C IN 2", "TDMIN_C OUT",
				"TODDR_A IN 6", "TDMIN_LB OUT",
				"TODDR_B IN 6", "TDMIN_LB OUT",
				"TODDR_C IN 6", "TDMIN_LB OUT",
				"U19 INL", "ACODEC LOLP",
				"U19 INR", "ACODEC LORP",
				"Lineout", "U19 OUTL",
				"Lineout", "U19 OUTR";

		clocks = <&clkc CLKID_MPLL2>,
			 <&clkc CLKID_MPLL0>,
			 <&clkc CLKID_MPLL1>;

		assigned-clocks = <&clkc CLKID_MPLL2>,
				  <&clkc CLKID_MPLL0>,
				  <&clkc CLKID_MPLL1>;
		assigned-clock-parents = <0>, <0>, <0>;
		assigned-clock-rates = <294912000>,
				       <270950400>,
				       <393216000>;

		dai-link-0 {
			sound-dai = <&frddr_a>;
		};

		dai-link-1 {
			sound-dai = <&frddr_b>;
		};

		dai-link-2 {
			sound-dai = <&frddr_c>;
		};

		dai-link-3 {
			sound-dai = <&toddr_a>;
		};

		dai-link-4 {
			sound-dai = <&toddr_b>;
		};

		dai-link-5 {
			sound-dai = <&toddr_c>;
		};

		/* 8ch hdmi interface */
		dai-link-6 {
			sound-dai = <&tdmif_b>;
			dai-format = "i2s";
			dai-tdm-slot-tx-mask-0 = <1 1>;
			dai-tdm-slot-tx-mask-1 = <1 1>;
			dai-tdm-slot-tx-mask-2 = <1 1>;
			dai-tdm-slot-tx-mask-3 = <1 1>;
			mclk-fs = <256>;

			codec-0 {
				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
			};

			codec-1 {
				sound-dai = <&toacodec TOACODEC_IN_B>;
			};
		};

		/* i2s jack output interface */
		dai-link-7 {
			sound-dai = <&tdmif_c>;
			dai-format = "i2s";
			dai-tdm-slot-tx-mask-0 = <1 1>;
			mclk-fs = <256>;

			codec-0 {
				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>;
			};

			codec-1 {
				sound-dai = <&toacodec TOACODEC_IN_C>;
			};
		};

		/* hdmi glue */
		dai-link-8 {
			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;

			codec {
				sound-dai = <&hdmi_tx>;
			};
		};

		/* acodec glue */
		dai-link-9 {
			sound-dai = <&toacodec TOACODEC_OUT>;

			codec {
				sound-dai = <&acodec>;
			};
		};
	};
};

&acodec {
	AVDD-supply = <&vddao_1v8>;
	status = "okay";
};

&ethmac {
	pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
	pinctrl-names = "default";
	status = "okay";
	phy-mode = "rgmii";
	phy-handle = <&external_phy>;
	amlogic,tx-delay-ns = <2>;
};

&ext_mdio {
	external_phy: ethernet-phy@0 {
		/* Realtek RTL8211F (0x001cc916) */
		reg = <0>;
		max-speed = <1000>;

		reset-assert-us = <10000>;
		reset-deassert-us = <80000>;
		reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;

		interrupt-parent = <&gpio_intc>;
		/* MAC_INTR on GPIOZ_14 */
		interrupts = <IRQID_GPIOZ_14 IRQ_TYPE_LEVEL_LOW>;
	};
};

&gpio {
	gpio-line-names =
		/* GPIOZ */
		"", "", "", "", "", "", "", "",
		"", "", "", "", "", "", "", "",
		/* GPIOH */
		"", "", "", "", "", "", "", "",
		"",
		/* BOOT */
		"", "", "", "", "", "", "", "",
		"", "", "", "", "", "", "", "",
		/* GPIOC */
		"", "", "", "", "", "", "", "",
		/* GPIOA */
		"PIN_44", /* GPIOA_0 */
		"PIN_46", /* GPIOA_1 */
		"PIN_45", /* GPIOA_2 */
		"PIN_47", /* GPIOA_3 */
		"PIN_26", /* GPIOA_4 */
		"", "", "", "", "", "",
		"PIN_42", /* GPIOA_11 */
		"PIN_32", /* GPIOA_12 */
		"PIN_7",  /* GPIOA_13 */
		"PIN_27", /* GPIOA_14 */
		"PIN_28", /* GPIOA_15 */
		/* GPIOX */
		"PIN_16", /* GPIOX_0 */
		"PIN_18", /* GPIOX_1 */
		"PIN_22", /* GPIOX_2 */
		"PIN_11", /* GPIOX_3 */
		"PIN_13", /* GPIOX_4 */
		"PIN_33", /* GPIOX_5 */
		"PIN_35", /* GPIOX_6 */
		"PIN_15", /* GPIOX_7 */
		"PIN_19", /* GPIOX_8 */
		"PIN_21", /* GPIOX_9 */
		"PIN_24", /* GPIOX_10 */
		"PIN_23", /* GPIOX_11 */
		"PIN_8",  /* GPIOX_12 */
		"PIN_10", /* GPIOX_13 */
		"PIN_29", /* GPIOX_14 */
		"PIN_31", /* GPIOX_15 */
		"PIN_12", /* GPIOX_16 */
		"PIN_3",  /* GPIOX_17 */
		"PIN_5",  /* GPIOX_18 */
		"PIN_36"; /* GPIOX_19 */
};

&i2c3 {
	status = "okay";
	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
	pinctrl-names = "default";

	rtc: rtc@51 {
		compatible = "nxp,pcf8563";
		reg = <0x51>;
		wakeup-source;
	};
};

&ir {
	status = "okay";
	pinctrl-0 = <&remote_input_ao_pins>;
	pinctrl-names = "default";
	linux,rc-map-name = "rc-odroid";
};

/*
 * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins
 * and eMMC Data 4 to 7 pins.
 * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
 * and change bus-width to 4 then spifc can be enabled.
 * The SW1 slide should also be set to the correct position.
 */
&spifc {
	status = "disabled";
	pinctrl-0 = <&nor_pins>;
	pinctrl-names = "default";

	mx25u64: flash@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "mxicy,mx25u6435f", "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <104000000>;
	};
};

&toacodec {
	status = "okay";
};

&usb {
	vbus-supply = <&usb_pwr_en>;
};

&usb2_phy1 {
	/* Enable the hub which is connected to this port */
	phy-supply = <&hub_5v>;
};
