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;