All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Duggan <aduggan@synaptics.com>
To: Guenter Roeck <linux@roeck-us.net>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Chris Healy <cphealy@gmail.com>, Nick Dyer <nick@shmanahar.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	<linux-kernel@vger.kernel.org>, <linux-input@vger.kernel.org>
Subject: Re: [PATCH -next 2/2] Input: synaptics-rmi4 - Propagate correct number of rx and tx electrodes to F54
Date: Mon, 24 Oct 2016 17:59:56 -0700	[thread overview]
Message-ID: <e8aceb92-ee4e-7a03-568b-c5f349c74602@synaptics.com> (raw)
In-Reply-To: <1475292168-20961-2-git-send-email-linux@roeck-us.net>

On 09/30/2016 08:22 PM, Guenter Roeck wrote:
> F54 diagnostics report functions provide data based on the number of
> enabled rx and tx electrodes, which is not identical to the number of
> electrodes reported with F54:Query0 and F54:Query1. Those values report
> the number of supported electrodes, not the number of enabled electrodes.
> The number of enabled electrodes can be determined by analyzing F55:Ctrl1
> (sensor receiver assignment) and F55:Ctrl2 (sensor transmitter assignment).
>
> Propagate the number of enabled electrodes from F55 to F54 to avoid
> corrupted output if not all electrodes are enabled.
>
> Fixes: 3bbacb89704fi ("[media] Input: synaptics-rmi4 - add support for F54 ...")
> Cc: Nick Dyer <nick@shmanahar.org>
> Cc: Andrew Duggan <aduggan@synaptics.com>
> Cc: Chris Healy <cphealy@gmail.com>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>

Reviewed-by: Andrew Duggan <aduggan@synaptics.com>

> ---
> Notes:
> - The Fixes: SHA might not be accurate if the originating branch is rebased.
> - This patch depends on the preceding patch (which, strictly speaking, does
>    not fix anything).
>
>   drivers/input/rmi4/Kconfig   |  1 +
>   drivers/input/rmi4/rmi_f54.c | 14 ++++++++++----
>   drivers/input/rmi4/rmi_f55.c |  7 +++++++
>   include/linux/rmi.h          |  3 +++
>   4 files changed, 21 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/input/rmi4/Kconfig b/drivers/input/rmi4/Kconfig
> index 11ede43c9936..d7129928cde6 100644
> --- a/drivers/input/rmi4/Kconfig
> +++ b/drivers/input/rmi4/Kconfig
> @@ -67,6 +67,7 @@ config RMI4_F54
>   	depends on RMI4_CORE
>   	depends on VIDEO_V4L2=y || (RMI4_CORE=m && VIDEO_V4L2=m)
>   	select VIDEOBUF2_VMALLOC
> +	select RMI4_F55
>   	help
>   	  Say Y here if you want to add support for RMI4 function 54
>   
> diff --git a/drivers/input/rmi4/rmi_f54.c b/drivers/input/rmi4/rmi_f54.c
> index cf805b960866..9cb3aa733f0f 100644
> --- a/drivers/input/rmi4/rmi_f54.c
> +++ b/drivers/input/rmi4/rmi_f54.c
> @@ -216,8 +216,10 @@ static int rmi_f54_request_report(struct rmi_function *fn, u8 report_type)
>   
>   static size_t rmi_f54_get_report_size(struct f54_data *f54)
>   {
> -	u8 rx = f54->num_rx_electrodes ? : f54->num_rx_electrodes;
> -	u8 tx = f54->num_tx_electrodes ? : f54->num_tx_electrodes;
> +	struct rmi_device *rmi_dev = f54->fn->rmi_dev;
> +	struct rmi_driver_data *drv_data = dev_get_drvdata(&rmi_dev->dev);
> +	u8 rx = drv_data->num_rx_electrodes ? : f54->num_rx_electrodes;
> +	u8 tx = drv_data->num_tx_electrodes ? : f54->num_tx_electrodes;
>   	size_t size;
>   
>   	switch (rmi_f54_get_reptype(f54, f54->input)) {
> @@ -401,6 +403,10 @@ static int rmi_f54_vidioc_enum_input(struct file *file, void *priv,
>   
>   static int rmi_f54_set_input(struct f54_data *f54, unsigned int i)
>   {
> +	struct rmi_device *rmi_dev = f54->fn->rmi_dev;
> +	struct rmi_driver_data *drv_data = dev_get_drvdata(&rmi_dev->dev);
> +	u8 rx = drv_data->num_rx_electrodes ? : f54->num_rx_electrodes;
> +	u8 tx = drv_data->num_tx_electrodes ? : f54->num_tx_electrodes;
>   	struct v4l2_pix_format *f = &f54->format;
>   	enum rmi_f54_report_type reptype;
>   	int ret;
> @@ -415,8 +421,8 @@ static int rmi_f54_set_input(struct f54_data *f54, unsigned int i)
>   
>   	f54->input = i;
>   
> -	f->width = f54->num_rx_electrodes;
> -	f->height = f54->num_tx_electrodes;
> +	f->width = rx;
> +	f->height = tx;
>   	f->field = V4L2_FIELD_NONE;
>   	f->colorspace = V4L2_COLORSPACE_RAW;
>   	f->bytesperline = f->width * sizeof(u16);
> diff --git a/drivers/input/rmi4/rmi_f55.c b/drivers/input/rmi4/rmi_f55.c
> index 268fa904205a..b95a5d60ba96 100644
> --- a/drivers/input/rmi4/rmi_f55.c
> +++ b/drivers/input/rmi4/rmi_f55.c
> @@ -41,6 +41,8 @@ struct f55_data {
>   
>   static int rmi_f55_detect(struct rmi_function *fn)
>   {
> +	struct rmi_device *rmi_dev = fn->rmi_dev;
> +	struct rmi_driver_data *drv_data = dev_get_drvdata(&rmi_dev->dev);
>   	struct f55_data *f55;
>   	int error;
>   
> @@ -60,6 +62,9 @@ static int rmi_f55_detect(struct rmi_function *fn)
>   	f55->cfg_num_rx_electrodes = f55->num_rx_electrodes;
>   	f55->cfg_num_tx_electrodes = f55->num_rx_electrodes;
>   
> +	drv_data->num_rx_electrodes = f55->cfg_num_rx_electrodes;
> +	drv_data->num_tx_electrodes = f55->cfg_num_rx_electrodes;
> +
>   	if (f55->qry[F55_PHYS_CHAR_OFFSET] & F55_CAP_SENSOR_ASSIGN) {
>   		int i, total;
>   		u8 buf[256];
> @@ -81,6 +86,7 @@ static int rmi_f55_detect(struct rmi_function *fn)
>   					total++;
>   			}
>   			f55->cfg_num_rx_electrodes = total;
> +			drv_data->num_rx_electrodes = total;
>   		}
>   
>   		error = rmi_read_block(fn->rmi_dev,
> @@ -93,6 +99,7 @@ static int rmi_f55_detect(struct rmi_function *fn)
>   					total++;
>   			}
>   			f55->cfg_num_tx_electrodes = total;
> +			drv_data->num_tx_electrodes = total;
>   		}
>   	}
>   
> diff --git a/include/linux/rmi.h b/include/linux/rmi.h
> index e0aca1476001..45734f1343b3 100644
> --- a/include/linux/rmi.h
> +++ b/include/linux/rmi.h
> @@ -345,6 +345,9 @@ struct rmi_driver_data {
>   	u8 pdt_props;
>   	u8 bsr;
>   
> +	u8 num_rx_electrodes;
> +	u8 num_tx_electrodes;
> +
>   	bool enabled;
>   
>   	void *data;

WARNING: multiple messages have this Message-ID (diff)
From: Andrew Duggan <aduggan@synaptics.com>
To: Guenter Roeck <linux@roeck-us.net>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Chris Healy <cphealy@gmail.com>, Nick Dyer <nick@shmanahar.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org
Subject: Re: [PATCH -next 2/2] Input: synaptics-rmi4 - Propagate correct number of rx and tx electrodes to F54
Date: Mon, 24 Oct 2016 17:59:56 -0700	[thread overview]
Message-ID: <e8aceb92-ee4e-7a03-568b-c5f349c74602@synaptics.com> (raw)
In-Reply-To: <1475292168-20961-2-git-send-email-linux@roeck-us.net>

On 09/30/2016 08:22 PM, Guenter Roeck wrote:
> F54 diagnostics report functions provide data based on the number of
> enabled rx and tx electrodes, which is not identical to the number of
> electrodes reported with F54:Query0 and F54:Query1. Those values report
> the number of supported electrodes, not the number of enabled electrodes.
> The number of enabled electrodes can be determined by analyzing F55:Ctrl1
> (sensor receiver assignment) and F55:Ctrl2 (sensor transmitter assignment).
>
> Propagate the number of enabled electrodes from F55 to F54 to avoid
> corrupted output if not all electrodes are enabled.
>
> Fixes: 3bbacb89704fi ("[media] Input: synaptics-rmi4 - add support for F54 ...")
> Cc: Nick Dyer <nick@shmanahar.org>
> Cc: Andrew Duggan <aduggan@synaptics.com>
> Cc: Chris Healy <cphealy@gmail.com>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>

Reviewed-by: Andrew Duggan <aduggan@synaptics.com>

> ---
> Notes:
> - The Fixes: SHA might not be accurate if the originating branch is rebased.
> - This patch depends on the preceding patch (which, strictly speaking, does
>    not fix anything).
>
>   drivers/input/rmi4/Kconfig   |  1 +
>   drivers/input/rmi4/rmi_f54.c | 14 ++++++++++----
>   drivers/input/rmi4/rmi_f55.c |  7 +++++++
>   include/linux/rmi.h          |  3 +++
>   4 files changed, 21 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/input/rmi4/Kconfig b/drivers/input/rmi4/Kconfig
> index 11ede43c9936..d7129928cde6 100644
> --- a/drivers/input/rmi4/Kconfig
> +++ b/drivers/input/rmi4/Kconfig
> @@ -67,6 +67,7 @@ config RMI4_F54
>   	depends on RMI4_CORE
>   	depends on VIDEO_V4L2=y || (RMI4_CORE=m && VIDEO_V4L2=m)
>   	select VIDEOBUF2_VMALLOC
> +	select RMI4_F55
>   	help
>   	  Say Y here if you want to add support for RMI4 function 54
>   
> diff --git a/drivers/input/rmi4/rmi_f54.c b/drivers/input/rmi4/rmi_f54.c
> index cf805b960866..9cb3aa733f0f 100644
> --- a/drivers/input/rmi4/rmi_f54.c
> +++ b/drivers/input/rmi4/rmi_f54.c
> @@ -216,8 +216,10 @@ static int rmi_f54_request_report(struct rmi_function *fn, u8 report_type)
>   
>   static size_t rmi_f54_get_report_size(struct f54_data *f54)
>   {
> -	u8 rx = f54->num_rx_electrodes ? : f54->num_rx_electrodes;
> -	u8 tx = f54->num_tx_electrodes ? : f54->num_tx_electrodes;
> +	struct rmi_device *rmi_dev = f54->fn->rmi_dev;
> +	struct rmi_driver_data *drv_data = dev_get_drvdata(&rmi_dev->dev);
> +	u8 rx = drv_data->num_rx_electrodes ? : f54->num_rx_electrodes;
> +	u8 tx = drv_data->num_tx_electrodes ? : f54->num_tx_electrodes;
>   	size_t size;
>   
>   	switch (rmi_f54_get_reptype(f54, f54->input)) {
> @@ -401,6 +403,10 @@ static int rmi_f54_vidioc_enum_input(struct file *file, void *priv,
>   
>   static int rmi_f54_set_input(struct f54_data *f54, unsigned int i)
>   {
> +	struct rmi_device *rmi_dev = f54->fn->rmi_dev;
> +	struct rmi_driver_data *drv_data = dev_get_drvdata(&rmi_dev->dev);
> +	u8 rx = drv_data->num_rx_electrodes ? : f54->num_rx_electrodes;
> +	u8 tx = drv_data->num_tx_electrodes ? : f54->num_tx_electrodes;
>   	struct v4l2_pix_format *f = &f54->format;
>   	enum rmi_f54_report_type reptype;
>   	int ret;
> @@ -415,8 +421,8 @@ static int rmi_f54_set_input(struct f54_data *f54, unsigned int i)
>   
>   	f54->input = i;
>   
> -	f->width = f54->num_rx_electrodes;
> -	f->height = f54->num_tx_electrodes;
> +	f->width = rx;
> +	f->height = tx;
>   	f->field = V4L2_FIELD_NONE;
>   	f->colorspace = V4L2_COLORSPACE_RAW;
>   	f->bytesperline = f->width * sizeof(u16);
> diff --git a/drivers/input/rmi4/rmi_f55.c b/drivers/input/rmi4/rmi_f55.c
> index 268fa904205a..b95a5d60ba96 100644
> --- a/drivers/input/rmi4/rmi_f55.c
> +++ b/drivers/input/rmi4/rmi_f55.c
> @@ -41,6 +41,8 @@ struct f55_data {
>   
>   static int rmi_f55_detect(struct rmi_function *fn)
>   {
> +	struct rmi_device *rmi_dev = fn->rmi_dev;
> +	struct rmi_driver_data *drv_data = dev_get_drvdata(&rmi_dev->dev);
>   	struct f55_data *f55;
>   	int error;
>   
> @@ -60,6 +62,9 @@ static int rmi_f55_detect(struct rmi_function *fn)
>   	f55->cfg_num_rx_electrodes = f55->num_rx_electrodes;
>   	f55->cfg_num_tx_electrodes = f55->num_rx_electrodes;
>   
> +	drv_data->num_rx_electrodes = f55->cfg_num_rx_electrodes;
> +	drv_data->num_tx_electrodes = f55->cfg_num_rx_electrodes;
> +
>   	if (f55->qry[F55_PHYS_CHAR_OFFSET] & F55_CAP_SENSOR_ASSIGN) {
>   		int i, total;
>   		u8 buf[256];
> @@ -81,6 +86,7 @@ static int rmi_f55_detect(struct rmi_function *fn)
>   					total++;
>   			}
>   			f55->cfg_num_rx_electrodes = total;
> +			drv_data->num_rx_electrodes = total;
>   		}
>   
>   		error = rmi_read_block(fn->rmi_dev,
> @@ -93,6 +99,7 @@ static int rmi_f55_detect(struct rmi_function *fn)
>   					total++;
>   			}
>   			f55->cfg_num_tx_electrodes = total;
> +			drv_data->num_tx_electrodes = total;
>   		}
>   	}
>   
> diff --git a/include/linux/rmi.h b/include/linux/rmi.h
> index e0aca1476001..45734f1343b3 100644
> --- a/include/linux/rmi.h
> +++ b/include/linux/rmi.h
> @@ -345,6 +345,9 @@ struct rmi_driver_data {
>   	u8 pdt_props;
>   	u8 bsr;
>   
> +	u8 num_rx_electrodes;
> +	u8 num_tx_electrodes;
> +
>   	bool enabled;
>   
>   	void *data;

  reply	other threads:[~2016-10-25  1:00 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-01  3:22 [PATCH -next 1/2] Input: synaptics-rmi4 - add support for F55 sensor tuning Guenter Roeck
2016-10-01  3:22 ` [PATCH -next 2/2] Input: synaptics-rmi4 - Propagate correct number of rx and tx electrodes to F54 Guenter Roeck
2016-10-25  0:59   ` Andrew Duggan [this message]
2016-10-25  0:59     ` Andrew Duggan
2016-10-17 21:30 ` [-next, 1/2] Input: synaptics-rmi4 - add support for F55 sensor tuning Guenter Roeck
2016-10-20 22:51   ` Nick Dyer
2016-10-20 23:28     ` Christopher Heiny
2016-10-20 23:28       ` Christopher Heiny
     [not found]       ` <CAFXsbZo5SDVZSBJL5MV4Y4GFDQC9UNaQLHaxEeWBRydBppif9Q@mail.gmail.com>
2016-10-21 18:25         ` Christopher Heiny
2016-10-21 18:25           ` Christopher Heiny
2016-10-21 22:03       ` Guenter Roeck
2016-10-25  0:59 ` [PATCH -next " Andrew Duggan
2016-10-25  0:59   ` Andrew Duggan
2016-10-25  3:13   ` Guenter Roeck
2016-10-25 18:26     ` Andrew Duggan
2016-10-25 18:26       ` Andrew Duggan
2016-10-26  2:41       ` Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e8aceb92-ee4e-7a03-568b-c5f349c74602@synaptics.com \
    --to=aduggan@synaptics.com \
    --cc=cphealy@gmail.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=hans.verkuil@cisco.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=mchehab@kernel.org \
    --cc=nick@shmanahar.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.