Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8b09d98 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "input: touchscreen: synaptics_tcm: Configure touch regulator"

parents 5c107ecb 8e007bea
Loading
Loading
Loading
Loading
+39 −2
Original line number Diff line number Diff line
@@ -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
@@ -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,
@@ -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;
@@ -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);
@@ -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;
@@ -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