Loading drivers/input/touchscreen/synaptics_tcm/synaptics_tcm_core.c +39 −2 Original line number Diff line number Diff line Loading @@ -56,6 +56,10 @@ #define SYNA_LOAD_MAX_UA 30000 #define SYNA_VDD_VTG_MIN_UV 1800000 #define SYNA_VDD_VTG_MAX_UV 2000000 #define NOTIFIER_PRIORITY 2 #define RESPONSE_TIMEOUT_MS 3000 Loading Loading @@ -1917,6 +1921,22 @@ static int syna_tcm_enable_regulator(struct syna_tcm_hcd *tcm_hcd, bool en) } if (tcm_hcd->bus_reg) { retval = regulator_set_voltage(tcm_hcd->bus_reg, SYNA_VDD_VTG_MIN_UV, SYNA_VDD_VTG_MAX_UV); if (retval) { LOGE(tcm_hcd->pdev->dev.parent, "set bus regulator voltage failed\n"); goto exit; } retval = regulator_set_load(tcm_hcd->bus_reg, SYNA_LOAD_MAX_UA); if (retval) { LOGE(tcm_hcd->pdev->dev.parent, "set bus regulator load failed\n"); goto exit; } retval = regulator_enable(tcm_hcd->bus_reg); if (retval < 0) { LOGE(tcm_hcd->pdev->dev.parent, Loading Loading @@ -1965,8 +1985,12 @@ static int syna_tcm_enable_regulator(struct syna_tcm_hcd *tcm_hcd, bool en) } disable_bus_reg: if (tcm_hcd->bus_reg) if (tcm_hcd->bus_reg) { regulator_set_load(tcm_hcd->bus_reg, 0); regulator_set_voltage(tcm_hcd->bus_reg, 0, SYNA_VDD_VTG_MAX_UV); regulator_disable(tcm_hcd->bus_reg); } exit: return retval; Loading Loading @@ -2880,6 +2904,12 @@ static int syna_tcm_resume(struct device *dev) if (!tcm_hcd->in_suspend) return 0; retval = syna_tcm_enable_regulator(tcm_hcd, true); if (retval < 0) { LOGE(tcm_hcd->pdev->dev.parent, "Failed to enable regulators\n"); } retval = pinctrl_select_state( tcm_hcd->ts_pinctrl, tcm_hcd->pinctrl_state_active); Loading Loading @@ -2974,6 +3004,7 @@ static int syna_tcm_suspend(struct device *dev) { struct syna_tcm_module_handler *mod_handler; struct syna_tcm_hcd *tcm_hcd = dev_get_drvdata(dev); int retval; if (tcm_hcd->in_suspend || !tcm_hcd->init_okay) return 0; Loading @@ -2996,11 +3027,17 @@ static int syna_tcm_suspend(struct device *dev) } } retval = syna_tcm_enable_regulator(tcm_hcd, false); if (retval < 0) { LOGE(tcm_hcd->pdev->dev.parent, "Failed to disable regulators\n"); } mutex_unlock(&mod_pool.mutex); tcm_hcd->in_suspend = true; return 0; return retval; } #endif Loading Loading
drivers/input/touchscreen/synaptics_tcm/synaptics_tcm_core.c +39 −2 Original line number Diff line number Diff line Loading @@ -56,6 +56,10 @@ #define SYNA_LOAD_MAX_UA 30000 #define SYNA_VDD_VTG_MIN_UV 1800000 #define SYNA_VDD_VTG_MAX_UV 2000000 #define NOTIFIER_PRIORITY 2 #define RESPONSE_TIMEOUT_MS 3000 Loading Loading @@ -1917,6 +1921,22 @@ static int syna_tcm_enable_regulator(struct syna_tcm_hcd *tcm_hcd, bool en) } if (tcm_hcd->bus_reg) { retval = regulator_set_voltage(tcm_hcd->bus_reg, SYNA_VDD_VTG_MIN_UV, SYNA_VDD_VTG_MAX_UV); if (retval) { LOGE(tcm_hcd->pdev->dev.parent, "set bus regulator voltage failed\n"); goto exit; } retval = regulator_set_load(tcm_hcd->bus_reg, SYNA_LOAD_MAX_UA); if (retval) { LOGE(tcm_hcd->pdev->dev.parent, "set bus regulator load failed\n"); goto exit; } retval = regulator_enable(tcm_hcd->bus_reg); if (retval < 0) { LOGE(tcm_hcd->pdev->dev.parent, Loading Loading @@ -1965,8 +1985,12 @@ static int syna_tcm_enable_regulator(struct syna_tcm_hcd *tcm_hcd, bool en) } disable_bus_reg: if (tcm_hcd->bus_reg) if (tcm_hcd->bus_reg) { regulator_set_load(tcm_hcd->bus_reg, 0); regulator_set_voltage(tcm_hcd->bus_reg, 0, SYNA_VDD_VTG_MAX_UV); regulator_disable(tcm_hcd->bus_reg); } exit: return retval; Loading Loading @@ -2880,6 +2904,12 @@ static int syna_tcm_resume(struct device *dev) if (!tcm_hcd->in_suspend) return 0; retval = syna_tcm_enable_regulator(tcm_hcd, true); if (retval < 0) { LOGE(tcm_hcd->pdev->dev.parent, "Failed to enable regulators\n"); } retval = pinctrl_select_state( tcm_hcd->ts_pinctrl, tcm_hcd->pinctrl_state_active); Loading Loading @@ -2974,6 +3004,7 @@ static int syna_tcm_suspend(struct device *dev) { struct syna_tcm_module_handler *mod_handler; struct syna_tcm_hcd *tcm_hcd = dev_get_drvdata(dev); int retval; if (tcm_hcd->in_suspend || !tcm_hcd->init_okay) return 0; Loading @@ -2996,11 +3027,17 @@ static int syna_tcm_suspend(struct device *dev) } } retval = syna_tcm_enable_regulator(tcm_hcd, false); if (retval < 0) { LOGE(tcm_hcd->pdev->dev.parent, "Failed to disable regulators\n"); } mutex_unlock(&mod_pool.mutex); tcm_hcd->in_suspend = true; return 0; return retval; } #endif Loading