// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Google Lazor board device tree source
 *
 * Copyright 2020 Google LLC.
 */

#include "sc7180.dtsi"

ap_ec_spi: &spi6 {};
ap_h1_spi: &spi0 {};

#include "sc7180-trogdor.dtsi"
#include "sc7180-trogdor-ti-sn65dsi86.dtsi"

&ap_sar_sensor {
	semtech,cs0-ground;
	semtech,combined-sensors = <3>;
	semtech,resolution = "fine";
	semtech,startup-sensor = <0>;
	semtech,proxraw-strength = <8>;
	semtech,avg-pos-strength = <64>;
};

/*
 * Lazor is stuffed with a 47k NTC as charger thermistor which currently is
 * not supported by the PM6150 ADC driver. Disable the charger thermal zone
 * to avoid using bogus temperature values.
 */
&charger_thermal {
	status = "disabled";
};

ap_ts_pen_1v8: &i2c4 {
	status = "okay";
	clock-frequency = <400000>;

	ap_ts: touchscreen@10 {
		compatible = "hid-over-i2c";
		reg = <0x10>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_int_l>, <&ts_reset_l>;

		interrupt-parent = <&tlmm>;
		interrupts = <9 IRQ_TYPE_LEVEL_LOW>;

		post-power-on-delay-ms = <20>;
		hid-descr-addr = <0x0001>;

		vdd-supply = <&pp3300_ts>;
	};
};

&panel {
	compatible = "boe,nv133fhm-n62";
};

&pm6150_adc {
	status = "disabled";

	/delete-node/ charger-thermistor@4f;
};

&pm6150_adc_tm {
	status = "disabled";

	/delete-node/ charger-thermistor@0;
};

&trackpad {
	interrupts = <58 IRQ_TYPE_EDGE_FALLING>;
};

&wifi {
	qcom,ath10k-calibration-variant = "GO_LAZOR";
};

/* PINCTRL - modifications to sc7180-trogdor.dtsi */

&trackpad_int_1v8_odl {
	pinmux {
		pins = "gpio58";
	};

	pinconf {
		pins = "gpio58";
	};
};

&ts_reset_l {
	pinconf {
		/* This pin is not connected on -rev0, pull up to park. */
		/delete-property/bias-disable;
		bias-pull-up;
	};
};

/* PINCTRL - board-specific pinctrl */

&tlmm {
	gpio-line-names = "ESIM_MISO",
			  "ESIM_MOSI",
			  "ESIM_CLK",
			  "ESIM_CS_L",
			  "",
			  "",
			  "AP_TP_I2C_SDA",
			  "AP_TP_I2C_SCL",
			  "TS_RESET_L",
			  "TS_INT_L",
			  "",
			  "EDP_BRIJ_IRQ",
			  "AP_EDP_BKLTEN",
			  "AP_RAM_ID2",
			  "",
			  "EDP_BRIJ_I2C_SDA",
			  "EDP_BRIJ_I2C_SCL",
			  "HUB_RST_L",
			  "",
			  "AP_RAM_ID1",
			  "AP_SKU_ID2",
			  "",
			  "",
			  "AMP_EN",
			  "P_SENSOR_INT_L",
			  "AP_SAR_SENSOR_SDA",
			  "AP_SAR_SENSOR_SCL",
			  "",
			  "HP_IRQ",
			  "AP_RAM_ID0",
			  "EN_PP3300_DX_EDP",
			  "AP_BRD_ID2",
			  "BRIJ_SUSPEND",
			  "AP_BRD_ID0",
			  "AP_H1_SPI_MISO",
			  "AP_H1_SPI_MOSI",
			  "AP_H1_SPI_CLK",
			  "AP_H1_SPI_CS_L",
			  "",
			  "",
			  "",
			  "",
			  "H1_AP_INT_ODL",
			  "",
			  "UART_AP_TX_DBG_RX",
			  "UART_DBG_TX_AP_RX",
			  "HP_I2C_SDA",
			  "HP_I2C_SCL",
			  "FORCED_USB_BOOT",
			  "",
			  "",
			  "AMP_DIN",
			  "",
			  "HP_BCLK",
			  "HP_LRCLK",
			  "HP_DOUT",
			  "HP_DIN",
			  "HP_MCLK",
			  "TRACKPAD_INT_1V8_ODL",
			  "AP_EC_SPI_MISO",
			  "AP_EC_SPI_MOSI",
			  "AP_EC_SPI_CLK",
			  "AP_EC_SPI_CS_L",
			  "AP_SPI_CLK",
			  "AP_SPI_MOSI",
			  "AP_SPI_MISO",
			  /*
			   * AP_FLASH_WP_L is crossystem ABI. Schematics
			   * call it BIOS_FLASH_WP_L.
			   */
			  "AP_FLASH_WP_L",
			  "DBG_SPI_HOLD_L",
			  "AP_SPI_CS0_L",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "UIM2_DATA",
			  "UIM2_CLK",
			  "UIM2_RST",
			  "UIM2_PRESENT",
			  "UIM1_DATA",
			  "UIM1_CLK",
			  "UIM1_RST",
			  "",
			  "EN_PP3300_CODEC",
			  "EN_PP3300_HUB",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "AP_SKU_ID1",
			  "AP_RST_REQ",
			  "",
			  "AP_BRD_ID1",
			  "AP_EC_INT_L",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "EDP_BRIJ_EN",
			  "AP_SKU_ID0",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "AP_TS_PEN_I2C_SDA",
			  "AP_TS_PEN_I2C_SCL",
			  "DP_HOT_PLUG_DET",
			  "EC_IN_RW_ODL";
};
