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

Commit fc66e37e authored by Sarada Prasanna Garnayak's avatar Sarada Prasanna Garnayak Committed by Sudhakar Manapati
Browse files

input: synaptics_i2c_rmi4: configure gpio using pinctrl



correct the pinctrl configuration for the synaptics touch
controller. Configure the pinctrl and gpio in touch controller
suspend/resume method to avoid the current leak in the device
suspend state.

This patch is propagated from msm-3.10 kernel
(commit: 466c90bff47e1dadf4a6b79b15606f674f4bba38
input: synaptics_i2c_rmi4: configure gpio using pinctrl)

Change-Id: Ib372f70189dd35c2eca9bb69a40ec1d6f3f23f5e
Signed-off-by: default avatarSarada Prasanna Garnayak <c_sgarna@codeaurora.org>
Signed-off-by: default avatarSudhakar Manapati <smanap@codeaurora.org>
parent 7ccccd8f
Loading
Loading
Loading
Loading
+20 −22
Original line number Diff line number Diff line
@@ -3224,13 +3224,13 @@ static int synaptics_rmi4_probe(struct i2c_client *client,
		retval = synpatics_rmi4_pinctrl_select(rmi4_data, true);
		if (retval < 0)
			goto err_gpio_config;
	} else {
	}

	retval = synaptics_rmi4_gpio_configure(rmi4_data, true);
	if (retval < 0) {
		dev_err(&client->dev, "Failed to configure gpios\n");
		goto pinctrl_sleep;
	}
	}

	init_waitqueue_head(&rmi4_data->wait);
	mutex_init(&(rmi4_data->rmi4_io_ctrl_mutex));
@@ -3912,15 +3912,14 @@ static int synaptics_rmi4_suspend(struct device *dev)
								 false);
			if (retval < 0)
				dev_err(dev, "Cannot get idle pinctrl state\n");
		} else {
			retval = synaptics_rmi4_gpio_configure(rmi4_data,
								 false);
		}

		retval = synaptics_rmi4_gpio_configure(rmi4_data, false);
		if (retval < 0) {
			dev_err(dev, "failed to put gpios in suspend state\n");
			goto err_gpio_configure;
		}
	}
	}
	rmi4_data->suspended = true;

	return 0;
@@ -3977,15 +3976,14 @@ static int synaptics_rmi4_resume(struct device *dev)
			retval = synpatics_rmi4_pinctrl_select(rmi4_data, true);
			if (retval < 0)
				dev_err(dev, "Cannot get default pinctrl state\n");
			msleep(rmi4_data->board->reset_delay);
		} else {
		}

		retval = synaptics_rmi4_gpio_configure(rmi4_data, true);
		if (retval < 0) {
			dev_err(dev, "Failed to put gpios in active state\n");
			goto err_gpio_configure;
		}
	}
	}

	synaptics_rmi4_sensor_wake(rmi4_data);
	rmi4_data->touch_stopped = false;
@@ -4011,9 +4009,9 @@ err_check_configuration:
								false);
			if (retval < 0)
				dev_err(dev, "Cannot get idle pinctrl state\n");
		} else {
			synaptics_rmi4_gpio_configure(rmi4_data, false);
		}

		synaptics_rmi4_gpio_configure(rmi4_data, false);
	}
	synaptics_rmi4_regulator_lpm(rmi4_data, true);
	wake_up(&rmi4_data->wait);