/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
 * Copyright (c) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
 * Based on meson-gx-p23x-q20x.dtsi:
 * - Copyright (c) 2016 Endless Computers, Inc.
 *   Author: Carlo Caione <carlo@endlessm.com>
 * - Copyright (c) 2016 BayLibre, SAS.
 *   Author: Neil Armstrong <narmstrong@baylibre.com>
 */

/* Common DTSI for devices which are based on the P212 reference board. */

#include "meson-t7-txxx.dtsi"

/ {
	aliases {
		serial0 = &uart_a;
		serial1 = &uart_b;
		spi0 = &spifc;
		spi1 = &spicc0;
		spi2 = &spicc1;
		spi3 = &spicc2;
		spi4 = &spicc3;
		spi5 = &spicc4;
		spi6 = &spicc5;
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		i2c3 = &i2c3;
		i2c4 = &i2c4;
		i2c5 = &i2c5;
		i2c6 = &i2c_AO_A;
		i2c7 = &i2c_AO_B;
	};

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

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

	vddio_boot: regulator-vddio_boot {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_BOOT";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	vddao_3v3: regulator-vddao_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VDDAO_3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

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

	vcc_3v3: regulator-vcc_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

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

	wifi32k: wifi32k {
		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 = <&wifi32k>;
		clock-names = "ext_clock";
	};

	tee: tee {
		compatible = "linaro,optee-tz";
		method = "smc";
	};
};

&ethmac {
	status = "okay";
	internal_phy = <1>;
	mc_val = <0x4be04>;
/*exphy setting*/
//	pinctrl-names = "external_eth_rgmii_pins";
//	pinctrl-0 = <&external_eth_rgmii_pins>;
//	internal_phy = <0>;
//	mc_val = <0x1601>;
};

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

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

/* Wireless SDIO Module */
&sd_emmc_a {
	status = "disabled";
	/*pinctrl-0 = <&sdio_pins>;*/
	/*pinctrl-names = "default";*/
	#address-cells = <1>;
	#size-cells = <0>;

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

	non-removable;
	disable-wp;
	card_type = <3>;

	mmc-pwrseq = <&sdio_pwrseq>;

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

/* SD card */
&sd_emmc_b {
	status = "okay";
	pinctrl-0 = <&sdcard_pins>;
	pinctrl-1 = <&sdcard_pins &to_sduart_pins>;
	pinctrl-names = "sd_all_pins", "sd_uart";

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

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

	card_type = <5>;

	init_co_phase = <2>;
	init_tx_phase = <0>;

	sd_hs_co_phase = <2>;
	sd_hs_to_phase = <0>;

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

/* eMMC */
&sd_emmc_c {
	status = "okay";
	pinctrl-0 = <&emmc_pins>;
	pinctrl-names = "default";

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

	init_co_phase = <2>;
	init_tx_phase = <0>;

	hs_co_phase = <2>;
	hs_to_phase = <0>;

	hs2_co_phase = <2>;
	hs2_to_phase = <0>;

	hw_reset = <&gpio GPIOB_12 GPIO_ACTIVE_HIGH>;

	mmc-pwrseq = <&emmc_pwrseq>;
	vmmc-supply = <&vcc_3v3>;
	vqmmc-supply = <&vddio_boot>;
};

/* nand */
&nand {
	status = "okay";
	pinctrl-names = "default", "nand_cs_only";
	pinctrl-0 = <&all_nand_pins>;
	pinctrl-1 = <&nand_cs_pins>;
};

&crg {
        status = "okay";
        dr_mode = "host";
};

&crg2 {
        status = "okay";
        dr_mode = "host";
};

&usb2_phy_v2 {
        status = "okay";
        portnum = <1>;
};

&usb3_phy_v2 {
        status = "okay";
        portnum = <0>;
        gpio-vbus-power = "GPIOM_8";
        gpios = <&gpio GPIOM_8 GPIO_ACTIVE_HIGH>;
};

&usb2_phy2_v2 {
        status = "okay";
        portnum = <1>;
};

&usb3_phy2_v2 {
        status = "okay";
        portnum = <0>;
        gpio-vbus-power = "GPIOM_9";
        gpios = <&gpio GPIOM_9 GPIO_ACTIVE_HIGH>;
};

&pwm_ef {
	status = "okay";
	/* pinctrl-0 = <&pwm_e_pins>; */
	/* pinctrl-names = "default"; */
};

/* This is connected to the Bluetooth module: */
&uart_b {
	status = "okay";
	/* pinctrl-0 = <&a_uart_pins>; */
	/* pinctrl-names = "default";  */
	uart-has-rtscts;
};

&spifc {
	status = "okay";
	cs-gpios = <&gpio GPIOB_12 GPIO_ACTIVE_HIGH>;
	spi-flash@0 {
		status = "okay";
	};
};

&spicc0 {
	status = "disabled";
	pinctrl-names = "default";
	pinctrl-0 = <&spicc0_pins>;
	cs-gpios = <&gpio GPIOT_21 0>;
};

&spicc1 {
	status = "disabled";
	pinctrl-names = "default";
	pinctrl-0 = <&spicc1_pins_1>;
	cs-gpios = <&gpio GPIOC_3 0>;
};

&spicc2 {
	status = "disabled";
	pinctrl-names = "default";
	pinctrl-0 = <&spicc2_pins>;
	cs-gpios = <&gpio GPIOY_3 0>;
};

&spicc3 {
	status = "disabled";
	pinctrl-names = "default";
	pinctrl-0 = <&spicc3_pins>;
	cs-gpios = <&gpio GPIOT_9 0>;
	spi-flash@0 {
		compatible = "spi-flash";
		reg = <0>;
		spi-max-frequency = <16000000>;
		spi-tx-bus-width = <1>;
		spi-rx-bus-width = <1>;
		status = "disabled";
        };
};

&spicc4 {
	status = "disabled";
	pinctrl-names = "default";
	pinctrl-0 = <&spicc4_pins>;
	cs-gpios = <&gpio GPIOZ_3 0>;
};

&spicc5 {
	status = "disabled";
	pinctrl-names = "default";
	pinctrl-0 = <&spicc5_pins>;
	cs-gpios = <&gpio GPIOZ_7 0>;
};
