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

/dts-v1/;

#include "sm8250-sony-xperia-edo.dtsi"

/ {
	model = "Sony Xperia 1 II";
	compatible = "sony,pdx203-generic", "qcom,sm8250";
	chassis-type = "handset";
};

/delete-node/ &vreg_l7f_1p8;

&i2c5 {
	clock-frequency = <400000>;
	status = "okay";

	pmic@75 {
		compatible = "dlg,slg51000";
		reg = <0x75>;
		dlg,cs-gpios = <&tlmm 69 GPIO_ACTIVE_HIGH>;
		vin5-supply = <&vreg_s1f_1p2>;
		vin6-supply = <&vreg_s1f_1p2>;

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

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

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

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

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

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

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

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

&i2c15 {
	pmic@75 {
		compatible = "dlg,slg51000";
		reg = <0x75>;
		dlg,cs-gpios = <&tlmm 71 GPIO_ACTIVE_HIGH>;
		vin5-supply = <&vreg_l2f_1p3>;
		vin6-supply = <&vreg_l2f_1p3>;

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

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

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

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

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

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

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

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

&pm8009_gpios {
	gpio-line-names = "NC", /* GPIO_1 */
			  "CAM_PWR_LD_EN",
			  "WIDEC_PWR_EN",
			  "NC";
};

&pm8150_gpios {
	gpio-line-names = "VOL_DOWN_N", /* GPIO_1 */
			  "OPTION_2",
			  "NC",
			  "PM_SLP_CLK_IN",
			  "OPTION_1",
			  "NC",
			  "NC",
			  "SP_ARI_PWR_ALARM",
			  "NC",
			  "NC"; /* GPIO_10 */
};

&pm8150b_gpios {
	gpio-line-names = "SNAPSHOT_N", /* GPIO_1 */
			  "FOCUS_N",
			  "NC",
			  "NC",
			  "RF_LCD_ID_EN",
			  "NC",
			  "NC",
			  "LCD_ID",
			  "NC",
			  "WLC_EN_N", /* GPIO_10 */
			  "NC",
			  "RF_ID";
};

&pm8150l_gpios {
	gpio-line-names = "NC", /* GPIO_1 */
			  "PM3003A_EN",
			  "NC",
			  "NC",
			  "NC",
			  "AUX2_THERM",
			  "BB_HP_EN",
			  "FP_LDO_EN",
			  "PMX_RESET_N",
			  "AUX3_THERM", /* GPIO_10 */
			  "DTV_PWR_EN",
			  "PM3003A_MODE";
};

&tlmm {
	gpio-line-names = "AP_CTI_IN", /* GPIO_0 */
			  "MDM2AP_ERR_FATAL",
			  "AP_CTI_OUT",
			  "MDM2AP_STATUS",
			  "NFC_I2C_SDA",
			  "NFC_I2C_SCL",
			  "NFC_EN",
			  "NFC_CLK_REQ",
			  "NFC_ESE_PWR_REQ",
			  "DVDT_WRT_DET_AND",
			  "SPK_AMP_RESET_N", /* GPIO_10 */
			  "SPK_AMP_INT_N",
			  "APPS_I2C_1_SDA",
			  "APPS_I2C_1_SCL",
			  "NC",
			  "TX_GTR_THRES_IN",
			  "HST_BT_UART_CTS",
			  "HST_BT_UART_RFR",
			  "HST_BT_UART_TX",
			  "HST_BT_UART_RX",
			  "HST_WLAN_EN", /* GPIO_20 */
			  "HST_BT_EN",
			  "RGBC_IR_PWR_EN",
			  "FP_INT_N",
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "NFC_ESE_SPI_MISO",
			  "NFC_ESE_SPI_MOSI",
			  "NFC_ESE_SPI_SCLK", /* GPIO_30 */
			  "NFC_ESE_SPI_CS_N",
			  "WCD_RST_N",
			  "NC",
			  "SDM_DEBUG_UART_TX",
			  "SDM_DEBUG_UART_RX",
			  "TS_I2C_SDA",
			  "TS_I2C_SCL",
			  "TS_INT_N",
			  "FP_SPI_MISO", /* GPIO_40 */
			  "FP_SPI_MOSI",
			  "FP_SPI_SCLK",
			  "FP_SPI_CS_N",
			  "APPS_I2C_0_SDA",
			  "APPS_I2C_0_SCL",
			  "DISP_ERR_FG",
			  "UIM2_DETECT_EN",
			  "NC",
			  "NC",
			  "NC", /* GPIO_50 */
			  "NC",
			  "MDM_UART_CTS",
			  "MDM_UART_RFR",
			  "MDM_UART_TX",
			  "MDM_UART_RX",
			  "AP2MDM_STATUS",
			  "AP2MDM_ERR_FATAL",
			  "MDM_IPC_HS_UART_TX",
			  "MDM_IPC_HS_UART_RX",
			  "NC", /* GPIO_60 */
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "USB_CC_DIR",
			  "DISP_VSYNC",
			  "NC",
			  "NC",
			  "CAM_PWR_B_CS",
			  "NC", /* GPIO_70 */
			  "CAM_PWR_A_CS",
			  "SBU_SW_SEL",
			  "SBU_SW_OE",
			  "FP_RESET_N",
			  "FP_RESET_N",
			  "DISP_RESET_N",
			  "DEBUG_GPIO0",
			  "TRAY_DET",
			  "CAM2_RST_N",
			  "PCIE0_RST_N",
			  "PCIE0_CLK_REQ_N", /* GPIO_80 */
			  "PCIE0_WAKE_N",
			  "DVDT_ENABLE",
			  "DVDT_WRT_DET_OR",
			  "NC",
			  "PCIE2_RST_N",
			  "PCIE2_CLK_REQ_N",
			  "PCIE2_WAKE_N",
			  "MDM_VFR_IRQ0",
			  "MDM_VFR_IRQ1",
			  "SW_SERVICE", /* GPIO_90 */
			  "CAM_SOF",
			  "CAM1_RST_N",
			  "CAM0_RST_N",
			  "CAM0_MCLK",
			  "CAM1_MCLK",
			  "CAM2_MCLK",
			  "CAM3_MCLK",
			  "CAM4_MCLK",
			  "TOF_RST_N",
			  "NC", /* GPIO_100 */
			  "CCI0_I2C_SDA",
			  "CCI0_I2C_SCL",
			  "CCI1_I2C_SDA",
			  "CCI1_I2C_SCL_",
			  "CCI2_I2C_SDA",
			  "CCI2_I2C_SCL",
			  "CCI3_I2C_SDA",
			  "CCI3_I2C_SCL",
			  "CAM3_RST_N",
			  "NFC_DWL_REQ", /* GPIO_110 */
			  "NFC_IRQ",
			  "XVS",
			  "NC",
			  "RF_ID_EXTENSION",
			  "SPK_AMP_I2C_SDA",
			  "SPK_AMP_I2C_SCL",
			  "NC",
			  "NC",
			  "WLC_I2C_SDA",
			  "WLC_I2C_SCL", /* GPIO_120 */
			  "ACC_COVER_OPEN",
			  "ALS_PROX_INT_N",
			  "ACCEL_INT",
			  "WLAN_SW_CTRL",
			  "CAMSENSOR_I2C_SDA",
			  "CAMSENSOR_I2C_SCL",
			  "UDON_SWITCH_SEL",
			  "WDOG_DISABLE",
			  "BAROMETER_INT",
			  "NC", /* GPIO_130 */
			  "NC",
			  "FORCED_USB_BOOT",
			  "NC",
			  "NC",
			  "WLC_INT_N",
			  "NC",
			  "NC",
			  "RGBC_IR_INT",
			  "NC",
			  "NC", /* GPIO_140 */
			  "NC",
			  "BT_SLIMBUS_CLK",
			  "BT_SLIMBUS_DATA",
			  "HW_ID_0",
			  "HW_ID_1",
			  "WCD_SWR_TX_CLK",
			  "WCD_SWR_TX_DATA0",
			  "WCD_SWR_TX_DATA1",
			  "WCD_SWR_RX_CLK",
			  "WCD_SWR_RX_DATA0", /* GPIO_150 */
			  "WCD_SWR_RX_DATA1",
			  "SDM_DMIC_CLK1",
			  "SDM_DMIC_DATA1",
			  "SDM_DMIC_CLK2",
			  "SDM_DMIC_DATA2",
			  "SPK_AMP_I2S_CLK",
			  "SPK_AMP_I2S_WS",
			  "SPK_AMP_I2S_ASP_DIN",
			  "SPK_AMP_I2S_ASP_DOUT",
			  "COMPASS_I2C_SDA", /* GPIO_160 */
			  "COMPASS_I2C_SCL",
			  "NC",
			  "NC",
			  "SSC_SPI_1_MISO",
			  "SSC_SPI_1_MOSI",
			  "SSC_SPI_1_CLK",
			  "SSC_SPI_1_CS_N",
			  "NC",
			  "NC",
			  "SSC_SENSOR_I2C_SDA", /* GPIO_170 */
			  "SSC_SENSOR_I2C_SCL",
			  "NC",
			  "NC",
			  "NC",
			  "NC",
			  "HST_BLE_SNS_UART6_TX",
			  "HST_BLE_SNS_UART6_RX",
			  "HST_WLAN_UART_TX",
			  "HST_WLAN_UART_RX";

	cam_pwr_b_cs: cam-pwr-b-state {
		pins = "gpio69";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
		output-low;
	};

	cam_pwr_a_cs: cam-pwr-a-state {
		pins = "gpio71";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
		output-low;
	};
};
