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

Commit 040eae64 authored by Amy Maloche's avatar Amy Maloche Committed by Gerrit - the friendly Code Review server
Browse files

input: synaptics_i2c_rmi4: Properly initialize touch controller



When initializing the touch controller, set sleep mode off bit and
re-check configuration in order to save power.

This patch is propagated from msm-3.10 kernel
(commit: fea8e49c2a63bd7a6337298ad84acdf3136076bd
input: synaptics_i2c_rmi4: Properly initialize touch controller)

Change-Id: I70cc294a536c69109a6292a671f85593ffb09e3e
Signed-off-by: default avatarAmy Maloche <amaloche@codeaurora.org>
parent 314c221a
Loading
Loading
Loading
Loading
+40 −4
Original line number Diff line number Diff line
@@ -67,10 +67,10 @@
#define F11_STD_CTRL_LEN 10
#define F11_STD_DATA_LEN 12

#define NORMAL_OPERATION (0 << 0)
#define SENSOR_SLEEP (1 << 0)
#define NO_SLEEP_OFF (0 << 2)
#define NO_SLEEP_ON (1 << 2)
#define NORMAL_OPERATION 0
#define SENSOR_SLEEP 1
#define NO_SLEEP_OFF 0
#define NO_SLEEP_ON 1

enum device_status {
	STATUS_NO_ERROR = 0x00,
@@ -111,6 +111,13 @@ static int synaptics_rmi4_i2c_write(struct synaptics_rmi4_data *rmi4_data,

static int synaptics_rmi4_reset_device(struct synaptics_rmi4_data *rmi4_data);

static void synaptics_rmi4_sensor_wake(struct synaptics_rmi4_data *rmi4_data);

static void synaptics_rmi4_sensor_sleep(struct synaptics_rmi4_data *rmi4_data);

static int synaptics_rmi4_check_configuration(struct synaptics_rmi4_data
		*rmi4_data);

#ifdef CONFIG_PM
static int synaptics_rmi4_suspend(struct device *dev);

@@ -2958,6 +2965,9 @@ static int synaptics_rmi4_probe(struct i2c_client *client,
			goto err_sysfs;
		}
	}

	synaptics_rmi4_sensor_wake(rmi4_data);

	retval = synaptics_rmi4_irq_enable(rmi4_data, true);
	if (retval < 0) {
		dev_err(&client->dev,
@@ -2966,6 +2976,12 @@ static int synaptics_rmi4_probe(struct i2c_client *client,
		goto err_sysfs;
	}

	retval = synaptics_rmi4_check_configuration(rmi4_data);
	if (retval < 0) {
		dev_err(&client->dev, "Failed to check configuration\n");
		return retval;
	}

	return retval;

err_sysfs:
@@ -3143,6 +3159,10 @@ static void synaptics_rmi4_sensor_wake(struct synaptics_rmi4_data *rmi4_data)
		return;
	}

	if (device_ctrl.nosleep == NO_SLEEP_OFF &&
		device_ctrl.sleep_mode == NORMAL_OPERATION)
		return;

	device_ctrl.sleep_mode = NORMAL_OPERATION;
	device_ctrl.nosleep = NO_SLEEP_OFF;

@@ -3519,6 +3539,22 @@ static const struct dev_pm_ops synaptics_rmi4_dev_pm_ops = {
static const struct dev_pm_ops synaptics_rmi4_dev_pm_ops = {
};
#endif
#else
static void synaptics_rmi4_sensor_wake(struct synaptics_rmi4_data *rmi4_data)
{
	return;
};

static void synaptics_rmi4_sensor_sleep(struct synaptics_rmi4_data *rmi4_data)
{
	return;
};

static int synaptics_rmi4_check_configuration(struct synaptics_rmi4_data
						*rmi4_data)
{
	return 0;
};
#endif

static const struct i2c_device_id synaptics_rmi4_id_table[] = {