// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
 */

/dts-v1/;

#include "sm8350-sony-xperia-sagami.dtsi"

/ {
	model = "Sony Xperia 1 III";
	compatible = "sony,pdx215-generic", "qcom,sm8350";
};

&i2c13 {
	pmic@75 {
		compatible = "dlg,slg51000";
		reg = <0x75>;
		dlg,cs-gpios = <&pm8350b_gpios 1 GPIO_ACTIVE_HIGH>;

		pinctrl-names = "default";
		pinctrl-0 = <&cam_pwr_a_cs>;

		regulators {
			slg51000_a_ldo1: ldo1 {
				regulator-name = "slg51000_a_ldo1";
				regulator-min-microvolt = <2400000>;
				regulator-max-microvolt = <3300000>;
			};

			slg51000_a_ldo2: ldo2 {
				regulator-name = "slg51000_a_ldo2";
				regulator-min-microvolt = <2400000>;
				regulator-max-microvolt = <3300000>;
			};

			slg51000_a_ldo3: ldo3 {
				regulator-name = "slg51000_a_ldo3";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3750000>;
			};

			slg51000_a_ldo4: ldo4 {
				regulator-name = "slg51000_a_ldo4";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3750000>;
			};

			slg51000_a_ldo5: ldo5 {
				regulator-name = "slg51000_a_ldo5";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1200000>;
			};

			slg51000_a_ldo6: ldo6 {
				regulator-name = "slg51000_a_ldo6";
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1200000>;
			};

			slg51000_a_ldo7: ldo7 {
				regulator-name = "slg51000_a_ldo7";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3750000>;
			};
		};
	};
};

&pm8350b_gpios {
	gpio-line-names = "CAM_PWR_A_CS", /* GPIO_1 */
			  "NC",
			  "NC",
			  "NC",
			  "SNAPSHOT_N",
			  "CAM_PWR_LD_EN",
			  "NC",
			  "FOCUS_N";

	cam_pwr_a_cs: cam-pwr-a-cs-state {
		pins = "gpio1";
		function = "normal";
		qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
		power-source = <1>;
		drive-push-pull;
		output-high;
	};
};

&pm8350c_gpios {
	gpio-line-names = "FL_STROBE_TRIG_WIDE", /* GPIO_1 */
			  "FL_STROBE_TRIG_TELE",
			  "NC",
			  "WLC_TXPWR_EN",
			  "NC",
			  "RGBC_IR_PWR_EN",
			  "NC",
			  "NC",
			  "WIDEC_PWR_EN";
};

&tlmm {
	gpio-line-names = "APPS_I2C_0_SDA", /* GPIO_0 */
			  "APPS_I2C_0_SCL",
			  "UWIDEC_PWR_EN",
			  "HAP_RST_N",
			  "WLC_I2C_SDA",
			  "WLC_I2C_SCL",
			  "PM8008_1_RESET_N",
			  "WLC_INT_N",
			  "OIS_TELE_I2C_SDA",
			  "OIS_TELE_I2C_SCL",
			  "PM8350_OPTION", /* GPIO_10 */
			  "NC",
			  "APPS_I2C_1_SDA",
			  "APPS_I2C_1_SCL",
			  "NC",
			  "NC",
			  "CAM1_RESET_N",
			  "LEO_CAM0_RESET_N",
			  "DEBUG_UART_TX",
			  "DEBUG_UART_RX",
			  "TS_I2C_SDA", /* GPIO_20 */
			  "TS_I2C_SCL",
			  "TS_RESET_N",
			  "TS_INT_N",
			  "DISP_RESET_N",
			  "SW_SERVICE",
			  "DISP_ERR_FG",
			  "TX_GTR_THRES_IN",
			  "NC",
			  "NC",
			  "NC", /* GPIO_30 */
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "SPK_AMP_INT_N",
			  "SPK_AMP_RESET_N",
			  "FP_INT_N",
			  "FP_RESET_N",
			  "NC", /* GPIO_40 */
			  "NC",
			  "DEBUG_GPIO0",
			  "FORCE_USB_BOOT",
			  "FP_SPI_MISO",
			  "FP_SPI_MOSI",
			  "FP_SPI_CLK",
			  "FP_SPI_CS_N",
			  "SPK_AMP_I2C_SDA",
			  "SPK_AMP_I2C_SCL",
			  "NC", /* GPIO_50 */
			  "HAP_INT_N",
			  "CAMSENSOR_I2C_SDA",
			  "CAMSENSOR_I2C_SCL",
			  "SBU_SW_OE",
			  "SBU_SW_SEL",
			  "NFC_ESE_SPI_MISO",
			  "NFC_ESE_SPI_MOSI",
			  "NFC_ESE_SPI_CLK",
			  "NFC_ESE_SPI_CS",
			  "NFC_I2C_SDA", /* GPIO_60 */
			  "NFC_I2C_SCL",
			  "NFC_EN",
			  "NFC_CLK_REQ",
			  "HST_WLAN_EN",
			  "HST_BT_EN",
			  "HW_ID_0",
			  "HW_ID_1",
			  "HST_BT_UART_CTS",
			  "HST_BT_UART_RFR",
			  "HST_BT_UART_TX", /* GPIO_70 */
			  "HST_BT_UART_RX",
			  "HAP_I2C_SDA",
			  "HAP_I2C_SCL",
			  "RF_LCD_ID_EN",
			  "RF_ID_EXTENSION",
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "HALL_INT_N", /* GPIO_80 */
			  "USB_CC_DIR",
			  "DISP_VSYNC",
			  "NC",
			  "NC",
			  "CAM_SOF_TELE",
			  "NFC_DWL_REQ",
			  "NFC_IRQ",
			  "WCD_RST_N",
			  "ALS_PROX_INT_N",
			  "NC", /* GPIO_90 */
			  "NC",
			  "TRAY_DET",
			  "UDON_SWITCH_SEL",
			  "PCIE0_RESET_N",
			  "PCIE0_CLK_REQ_N",
			  "PCIE0_WAKE_N",
			  "CAM_SOF",
			  "RF_ID_EXTENSION_2",
			  "RGBC_IR_INT",
			  "CAM_MCLK0", /* GPIO_100 */
			  "CAM_MCLK1",
			  "CAM_MCLK2",
			  "CAM_MCLK3",
			  "CAM_MCLK4",
			  "NC",
			  "CAM2_RESET_N",
			  "CCI_I2C0_SDA",
			  "CCI_I2C0_SCL",
			  "CCI_I2C1_SDA",
			  "CCI_I2C1_SCL", /* GPIO_110 */
			  "CCI_I2C2_SDA",
			  "CCI_I2C2_SCL",
			  "CCI_I2C3_SDA",
			  "CCI_I2C3_SCL",
			  "NC",
			  "PM8008_1_IRQ",
			  "CAM3_RESET_N",
			  "IMU1_INT",
			  "EXT_VD0_XVS",
			  "NC", /* GPIO_120 */
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "HAP_I2S_CLK",
			  "HAP_I2S_DOUT",
			  "HAP_TRG1",
			  "HAP_I2S_SYNC",
			  "HST_BT_WLAN_SLIMBUS_CLK",
			  "HST_BT_WLAN_SLIMBUS_DAT0", /* GPIO_130 */
			  "NC",
			  "UIM2_DETECT_EN",
			  "UIM2_DATA",
			  "UIM2_CLK",
			  "UIM2_RESET",
			  "UIM2_PRESENT",
			  "UIM1_DATA",
			  "UIM1_CLK",
			  "UIM1_RESET",
			  "TRAY_DET", /* GPIO_140 */
			  "SM_RFFE0_CLK",
			  "SM_RFFE0_DATA",
			  "SM_RFFE1_CLK",
			  "SM_RFFE1_DATA",
			  "SM_MSS_GRFC4",
			  "SM_MSS_GRFC5",
			  "SM_MSS_GRFC6",
			  "SM_MSS_GRFC7",
			  "SM_RFFE4_CLK",
			  "SM_RFFE4_DATA", /* GPIO_150 */
			  "WLAN_COEX_UART1_RX",
			  "WLAN_COEX_UART1_TX",
			  "HST_SW_CTRL",
			  "DISP_VDDR_EN",
			  "NC",
			  "NC",
			  "PA_INDICATOR_OR",
			  "TOF_RST_N",
			  "QLINK0_REQ",
			  "QLINK0_EN", /* GPIO_160 */
			  "QLINK0_WMSS_RESET_N",
			  "QLINK1_REQ",
			  "QLINK1_EN",
			  "QLINK1_WMSS_RESET_N",
			  "PM8008_2_IRQ",
			  "TELEC_PWR_EN",
			  "PM8008_2_RESET_N",
			  "WCD_SWR_TX_CLK",
			  "WCD_SWR_TX_DATA0",
			  "WCD_SWR_TX_DATA1", /* GPIO_170 */
			  "WCD_SWR_RX_CLK",
			  "WCD_SWR_RX_DATA0",
			  "WCD_SWR_RX_DATA1",
			  "SM_DMIC1_CLK",
			  "SM_DMIC1_DATA",
			  "SM_DMIC2_CLK",
			  "SM_DMIC2_DATA",
			  "SPK_AMP_I2S_CLK",
			  "SPK_AMP_I2S_WS",
			  "SPK_AMP_I2S_ASP_DIN", /* GPIO_180 */
			  "SPK_AMP_I2S_ASP_DOUT",
			  "WCD_SWR_TX_DATA2",
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "IMU_SPI_MISO",
			  "IMU_SPI_MOSI",
			  "IMU_SPI_CLK",
			  "IMU_SPI_CS_N", /* GPIO_190 */
			  "MAG_I2C_SDA",
			  "MAG_I2C_SCL",
			  "SENSOR_I2C_SDA",
			  "SENSOR_I2C_SCL",
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "HST_BLE_UART_TX",
			  "HST_BLE_UART_RX", /* GPIO_200 */
			  "HST_WLAN_UART_TX",
			  "HST_WLAN_UART_RX";
};
