Merge "vxr7200: fix dp bridge instabilities qcom-xr-smrtvwr-misc: clean up"
diff --git a/arch/arm64/boot/dts/qcom/sxr1130-svr.dtsi b/arch/arm64/boot/dts/qcom/sxr1130-svr.dtsi
index 40aceac..4dfa320 100644
--- a/arch/arm64/boot/dts/qcom/sxr1130-svr.dtsi
+++ b/arch/arm64/boot/dts/qcom/sxr1130-svr.dtsi
@@ -518,3 +518,13 @@
 &cdc_pdm_gpios {
 	status = "disabled";
 };
+
+&lcdb_ldo_vreg {
+	regulator-min-microvolt = <5700000>;
+	regulator-max-microvolt = <5700000>;
+};
+
+&lcdb_ncp_vreg {
+	regulator-min-microvolt = <5700000>;
+	regulator-max-microvolt = <5700000>;
+};
diff --git a/drivers/misc/qcom-xr-smrtvwr-misc.c b/drivers/misc/qcom-xr-smrtvwr-misc.c
index fc8796f..fe3cdc8 100644
--- a/drivers/misc/qcom-xr-smrtvwr-misc.c
+++ b/drivers/misc/qcom-xr-smrtvwr-misc.c
@@ -32,7 +32,6 @@
 	struct regulator *reg1, *reg2, *reg3;
 	int dp3p3_en_gpio = 142;
 	int wcd_en_gpio = 93;
-	int switch_gpio = 112;
 	int rgb_tck_oe_en_gpio = 108;
 
 	reg1 = devm_regulator_get(&pdev->dev, "pm660l_l6");
@@ -91,19 +90,6 @@
 	gpio_set_value(wcd_en_gpio, 1);
 	msleep(20);
 
-	rc = gpio_request(switch_gpio, "1p8_en_gpio");
-	if (rc) {
-		pr_err("%s 1p8_switch_gpio request failed\n", __func__);
-		goto gpio_switch_fail;
-	}
-	rc = gpio_direction_output(switch_gpio, 0);
-	if (rc) {
-		pr_err("%s 1p8_switch_gpio direction failed\n", __func__);
-		goto gpio_switch_fail;
-	}
-	gpio_set_value(switch_gpio, 1);
-	msleep(20);
-
 	rc = gpio_request(rgb_tck_oe_en_gpio, "rgb_tck_oe_en_gpio");
 	if (rc) {
 		pr_err("%s rgb_tck_oe_en_gpio request failed\n", __func__);
@@ -122,8 +108,6 @@
 
 gpio_oe_en_fail:
 	gpio_free(rgb_tck_oe_en_gpio);
-gpio_switch_fail:
-	gpio_free(switch_gpio);
 gpiowcd_fail:
 	gpio_free(wcd_en_gpio);
 gpio3p3_fail:
diff --git a/drivers/misc/vxr7200.c b/drivers/misc/vxr7200.c
index ad1c82c..7388ade 100644
--- a/drivers/misc/vxr7200.c
+++ b/drivers/misc/vxr7200.c
@@ -41,10 +41,8 @@
 	u32 led_drive_en1;
 	u32 led_drive_en2;
 	u32 display_1v8_en;
-	u32 mipi_sw_1v8_en;
+	u32 mipi_switch_1v8_en;
 	u32 display_res1;
-	u32 selab_gpio;
-	u32 oenab_gpio;
 	bool gpioInit;
 
 	struct i2c_client *i2c_client;
@@ -104,6 +102,7 @@
 			goto error;
 		}
 		gpio_set_value(gpio, 1);
+		msleep(20);
 		pr_debug("%s vxr7200 gpio:%d set to high\n", __func__, gpio);
 	} else {
 		ret = gpio_direction_output(gpio, 1);
@@ -112,6 +111,7 @@
 			goto error;
 		}
 		gpio_set_value(gpio, 0);
+		msleep(20);
 		pr_debug("%s vxr7200 gpio:%d set to low\n", __func__, gpio);
 	}
 	return 0;
@@ -128,62 +128,54 @@
 		rc = turnGpio(pdata, pdata->vxr_3v3_en, "vxr_3v3_en", turnOn);
 		if (rc)
 			goto gpio1Fail;
-		rc = turnGpio(pdata, pdata->led_5v_en, "led_5v_en", turnOn);
-		if (rc)
-			goto gpio2Fail;
-		rc = turnGpio(pdata, pdata->led_drive_en1,
-					"led_drive_en1", turnOn);
-		if (rc)
-			goto gpio3Fail;
-		rc = turnGpio(pdata, pdata->led_drive_en2,
-					 "led_drive_en2", turnOn);
-		if (rc)
-			goto gpio4Fail;
-		rc = turnGpio(pdata, pdata->display_1v8_en,
-					 "disp_1v8_en", turnOn);
-		if (rc)
-			goto gpio5Fail;
-		pdata->mipi_sw_1v8_en += 1100;
-		rc = turnGpio(pdata, pdata->mipi_sw_1v8_en,
-						 "mipi_sw1v8_en", turnOn);
-		if (rc)
-			goto gpio6Fail;
+
 		rc = turnGpio(pdata, pdata->display_res1,
 						 "display_res1", turnOn);
 		if (rc)
+			goto gpio2Fail;
+
+		rc = turnGpio(pdata, pdata->display_1v8_en,
+					 "disp_1v8_en", turnOn);
+		if (rc)
+			goto gpio3Fail;
+
+		rc = turnGpio(pdata, pdata->mipi_switch_1v8_en,
+						 "mipi_switch_1v8_en", turnOn);
+		if (rc)
+			goto gpio4Fail;
+
+		rc = turnGpio(pdata, pdata->led_5v_en, "led_5v_en", turnOn);
+		if (rc)
+			goto gpio5Fail;
+
+		rc = turnGpio(pdata, pdata->led_drive_en1,
+					"led_drive_en1", turnOn);
+		if (rc)
+			goto gpio6Fail;
+
+		rc = turnGpio(pdata, pdata->led_drive_en2,
+					 "led_drive_en2", turnOn);
+		if (rc)
 			goto gpio7Fail;
 	}
+	return;
 
 gpio7Fail:
-	gpio_free(pdata->display_res1);
-gpio6Fail:
-	gpio_free(pdata->mipi_sw_1v8_en);
-gpio5Fail:
-	gpio_free(pdata->display_1v8_en);
-gpio4Fail:
 	gpio_free(pdata->led_drive_en2);
-gpio3Fail:
+gpio6Fail:
 	gpio_free(pdata->led_drive_en1);
-gpio2Fail:
+gpio5Fail:
 	gpio_free(pdata->led_5v_en);
+gpio4Fail:
+	gpio_free(pdata->mipi_switch_1v8_en);
+gpio3Fail:
+	gpio_free(pdata->display_1v8_en);
+gpio2Fail:
+	gpio_free(pdata->display_res1);
 gpio1Fail:
 	gpio_free(pdata->vxr_3v3_en);
 }
 
-static void vxr7200_free_gpios(struct vxr7200 *pdata)
-{
-	if (pdata) {
-		gpio_free(pdata->vxr_3v3_en);
-		gpio_free(pdata->led_5v_en);
-		gpio_free(pdata->led_drive_en1);
-		gpio_free(pdata->led_drive_en2);
-		gpio_free(pdata->display_1v8_en);
-		gpio_free(pdata->mipi_sw_1v8_en);
-		gpio_free(pdata->display_res1);
-	}
-}
-
-
 static int vxr7200_parse_dt(struct device *dev,
 				struct vxr7200 *pdata)
 {
@@ -225,10 +217,10 @@
 		rc = -EINVAL;
 	}
 
-	pdata->mipi_sw_1v8_en =
+	pdata->mipi_switch_1v8_en =
 		of_get_named_gpio(np, "qcom,switch-power-gpio", 0);
-	if (!gpio_is_valid(pdata->mipi_sw_1v8_en)) {
-		pr_err("mipi_sw_1v8_en gpio not specified\n");
+	if (!gpio_is_valid(pdata->mipi_switch_1v8_en)) {
+		pr_err("mipi_switch_1v8_en gpio not specified\n");
 		rc = -EINVAL;
 	}
 
@@ -242,39 +234,15 @@
 	if (!rc)
 		vxr7200_set_gpios(pdata, true);
 
-	pdata->selab_gpio = of_get_named_gpio(np, "qcom,selab-gpio", 0);
-	if (!gpio_is_valid(pdata->selab_gpio)) {
-		pr_err("selab_gpio gpio not specified\n");
-		rc = -EINVAL;
-		goto gpio_selab_fail;
-	} else
-		turnGpio(pdata, pdata->selab_gpio, "selab_gpio", 0);
-
-	pdata->oenab_gpio = of_get_named_gpio(np, "qcom,oenab-gpio", 0);
-	if (!gpio_is_valid(pdata->oenab_gpio)) {
-		pr_err("oenab_gpio gpio not specified\n");
-		rc = -EINVAL;
-		goto gpio_oenab_fail;
-	} else
-		turnGpio(pdata, pdata->oenab_gpio, "oenab_gpio", 0);
-
 	if (!pdata->gpioInit)
 		pdata->gpioInit = true;
 
 	return rc;
-
-gpio_oenab_fail:
-	gpio_free(pdata->oenab_gpio);
-gpio_selab_fail:
-	gpio_free(pdata->selab_gpio);
-	vxr7200_free_gpios(pdata);
-	return rc;
 }
 
 static void vxr7200_display_pwr_enable_vregs(struct vxr7200 *pdata)
 {
 	int rc = 0;
-
 	pdata->vddio = devm_regulator_get(pdata->dev, "pm660_l11");
 	rc = PTR_RET(pdata->vddio);
 	if (rc) {
@@ -286,12 +254,8 @@
 		pr_err("Load setting failed for vddio %s\n", __func__);
 		goto vddio_fail;
 	}
-	rc = regulator_set_voltage(pdata->vddio, 1800000, 1800000);
-	if (rc) {
-		pr_err("Set voltage(vddio) fail, rc=%d %s\n", rc, __func__);
-		goto vddio_fail;
-	}
 	rc = regulator_enable(pdata->vddio);
+	msleep(20);
 	if (rc) {
 		pr_err("enable failed for vddio, rc=%d %s\n", rc, __func__);
 		goto vddio_fail;
@@ -308,16 +272,12 @@
 		pr_err("Load Setting failed for lab %s\n", __func__);
 		goto lab_fail;
 	}
-	rc = regulator_set_voltage(pdata->lab, 4600000, 6000000);
-	if (rc) {
-		pr_err("Set voltage(lab) fail, rc=%d %s\n", rc, __func__);
-		goto lab_fail;
-	}
 	rc = regulator_enable(pdata->lab);
 	if (rc) {
 		pr_err("enable failed for lab, rc=%d %s\n", rc, __func__);
 		goto lab_fail;
 	}
+	msleep(20);
 
 	pdata->ibb = devm_regulator_get(pdata->dev, "lcdb_ncp");
 	rc = PTR_RET(pdata->ibb);
@@ -330,16 +290,12 @@
 		pr_err("Load Setting failed for ibb %s\n", __func__);
 		goto ibb_fail;
 	}
-	rc = regulator_set_voltage(pdata->ibb, 4600000, 6000000);
-	if (rc) {
-		pr_err("Set voltage(ibb) fail, rc=%d %s\n", rc, __func__);
-		goto ibb_fail;
-	}
 	rc = regulator_enable(pdata->ibb);
 	if (rc) {
 		pr_err("enable failed for ibb, rc=%d %s\n", rc, __func__);
 		goto ibb_fail;
 	}
+	msleep(20);
 
 	return;