// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8064-v2.0.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
/ {
	model = "Asus Nexus7(flo)";
	compatible = "asus,nexus7-flo", "qcom,apq8064";

	aliases {
		serial0 = &gsbi7_serial;
		serial1 = &gsbi6_serial;
	};

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

	reserved-memory {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		ramoops@88d00000{
			compatible = "ramoops";
			reg = <0x88d00000 0x100000>;
			record-size     = <0x00020000>;
			console-size    = <0x00020000>;
			ftrace-size     = <0x00020000>;
		};
	};

	ext_3p3v: regulator-fixed@1 {
		compatible = "regulator-fixed";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-name = "ext_3p3v";
		regulator-type = "voltage";
		startup-delay-us = <0>;
		gpio = <&tlmm_pinmux 77 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-boot-on;
	};

	gpio-keys {
		compatible = "gpio-keys";
		volume_up {
			label = "Volume Up";
			gpios = <&pm8921_gpio 4 GPIO_ACTIVE_HIGH>;
			linux,code = <KEY_VOLUMEUP>;
		};
		volume_down {
			label = "Volume Down";
			gpios = <&pm8921_gpio 38 GPIO_ACTIVE_HIGH>;
			linux,code = <KEY_VOLUMEDOWN>;
		};
	};

	soc {
		rpm@108000 {
			regulators {
				vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
				vin_lvs1_3_6-supply = <&pm8921_s4>;
				vin_lvs4_5_7-supply = <&pm8921_s4>;


				vdd_l24-supply = <&pm8921_s1>;
				vdd_l25-supply = <&pm8921_s1>;
				vin_lvs2-supply = <&pm8921_s1>;

				vdd_l26-supply = <&pm8921_s7>;
				vdd_l27-supply = <&pm8921_s7>;
				vdd_l28-supply = <&pm8921_s7>;

				vdd_ncp-supply = <&pm8921_l6>;

				/* Buck SMPS */
				s1 {
					regulator-always-on;
					regulator-min-microvolt = <1225000>;
					regulator-max-microvolt = <1225000>;
					qcom,switch-mode-frequency = <3200000>;
					bias-pull-down;
				};

				/* msm otg HSUSB_VDDCX */
				s3 {
					regulator-min-microvolt = <500000>;
					regulator-max-microvolt = <1150000>;
					qcom,switch-mode-frequency = <4800000>;
				};

				/*
				 * msm_sdcc.1-sdc-vdd_io
				 * tabla2x-slim-CDC_VDDA_RX
				 * tabla2x-slim-CDC_VDDA_TX
				 * tabla2x-slim-CDC_VDD_CP
				 * tabla2x-slim-VDDIO_CDC
				 */
				s4 {
					regulator-min-microvolt	= <1800000>;
					regulator-max-microvolt	= <1800000>;
					qcom,switch-mode-frequency = <3200000>;
					regulator-always-on;
				};

				s7 {
					regulator-min-microvolt = <1300000>;
					regulator-max-microvolt = <1300000>;
					qcom,switch-mode-frequency = <3200000>;
				};

				/* mipi_dsi.1-dsi1_pll_vdda */
				l2 {
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					regulator-always-on;
				};

				/* msm_otg-HSUSB_3p3 */
				l3 {
					regulator-min-microvolt = <3075000>;
					regulator-max-microvolt = <3075000>;
					bias-pull-down;
				};

				/* msm_otg-HSUSB_1p8 */
				l4 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					bias-pull-down;
				};

				/* msm_sdcc.1-sdc_vdd */
				l5 {
					regulator-min-microvolt = <2950000>;
					regulator-max-microvolt = <2950000>;
					regulator-always-on;
					bias-pull-down;
				};

				l6 {
					regulator-min-microvolt = <2950000>;
					regulator-max-microvolt = <2950000>;
				};

				/* mipi_dsi.1-dsi1_avdd */
				l11 {
					regulator-min-microvolt = <3000000>;
					regulator-max-microvolt = <3000000>;
					bias-pull-down;
					regulator-always-on;
				};

				/* pwm_power for backlight */
				l17 {
					regulator-min-microvolt = <3000000>;
					regulator-max-microvolt = <3000000>;
					regulator-always-on;
				};

				/* camera, qdsp6 */
				l23 {
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					bias-pull-down;
				};

				/*
				 * tabla2x-slim-CDC_VDDA_A_1P2V
				 * tabla2x-slim-VDDD_CDC_D
				 */
				l25 {
					regulator-min-microvolt = <1250000>;
					regulator-max-microvolt = <1250000>;
					bias-pull-down;
				};

				lvs1 {
					bias-pull-down;
				};

				lvs4 {
					bias-pull-down;
				};

				lvs5 {
					bias-pull-down;
				};

				lvs6 {
					bias-pull-down;
				};
				/*
				 * mipi_dsi.1-dsi1_vddio
				 * pil_riva-pll_vdd
				 */
				lvs7 {
					bias-pull-down;
				};
			};
		};

		mdp@5100000 {
			status = "okay";
			ports {
				port@1 {
					mdp_dsi1_out: endpoint {
						remote-endpoint = <&dsi0_in>;
					};
				};
			};
		};

		dsi0: mdss_dsi@4700000 {
			status = "okay";
			vdda-supply = <&pm8921_l2>;/*VDD_MIPI1 to 4*/
			vdd-supply = <&pm8921_l8>;
			vddio-supply = <&pm8921_lvs7>;
			avdd-supply = <&pm8921_l11>;
			vcss-supply = <&ext_3p3v>;

			panel@0 {
				reg = <0>;
				compatible = "jdi,lt070me05000";

				vddp-supply = <&pm8921_l17>;
				iovcc-supply = <&pm8921_lvs7>;

				enable-gpios = <&pm8921_gpio 36 GPIO_ACTIVE_HIGH>;
				reset-gpios = <&tlmm_pinmux 54 GPIO_ACTIVE_LOW>;
				dcdc-en-gpios = <&pm8921_gpio 23 GPIO_ACTIVE_HIGH>;

				port {
					panel_in: endpoint {
						remote-endpoint = <&dsi0_out>;
					};
				};
			};
			ports {
				port@0 {
					dsi0_in: endpoint {
						remote-endpoint = <&mdp_dsi1_out>;
					};
				};

				port@1 {
					dsi0_out: endpoint {
						remote-endpoint = <&panel_in>;
						data-lanes = <0 1 2 3>;
					};
				};
			};
		};

		dsi-phy@4700200 {
			status = "okay";
			vddio-supply = <&pm8921_lvs7>;/*VDD_PLL2_1 to 7*/
		};

		gsbi@16200000 {
			status = "okay";
			qcom,mode = <GSBI_PROT_I2C>;
			i2c@16280000 {
				status = "okay";
				clock-frequency = <200000>;
				pinctrl-0 = <&i2c3_pins>;
				pinctrl-names = "default";

				trackpad@10 {
					compatible = "elan,ekth3500";
					reg = <0x10>;
					interrupt-parent = <&tlmm_pinmux>;
					interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
				};
			};
		};


		gsbi@12440000 {
			status = "okay";
			qcom,mode = <GSBI_PROT_I2C>;

			i2c@12460000 {
				status = "okay";
				clock-frequency = <200000>;
				pinctrl-0 = <&i2c1_pins>;
				pinctrl-names = "default";

				eeprom@52 {
					compatible = "atmel,24c128";
					reg = <0x52>;
					pagesize = <32>;
				};

				bq27541@55 {
					compatible = "ti,bq27541";
					reg = <0x55>;
				};

			};
		};

		gsbi@16500000 {
			status = "ok";
			qcom,mode = <GSBI_PROT_I2C_UART>;

			serial@16540000 {
				status = "ok";

				pinctrl-names = "default";
				pinctrl-0 = <&gsbi6_uart_4pins>;
			};
		};

		gsbi@16600000 {
			status = "ok";
			qcom,mode = <GSBI_PROT_I2C_UART>;
			serial@16640000 {
				status = "ok";
			};
		};

		/* OTG */
		usb@12500000 {
			status = "okay";
			dr_mode = "otg";
			ulpi {
				phy {
					v3p3-supply = <&pm8921_l3>;
					v1p8-supply = <&pm8921_l4>;
				};
			};
		};

		amba {
			/* eMMC */
			sdcc@12400000 {
				status = "okay";
				vmmc-supply = <&pm8921_l5>;
				vqmmc-supply = <&pm8921_s4>;
			};
		};

		imem@2a03f000 {
			compatible = "syscon", "simple-mfd";
			reg = <0x2a03f000 0x1000>;

			reboot-mode {
				compatible = "syscon-reboot-mode";
				offset = <0x65c>;

				mode-normal	= <0x77665501>;
				mode-bootloader	= <0x77665500>;
				mode-recovery	= <0x77665502>;
			};
		};
	};
};
