linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] EDT-FT5x06 Fixes and improvments
@ 2020-02-27 11:28 Marco Felsch
  2020-02-27 11:28 ` [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access Marco Felsch
                   ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: Marco Felsch @ 2020-02-27 11:28 UTC (permalink / raw)
  To: dmitry.torokhov, andriy.shevchenko, hdegoede, LW; +Cc: linux-input, kernel

Hi,

first this series fixes a possible undefined register access for
ev-ft5726 devices.

This series also includes the v4 of the improved pm ops. Please check
my notes I made on the patch.

Last but least it adds the support for async probe which is important
for fast booting because devices having a reset-pin specified sleeps
300ms..

Regards,
  Marco

Ahmad Fatoum (1):
  Input: edt-ft5x06 - prefer asynchronous probe

Marco Felsch (3):
  Input: edt-ft5x06 - fix get_default register write access
  Input: edt-ft5x06 - move parameter restore into helper
  Input: edt-ft5x06 - improve power management operations

 drivers/input/touchscreen/edt-ft5x06.c | 179 ++++++++++++++++++++++---
 1 file changed, 157 insertions(+), 22 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access
  2020-02-27 11:28 [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
@ 2020-02-27 11:28 ` Marco Felsch
  2020-05-09 19:05   ` Dmitry Torokhov
  2020-02-27 11:28 ` [PATCH 2/4] Input: edt-ft5x06 - move parameter restore into helper Marco Felsch
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Marco Felsch @ 2020-02-27 11:28 UTC (permalink / raw)
  To: dmitry.torokhov, andriy.shevchenko, hdegoede, LW; +Cc: linux-input, kernel

Since commit b6eba86030bf ("Input: edt-ft5x06 - add offset support for
ev-ft5726") offset-x and offset-y is supported. Devices using those
offset parameters don't support the offset parameter so we need to add
the NO_REGISTER check for edt_ft5x06_ts_get_defaults().

Fixes: b6eba86030bf ("Input: edt-ft5x06 - add offset support for ev-ft5726")
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 drivers/input/touchscreen/edt-ft5x06.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index d2587724c52a..9b8450794a8a 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -938,19 +938,25 @@ static void edt_ft5x06_ts_get_defaults(struct device *dev,
 
 	error = device_property_read_u32(dev, "offset", &val);
 	if (!error) {
-		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, val);
+		if (reg_addr->reg_offset != NO_REGISTER)
+			edt_ft5x06_register_write(tsdata,
+						  reg_addr->reg_offset, val);
 		tsdata->offset = val;
 	}
 
 	error = device_property_read_u32(dev, "offset-x", &val);
 	if (!error) {
-		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_x, val);
+		if (reg_addr->reg_offset_x != NO_REGISTER)
+			edt_ft5x06_register_write(tsdata,
+						  reg_addr->reg_offset_x, val);
 		tsdata->offset_x = val;
 	}
 
 	error = device_property_read_u32(dev, "offset-y", &val);
 	if (!error) {
-		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_y, val);
+		if (reg_addr->reg_offset_y != NO_REGISTER)
+			edt_ft5x06_register_write(tsdata,
+						  reg_addr->reg_offset_y, val);
 		tsdata->offset_y = val;
 	}
 }
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/4] Input: edt-ft5x06 - move parameter restore into helper
  2020-02-27 11:28 [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
  2020-02-27 11:28 ` [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access Marco Felsch
@ 2020-02-27 11:28 ` Marco Felsch
  2020-05-09 19:06   ` Dmitry Torokhov
  2020-02-27 11:28 ` [PATCH 3/4] Input: edt-ft5x06 - improve power management operations Marco Felsch
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Marco Felsch @ 2020-02-27 11:28 UTC (permalink / raw)
  To: dmitry.torokhov, andriy.shevchenko, hdegoede, LW; +Cc: linux-input, kernel

We need to restore the parameters if we switch between the
factory/work mode and during the resume process if we switched off the
power-supply. Therefore refactor edt_ft5x06_work_mode() and move the
"restore the parameters" into a helper routine so we can reuse it later.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 drivers/input/touchscreen/edt-ft5x06.c | 43 ++++++++++++++------------
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index 9b8450794a8a..bb9107093796 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -527,6 +527,29 @@ static const struct attribute_group edt_ft5x06_attr_group = {
 	.attrs = edt_ft5x06_attrs,
 };
 
+static void edt_ft5x06_restore_reg_parameters(struct edt_ft5x06_ts_data *tsdata)
+{
+	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
+
+	edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold,
+				  tsdata->threshold);
+	edt_ft5x06_register_write(tsdata, reg_addr->reg_gain,
+				  tsdata->gain);
+	if (reg_addr->reg_offset != NO_REGISTER)
+		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset,
+					  tsdata->offset);
+	if (reg_addr->reg_offset_x != NO_REGISTER)
+		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_x,
+					  tsdata->offset_x);
+	if (reg_addr->reg_offset_y != NO_REGISTER)
+		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_y,
+					  tsdata->offset_y);
+	if (reg_addr->reg_report_rate != NO_REGISTER)
+		edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate,
+				  tsdata->report_rate);
+
+}
+
 #ifdef CONFIG_DEBUG_FS
 static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts_data *tsdata)
 {
@@ -592,7 +615,6 @@ static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_data *tsdata)
 {
 	struct i2c_client *client = tsdata->client;
 	int retries = EDT_SWITCH_MODE_RETRIES;
-	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
 	int ret;
 	int error;
 
@@ -624,24 +646,7 @@ static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_data *tsdata)
 	kfree(tsdata->raw_buffer);
 	tsdata->raw_buffer = NULL;
 
-	/* restore parameters */
-	edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold,
-				  tsdata->threshold);
-	edt_ft5x06_register_write(tsdata, reg_addr->reg_gain,
-				  tsdata->gain);
-	if (reg_addr->reg_offset != NO_REGISTER)
-		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset,
-					  tsdata->offset);
-	if (reg_addr->reg_offset_x != NO_REGISTER)
-		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_x,
-					  tsdata->offset_x);
-	if (reg_addr->reg_offset_y != NO_REGISTER)
-		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_y,
-					  tsdata->offset_y);
-	if (reg_addr->reg_report_rate != NO_REGISTER)
-		edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate,
-				  tsdata->report_rate);
-
+	edt_ft5x06_restore_reg_parameters(tsdata);
 	enable_irq(client->irq);
 
 	return 0;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 3/4] Input: edt-ft5x06 - improve power management operations
  2020-02-27 11:28 [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
  2020-02-27 11:28 ` [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access Marco Felsch
  2020-02-27 11:28 ` [PATCH 2/4] Input: edt-ft5x06 - move parameter restore into helper Marco Felsch
@ 2020-02-27 11:28 ` Marco Felsch
  2020-05-09 21:21   ` Dmitry Torokhov
  2020-02-27 11:28 ` [PATCH 4/4] Input: edt-ft5x06 - prefer asynchronous probe Marco Felsch
  2020-03-09  6:44 ` [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
  4 siblings, 1 reply; 15+ messages in thread
From: Marco Felsch @ 2020-02-27 11:28 UTC (permalink / raw)
  To: dmitry.torokhov, andriy.shevchenko, hdegoede, LW; +Cc: linux-input, kernel

It is possible to bring the device into a deep sleep state. To exit this
state the reset or wakeup pin must be toggeled as documented in [1].
Because of the poor documentation I used the several downstream kernels
[2] and other applications notes [3] to indentify the related registers.

Furthermore I added the support to disable the device completely which
is obviously the most effective power-saving mechanism. This mechanism
needs the reset pin to ensure the power-up/down sequence.

We can't apply any of these power-saving mechanism if both pins are
missing (not connected) or if it is a wakeup device.

[1] https://www.newhavendisplay.com/appnotes/datasheets/touchpanel/FT5x26.pdf
    https://www.newhavendisplay.com/appnotes/datasheets/touchpanel/FT5x06.pdf
[2] https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/input/touchscreen/ft5x_ts.c
    https://github.com/Pablito2020/focaltech-touch-driver/blob/master/ft5336_driver.c
[3] https://www.newhavendisplay.com/appnotes/datasheets/touchpanel/FT5x16_registers.pdf

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
v4:
- improve suspend modi handling
- restore configuration if poweroff suspend mode was selected
- check return values during resume
- add comments about the delays
- adapt commit message

v3:
- drop enable/disable_irq_wake()

v2:
- adapt commit message
- don't return errors during suspend/resume
- replace dev_err() by dev_warn()
- add support to disable the regulator too

 drivers/input/touchscreen/edt-ft5x06.c | 123 +++++++++++++++++++++++++
 1 file changed, 123 insertions(+)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index bb9107093796..0babe6a25fe3 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -38,6 +38,9 @@
 #define WORK_REGISTER_NUM_X		0x33
 #define WORK_REGISTER_NUM_Y		0x34
 
+#define PMOD_REGISTER_ACTIVE		0x00
+#define PMOD_REGISTER_HIBERNATE		0x03
+
 #define M09_REGISTER_THRESHOLD		0x80
 #define M09_REGISTER_GAIN		0x92
 #define M09_REGISTER_OFFSET		0x93
@@ -53,6 +56,7 @@
 
 #define WORK_REGISTER_OPMODE		0x3c
 #define FACTORY_REGISTER_OPMODE		0x01
+#define PMOD_REGISTER_OPMODE		0xa5
 
 #define TOUCH_EVENT_DOWN		0x00
 #define TOUCH_EVENT_UP			0x01
@@ -65,6 +69,12 @@
 #define EDT_RAW_DATA_RETRIES		100
 #define EDT_RAW_DATA_DELAY		1000 /* usec */
 
+enum edt_pmode {
+	EDT_PMODE_NOT_SUPPORTED,
+	EDT_PMODE_HIBERNATE,
+	EDT_PMODE_POWEROFF,
+};
+
 enum edt_ver {
 	EDT_M06,
 	EDT_M09,
@@ -103,6 +113,7 @@ struct edt_ft5x06_ts_data {
 
 	struct mutex mutex;
 	bool factory_mode;
+	enum edt_pmode suspend_mode;
 	int threshold;
 	int gain;
 	int offset;
@@ -1125,6 +1136,19 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 		return error;
 	}
 
+	/*
+	 * Check which sleep modes we can support. Power-off requieres the
+	 * reset-pin to ensure correct power-down/power-up behaviour. Start with
+	 * the EDT_PMODE_POWEROFF test since this is the deepest possible sleep
+	 * mode.
+	 */
+	if (tsdata->reset_gpio)
+		tsdata->suspend_mode = EDT_PMODE_POWEROFF;
+	else if (tsdata->wake_gpio)
+		tsdata->suspend_mode = EDT_PMODE_HIBERNATE;
+	else
+		tsdata->suspend_mode = EDT_PMODE_NOT_SUPPORTED;
+
 	if (tsdata->wake_gpio) {
 		usleep_range(5000, 6000);
 		gpiod_set_value_cansleep(tsdata->wake_gpio, 1);
@@ -1238,6 +1262,104 @@ static int edt_ft5x06_ts_remove(struct i2c_client *client)
 	return 0;
 }
 
+static int __maybe_unused edt_ft5x06_ts_suspend(struct device *dev)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+	struct gpio_desc *reset_gpio = tsdata->reset_gpio;
+	int ret;
+
+	if (device_may_wakeup(dev))
+		return 0;
+
+	if (tsdata->suspend_mode == EDT_PMODE_NOT_SUPPORTED)
+		return 0;
+
+	/* Enter hibernate mode. */
+	ret = edt_ft5x06_register_write(tsdata, PMOD_REGISTER_OPMODE,
+					PMOD_REGISTER_HIBERNATE);
+	if (ret)
+		dev_warn(dev, "Failed to set hibernate mode\n");
+
+	if (tsdata->suspend_mode == EDT_PMODE_HIBERNATE)
+		return 0;
+
+	/*
+	 * Power-off according the datasheet. Cut the power may leaf the irq
+	 * line in an undefined state depending on the host pull resistor
+	 * settings. Disable the irq to avoid adjusting each host till the
+	 * device is back in a full functional state.
+	 */
+	disable_irq(tsdata->client->irq);
+
+	gpiod_set_value_cansleep(reset_gpio, 1);
+	usleep_range(1000, 2000);
+
+	ret = regulator_disable(tsdata->vcc);
+	if (ret)
+		dev_warn(dev, "Failed to disable vcc\n");
+
+	return 0;
+}
+
+static int __maybe_unused edt_ft5x06_ts_resume(struct device *dev)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+	int ret = 0;
+
+	if (device_may_wakeup(dev))
+		return 0;
+
+	if (tsdata->suspend_mode == EDT_PMODE_NOT_SUPPORTED)
+		return 0;
+
+	if (tsdata->suspend_mode == EDT_PMODE_POWEROFF) {
+		struct gpio_desc *reset_gpio = tsdata->reset_gpio;
+
+		/*
+		 * We can't check if the regulator is a dummy or a real
+		 * regulator. So we need to specify the 5ms reset time (T_rst)
+		 * here instead of the 100us T_rtp time. We also need to wait
+		 * 300ms in case it was a real supply and the power was cutted
+		 * of. Toggle the reset pin is also a way to exit the hibernate
+		 * mode.
+		 */
+		gpiod_set_value_cansleep(reset_gpio, 1);
+		usleep_range(5000, 6000);
+
+		ret = regulator_enable(tsdata->vcc);
+		if (ret) {
+			dev_err(dev, "Failed to enable vcc\n");
+			return ret;
+		}
+
+		usleep_range(1000, 2000);
+		gpiod_set_value_cansleep(reset_gpio, 0);
+		msleep(300);
+
+		edt_ft5x06_restore_reg_parameters(tsdata);
+		enable_irq(tsdata->client->irq);
+
+#ifdef CONFIG_DEBUG_FS
+		if (tsdata->factory_mode)
+			ret = edt_ft5x06_factory_mode(tsdata);
+#endif
+	} else {
+		struct gpio_desc *wake_gpio = tsdata->wake_gpio;
+
+		gpiod_set_value_cansleep(wake_gpio, 0);
+		usleep_range(5000, 6000);
+		gpiod_set_value_cansleep(wake_gpio, 1);
+	}
+
+
+	return ret;
+}
+
+static SIMPLE_DEV_PM_OPS(edt_ft5x06_ts_pm_ops,
+			 edt_ft5x06_ts_suspend, edt_ft5x06_ts_resume);
+
 static const struct edt_i2c_chip_data edt_ft5x06_data = {
 	.max_support_points = 5,
 };
@@ -1276,6 +1398,7 @@ static struct i2c_driver edt_ft5x06_ts_driver = {
 	.driver = {
 		.name = "edt_ft5x06",
 		.of_match_table = edt_ft5x06_of_match,
+		.pm = &edt_ft5x06_ts_pm_ops,
 	},
 	.id_table = edt_ft5x06_ts_id,
 	.probe    = edt_ft5x06_ts_probe,
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 4/4] Input: edt-ft5x06 - prefer asynchronous probe
  2020-02-27 11:28 [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
                   ` (2 preceding siblings ...)
  2020-02-27 11:28 ` [PATCH 3/4] Input: edt-ft5x06 - improve power management operations Marco Felsch
@ 2020-02-27 11:28 ` Marco Felsch
  2020-05-09 21:28   ` Dmitry Torokhov
  2020-03-09  6:44 ` [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
  4 siblings, 1 reply; 15+ messages in thread
From: Marco Felsch @ 2020-02-27 11:28 UTC (permalink / raw)
  To: dmitry.torokhov, andriy.shevchenko, hdegoede, LW
  Cc: linux-input, kernel, Ahmad Fatoum

From: Ahmad Fatoum <a.fatoum@pengutronix.de>

Probing the device takes a while, because we sleep for 300 ms after a
reset; allow asynchronous probing so this can happen in the background
while other devices are being probed.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 drivers/input/touchscreen/edt-ft5x06.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index 0babe6a25fe3..b7f2aee30943 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -1399,6 +1399,7 @@ static struct i2c_driver edt_ft5x06_ts_driver = {
 		.name = "edt_ft5x06",
 		.of_match_table = edt_ft5x06_of_match,
 		.pm = &edt_ft5x06_ts_pm_ops,
+		.probe_type = PROBE_PREFER_ASYNCHRONOUS,
 	},
 	.id_table = edt_ft5x06_ts_id,
 	.probe    = edt_ft5x06_ts_probe,
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 0/4] EDT-FT5x06 Fixes and improvments
  2020-02-27 11:28 [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
                   ` (3 preceding siblings ...)
  2020-02-27 11:28 ` [PATCH 4/4] Input: edt-ft5x06 - prefer asynchronous probe Marco Felsch
@ 2020-03-09  6:44 ` Marco Felsch
  2020-03-31  7:50   ` Marco Felsch
  4 siblings, 1 reply; 15+ messages in thread
From: Marco Felsch @ 2020-03-09  6:44 UTC (permalink / raw)
  To: dmitry.torokhov, andriy.shevchenko, hdegoede, LW; +Cc: kernel, linux-input

Hi,

gentle ping.

Regards,
  Marco

On 20-02-27 12:28, Marco Felsch wrote:
> Hi,
> 
> first this series fixes a possible undefined register access for
> ev-ft5726 devices.
> 
> This series also includes the v4 of the improved pm ops. Please check
> my notes I made on the patch.
> 
> Last but least it adds the support for async probe which is important
> for fast booting because devices having a reset-pin specified sleeps
> 300ms..
> 
> Regards,
>   Marco
> 
> Ahmad Fatoum (1):
>   Input: edt-ft5x06 - prefer asynchronous probe
> 
> Marco Felsch (3):
>   Input: edt-ft5x06 - fix get_default register write access
>   Input: edt-ft5x06 - move parameter restore into helper
>   Input: edt-ft5x06 - improve power management operations
> 
>  drivers/input/touchscreen/edt-ft5x06.c | 179 ++++++++++++++++++++++---
>  1 file changed, 157 insertions(+), 22 deletions(-)
> 
> -- 
> 2.20.1

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 0/4] EDT-FT5x06 Fixes and improvments
  2020-03-09  6:44 ` [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
@ 2020-03-31  7:50   ` Marco Felsch
  2020-05-08  8:22     ` Marco Felsch
  0 siblings, 1 reply; 15+ messages in thread
From: Marco Felsch @ 2020-03-31  7:50 UTC (permalink / raw)
  To: dmitry.torokhov, andriy.shevchenko, hdegoede, LW; +Cc: kernel, linux-input

Hi Dmitry,

gentle ping..

On 20-03-09 07:44, Marco Felsch wrote:
> Hi,
> 
> gentle ping.
> 
> Regards,
>   Marco
> 
> On 20-02-27 12:28, Marco Felsch wrote:
> > Hi,
> > 
> > first this series fixes a possible undefined register access for
> > ev-ft5726 devices.
> > 
> > This series also includes the v4 of the improved pm ops. Please check
> > my notes I made on the patch.
> > 
> > Last but least it adds the support for async probe which is important
> > for fast booting because devices having a reset-pin specified sleeps
> > 300ms..
> > 
> > Regards,
> >   Marco
> > 
> > Ahmad Fatoum (1):
> >   Input: edt-ft5x06 - prefer asynchronous probe
> > 
> > Marco Felsch (3):
> >   Input: edt-ft5x06 - fix get_default register write access
> >   Input: edt-ft5x06 - move parameter restore into helper
> >   Input: edt-ft5x06 - improve power management operations
> > 
> >  drivers/input/touchscreen/edt-ft5x06.c | 179 ++++++++++++++++++++++---
> >  1 file changed, 157 insertions(+), 22 deletions(-)
> > 
> > -- 
> > 2.20.1
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 0/4] EDT-FT5x06 Fixes and improvments
  2020-03-31  7:50   ` Marco Felsch
@ 2020-05-08  8:22     ` Marco Felsch
  0 siblings, 0 replies; 15+ messages in thread
From: Marco Felsch @ 2020-05-08  8:22 UTC (permalink / raw)
  To: dmitry.torokhov, andriy.shevchenko, hdegoede, LW; +Cc: kernel, linux-input

Hi Dmitry,

pls can you have a look on it?

Thanks,
  Marco

On 20-03-31 09:50, Marco Felsch wrote:
> Hi Dmitry,
> 
> gentle ping..
> 
> On 20-03-09 07:44, Marco Felsch wrote:
> > Hi,
> > 
> > gentle ping.
> > 
> > Regards,
> >   Marco
> > 
> > On 20-02-27 12:28, Marco Felsch wrote:
> > > Hi,
> > > 
> > > first this series fixes a possible undefined register access for
> > > ev-ft5726 devices.
> > > 
> > > This series also includes the v4 of the improved pm ops. Please check
> > > my notes I made on the patch.
> > > 
> > > Last but least it adds the support for async probe which is important
> > > for fast booting because devices having a reset-pin specified sleeps
> > > 300ms..
> > > 
> > > Regards,
> > >   Marco
> > > 
> > > Ahmad Fatoum (1):
> > >   Input: edt-ft5x06 - prefer asynchronous probe
> > > 
> > > Marco Felsch (3):
> > >   Input: edt-ft5x06 - fix get_default register write access
> > >   Input: edt-ft5x06 - move parameter restore into helper
> > >   Input: edt-ft5x06 - improve power management operations
> > > 
> > >  drivers/input/touchscreen/edt-ft5x06.c | 179 ++++++++++++++++++++++---
> > >  1 file changed, 157 insertions(+), 22 deletions(-)
> > > 
> > > -- 
> > > 2.20.1
> > 
> > 
> 
> -- 
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access
  2020-02-27 11:28 ` [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access Marco Felsch
@ 2020-05-09 19:05   ` Dmitry Torokhov
  2020-05-10 11:06     ` Marco Felsch
  0 siblings, 1 reply; 15+ messages in thread
From: Dmitry Torokhov @ 2020-05-09 19:05 UTC (permalink / raw)
  To: Marco Felsch; +Cc: andriy.shevchenko, hdegoede, LW, linux-input, kernel

Hi Macro,

On Thu, Feb 27, 2020 at 12:28:16PM +0100, Marco Felsch wrote:
> Since commit b6eba86030bf ("Input: edt-ft5x06 - add offset support for
> ev-ft5726") offset-x and offset-y is supported. Devices using those
> offset parameters don't support the offset parameter so we need to add
> the NO_REGISTER check for edt_ft5x06_ts_get_defaults().
> 
> Fixes: b6eba86030bf ("Input: edt-ft5x06 - add offset support for ev-ft5726")
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>

I'll apply this, but I wonder if we should not move this check into
edt_ft5x06_register_write(), and also have edt_ft5x06_register_read()
return error if address is "NO_REGISTER"?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/4] Input: edt-ft5x06 - move parameter restore into helper
  2020-02-27 11:28 ` [PATCH 2/4] Input: edt-ft5x06 - move parameter restore into helper Marco Felsch
@ 2020-05-09 19:06   ` Dmitry Torokhov
  0 siblings, 0 replies; 15+ messages in thread
From: Dmitry Torokhov @ 2020-05-09 19:06 UTC (permalink / raw)
  To: Marco Felsch; +Cc: andriy.shevchenko, hdegoede, LW, linux-input, kernel

On Thu, Feb 27, 2020 at 12:28:17PM +0100, Marco Felsch wrote:
> We need to restore the parameters if we switch between the
> factory/work mode and during the resume process if we switched off the
> power-supply. Therefore refactor edt_ft5x06_work_mode() and move the
> "restore the parameters" into a helper routine so we can reuse it later.
> 
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>

Applied, thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/4] Input: edt-ft5x06 - improve power management operations
  2020-02-27 11:28 ` [PATCH 3/4] Input: edt-ft5x06 - improve power management operations Marco Felsch
@ 2020-05-09 21:21   ` Dmitry Torokhov
  0 siblings, 0 replies; 15+ messages in thread
From: Dmitry Torokhov @ 2020-05-09 21:21 UTC (permalink / raw)
  To: Marco Felsch; +Cc: andriy.shevchenko, hdegoede, LW, linux-input, kernel

Hi Marco,

On Thu, Feb 27, 2020 at 12:28:18PM +0100, Marco Felsch wrote:
> +
> +#ifdef CONFIG_DEBUG_FS
> +		if (tsdata->factory_mode)
> +			ret = edt_ft5x06_factory_mode(tsdata);
> +#endif

Instead of #ifdefs I added a stub for edt_ft5x06_factory_mode() and
applied.

Thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/4] Input: edt-ft5x06 - prefer asynchronous probe
  2020-02-27 11:28 ` [PATCH 4/4] Input: edt-ft5x06 - prefer asynchronous probe Marco Felsch
@ 2020-05-09 21:28   ` Dmitry Torokhov
  0 siblings, 0 replies; 15+ messages in thread
From: Dmitry Torokhov @ 2020-05-09 21:28 UTC (permalink / raw)
  To: Marco Felsch
  Cc: andriy.shevchenko, hdegoede, LW, linux-input, kernel, Ahmad Fatoum

On Thu, Feb 27, 2020 at 12:28:19PM +0100, Marco Felsch wrote:
> From: Ahmad Fatoum <a.fatoum@pengutronix.de>
> 
> Probing the device takes a while, because we sleep for 300 ms after a
> reset; allow asynchronous probing so this can happen in the background
> while other devices are being probed.
> 
> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>

Applied, thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access
  2020-05-09 19:05   ` Dmitry Torokhov
@ 2020-05-10 11:06     ` Marco Felsch
  2020-05-11 17:53       ` Dmitry Torokhov
  0 siblings, 1 reply; 15+ messages in thread
From: Marco Felsch @ 2020-05-10 11:06 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: andriy.shevchenko, hdegoede, LW, linux-input, kernel

Hi Dmitry,

On 20-05-09 12:05, Dmitry Torokhov wrote:
> Hi Macro,
> 
> On Thu, Feb 27, 2020 at 12:28:16PM +0100, Marco Felsch wrote:
> > Since commit b6eba86030bf ("Input: edt-ft5x06 - add offset support for
> > ev-ft5726") offset-x and offset-y is supported. Devices using those
> > offset parameters don't support the offset parameter so we need to add
> > the NO_REGISTER check for edt_ft5x06_ts_get_defaults().
> > 
> > Fixes: b6eba86030bf ("Input: edt-ft5x06 - add offset support for ev-ft5726")
> > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> 
> I'll apply this, but I wonder if we should not move this check into
> edt_ft5x06_register_write(), and also have edt_ft5x06_register_read()
> return error if address is "NO_REGISTER"?

I tought so too but I wanted to keep the fix small and backportable.

Regards,
  Marco

> Thanks.
> 
> -- 
> Dmitry
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access
  2020-05-10 11:06     ` Marco Felsch
@ 2020-05-11 17:53       ` Dmitry Torokhov
  2020-05-12 17:01         ` Marco Felsch
  0 siblings, 1 reply; 15+ messages in thread
From: Dmitry Torokhov @ 2020-05-11 17:53 UTC (permalink / raw)
  To: Marco Felsch; +Cc: andriy.shevchenko, hdegoede, LW, linux-input, kernel

On Sun, May 10, 2020 at 01:06:44PM +0200, Marco Felsch wrote:
> Hi Dmitry,
> 
> On 20-05-09 12:05, Dmitry Torokhov wrote:
> > Hi Macro,
> > 
> > On Thu, Feb 27, 2020 at 12:28:16PM +0100, Marco Felsch wrote:
> > > Since commit b6eba86030bf ("Input: edt-ft5x06 - add offset support for
> > > ev-ft5726") offset-x and offset-y is supported. Devices using those
> > > offset parameters don't support the offset parameter so we need to add
> > > the NO_REGISTER check for edt_ft5x06_ts_get_defaults().
> > > 
> > > Fixes: b6eba86030bf ("Input: edt-ft5x06 - add offset support for ev-ft5726")
> > > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> > 
> > I'll apply this, but I wonder if we should not move this check into
> > edt_ft5x06_register_write(), and also have edt_ft5x06_register_read()
> > return error if address is "NO_REGISTER"?
> 
> I tought so too but I wanted to keep the fix small and backportable.

Any chance you can make a follow-up patch so that going forward it is
cleaner (and the fix can still be backported if needed)?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access
  2020-05-11 17:53       ` Dmitry Torokhov
@ 2020-05-12 17:01         ` Marco Felsch
  0 siblings, 0 replies; 15+ messages in thread
From: Marco Felsch @ 2020-05-12 17:01 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: andriy.shevchenko, hdegoede, LW, linux-input, kernel

On 20-05-11 10:53, Dmitry Torokhov wrote:
> On Sun, May 10, 2020 at 01:06:44PM +0200, Marco Felsch wrote:
> > Hi Dmitry,
> > 
> > On 20-05-09 12:05, Dmitry Torokhov wrote:
> > > Hi Macro,
> > > 
> > > On Thu, Feb 27, 2020 at 12:28:16PM +0100, Marco Felsch wrote:
> > > > Since commit b6eba86030bf ("Input: edt-ft5x06 - add offset support for
> > > > ev-ft5726") offset-x and offset-y is supported. Devices using those
> > > > offset parameters don't support the offset parameter so we need to add
> > > > the NO_REGISTER check for edt_ft5x06_ts_get_defaults().
> > > > 
> > > > Fixes: b6eba86030bf ("Input: edt-ft5x06 - add offset support for ev-ft5726")
> > > > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> > > 
> > > I'll apply this, but I wonder if we should not move this check into
> > > edt_ft5x06_register_write(), and also have edt_ft5x06_register_read()
> > > return error if address is "NO_REGISTER"?
> > 
> > I tought so too but I wanted to keep the fix small and backportable.
> 
> Any chance you can make a follow-up patch so that going forward it is
> cleaner (and the fix can still be backported if needed)?

Of course I will prepare a fix.

Regards,
  Marco

> Thanks.
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-05-12 17:01 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-27 11:28 [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
2020-02-27 11:28 ` [PATCH 1/4] Input: edt-ft5x06 - fix get_default register write access Marco Felsch
2020-05-09 19:05   ` Dmitry Torokhov
2020-05-10 11:06     ` Marco Felsch
2020-05-11 17:53       ` Dmitry Torokhov
2020-05-12 17:01         ` Marco Felsch
2020-02-27 11:28 ` [PATCH 2/4] Input: edt-ft5x06 - move parameter restore into helper Marco Felsch
2020-05-09 19:06   ` Dmitry Torokhov
2020-02-27 11:28 ` [PATCH 3/4] Input: edt-ft5x06 - improve power management operations Marco Felsch
2020-05-09 21:21   ` Dmitry Torokhov
2020-02-27 11:28 ` [PATCH 4/4] Input: edt-ft5x06 - prefer asynchronous probe Marco Felsch
2020-05-09 21:28   ` Dmitry Torokhov
2020-03-09  6:44 ` [PATCH 0/4] EDT-FT5x06 Fixes and improvments Marco Felsch
2020-03-31  7:50   ` Marco Felsch
2020-05-08  8:22     ` Marco Felsch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).