All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Duggan <aduggan@synaptics.com>
To: Benjamin Tissoires <benjamin.tissoires@redhat.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Christopher Heiny <cheiny@synaptics.com>,
	Allie Xiong <axiong@synaptics.com>
Cc: Stephen Chandler Paul <cpaul@redhat.com>,
	<benjamin.tissoires@gmail.com>, <linux-input@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	Vincent Huang <vincent.huang@tw.synaptics.com>
Subject: Re: [PATCH 08/11] Input: synaptics-rmi4 - f11: use the unified input node if available
Date: Thu, 2 Jul 2015 10:50:57 -0700	[thread overview]
Message-ID: <55957A01.2080007@synaptics.com> (raw)
In-Reply-To: <1435087050-11444-9-git-send-email-benjamin.tissoires@redhat.com>

On 06/23/2015 12:17 PM, Benjamin Tissoires wrote:
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> ---

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

>   drivers/input/rmi4/rmi_f11.c | 60 ++++++++++++++++++++++++++------------------
>   1 file changed, 35 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/input/rmi4/rmi_f11.c b/drivers/input/rmi4/rmi_f11.c
> index c3b757b..061530a 100644
> --- a/drivers/input/rmi4/rmi_f11.c
> +++ b/drivers/input/rmi4/rmi_f11.c
> @@ -34,7 +34,6 @@
>   #define DEFAULT_MAX_ABS_MT_ORIENTATION 1
>   #define DEFAULT_MIN_ABS_MT_TRACKING_ID 1
>   #define DEFAULT_MAX_ABS_MT_TRACKING_ID 10
> -#define NAME_BUFFER_SIZE 256
>   #define FUNCTION_NUMBER 0x11
>   
>   /** A note about RMI4 F11 register structure.
> @@ -518,6 +517,7 @@ struct f11_2d_sensor {
>   	u32 type_a;	/* boolean but debugfs API requires u32 */
>   	enum rmi_f11_sensor_type sensor_type;
>   	struct input_dev *input;
> +	bool unified_input;
>   	struct rmi_function *fn;
>   	char input_phys[NAME_BUFFER_SIZE];
>   	u8 report_abs;
> @@ -737,7 +737,8 @@ static void rmi_f11_finger_handler(struct f11_data *f11,
>   	}
>   
>   	input_mt_sync_frame(sensor->input);
> -	input_sync(sensor->input);
> +	if (!sensor->unified_input)
> +		input_sync(sensor->input);
>   }
>   
>   static int f11_2d_construct_data(struct f11_2d_sensor *sensor)
> @@ -1373,35 +1374,42 @@ static int rmi_f11_initialize(struct rmi_function *fn)
>   static int rmi_f11_register_devices(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 f11_data *f11 = dev_get_drvdata(&fn->dev);
>   	struct input_dev *input_dev;
>   	struct rmi_driver *driver = rmi_dev->driver;
>   	struct f11_2d_sensor *sensor = &f11->sensor;
>   	int rc;
>   
> -	input_dev = input_allocate_device();
> +	if (!drv_data->input) {
> +		input_dev = input_allocate_device();
> +	} else {
> +		input_dev = drv_data->input;
> +		sensor->unified_input = true;
> +	}
>   	if (!input_dev) {
>   		rc = -ENOMEM;
>   		goto error_unregister;
>   	}
>   
>   	sensor->input = input_dev;
> -	if (driver->set_input_params) {
> -		rc = driver->set_input_params(rmi_dev, input_dev);
> -		if (rc < 0) {
> -			dev_err(&fn->dev,
> -				"%s: Error in setting input device.\n",
> -				__func__);
> -			goto error_unregister;
> +
> +	if (!sensor->unified_input) {
> +		if (driver->set_input_params) {
> +			rc = driver->set_input_params(rmi_dev, input_dev);
> +			if (rc < 0) {
> +				dev_err(&fn->dev,
> +					"%s: Error in setting input device.\n",
> +					__func__);
> +				goto error_unregister;
> +			}
>   		}
> +		sprintf(sensor->input_phys, "%s.abs/input0",
> +			dev_name(&fn->dev));
> +		input_dev->phys = sensor->input_phys;
> +		input_dev->dev.parent = &rmi_dev->dev;
>   	}
> -	sprintf(sensor->input_phys, "%s.abs/input0",
> -		dev_name(&fn->dev));
> -	input_dev->phys = sensor->input_phys;
> -	input_dev->dev.parent = &rmi_dev->dev;
> -	input_set_drvdata(input_dev, f11);
>   
> -	set_bit(EV_SYN, input_dev->evbit);
>   	set_bit(EV_ABS, input_dev->evbit);
>   	input_set_capability(input_dev, EV_KEY, BTN_TOUCH);
>   
> @@ -1413,19 +1421,21 @@ static int rmi_f11_register_devices(struct rmi_function *fn)
>   		set_bit(REL_X, input_dev->relbit);
>   		set_bit(REL_Y, input_dev->relbit);
>   	}
> -	rc = input_register_device(input_dev);
> -	if (rc) {
> -		input_free_device(input_dev);
> -		sensor->input = NULL;
> -		goto error_unregister;
> +	if (!sensor->unified_input) {
> +		rc = input_register_device(input_dev);
> +		if (rc) {
> +			input_free_device(input_dev);
> +			sensor->input = NULL;
> +			goto error_unregister;
> +		}
>   	}
>   
>   	return 0;
>   
>   error_unregister:
> -	if (f11->sensor.input) {
> -		input_unregister_device(f11->sensor.input);
> -		f11->sensor.input = NULL;
> +	if (!sensor->unified_input && sensor->input) {
> +		input_unregister_device(sensor->input);
> +		sensor->input = NULL;
>   	}
>   
>   	return rc;
> @@ -1525,7 +1535,7 @@ static void rmi_f11_remove(struct rmi_function *fn)
>   {
>   	struct f11_data *f11 = dev_get_drvdata(&fn->dev);
>   
> -	if (f11->sensor.input)
> +	if (!f11->sensor.unified_input && f11->sensor.input)
>   		input_unregister_device(f11->sensor.input);
>   }
>   


WARNING: multiple messages have this Message-ID (diff)
From: Andrew Duggan <aduggan@synaptics.com>
To: Benjamin Tissoires <benjamin.tissoires@redhat.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Christopher Heiny <cheiny@synaptics.com>,
	Allie Xiong <axiong@synaptics.com>
Cc: Stephen Chandler Paul <cpaul@redhat.com>,
	benjamin.tissoires@gmail.com, linux-input@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Vincent Huang <vincent.huang@tw.synaptics.com>
Subject: Re: [PATCH 08/11] Input: synaptics-rmi4 - f11: use the unified input node if available
Date: Thu, 2 Jul 2015 10:50:57 -0700	[thread overview]
Message-ID: <55957A01.2080007@synaptics.com> (raw)
In-Reply-To: <1435087050-11444-9-git-send-email-benjamin.tissoires@redhat.com>

On 06/23/2015 12:17 PM, Benjamin Tissoires wrote:
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> ---

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

>   drivers/input/rmi4/rmi_f11.c | 60 ++++++++++++++++++++++++++------------------
>   1 file changed, 35 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/input/rmi4/rmi_f11.c b/drivers/input/rmi4/rmi_f11.c
> index c3b757b..061530a 100644
> --- a/drivers/input/rmi4/rmi_f11.c
> +++ b/drivers/input/rmi4/rmi_f11.c
> @@ -34,7 +34,6 @@
>   #define DEFAULT_MAX_ABS_MT_ORIENTATION 1
>   #define DEFAULT_MIN_ABS_MT_TRACKING_ID 1
>   #define DEFAULT_MAX_ABS_MT_TRACKING_ID 10
> -#define NAME_BUFFER_SIZE 256
>   #define FUNCTION_NUMBER 0x11
>   
>   /** A note about RMI4 F11 register structure.
> @@ -518,6 +517,7 @@ struct f11_2d_sensor {
>   	u32 type_a;	/* boolean but debugfs API requires u32 */
>   	enum rmi_f11_sensor_type sensor_type;
>   	struct input_dev *input;
> +	bool unified_input;
>   	struct rmi_function *fn;
>   	char input_phys[NAME_BUFFER_SIZE];
>   	u8 report_abs;
> @@ -737,7 +737,8 @@ static void rmi_f11_finger_handler(struct f11_data *f11,
>   	}
>   
>   	input_mt_sync_frame(sensor->input);
> -	input_sync(sensor->input);
> +	if (!sensor->unified_input)
> +		input_sync(sensor->input);
>   }
>   
>   static int f11_2d_construct_data(struct f11_2d_sensor *sensor)
> @@ -1373,35 +1374,42 @@ static int rmi_f11_initialize(struct rmi_function *fn)
>   static int rmi_f11_register_devices(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 f11_data *f11 = dev_get_drvdata(&fn->dev);
>   	struct input_dev *input_dev;
>   	struct rmi_driver *driver = rmi_dev->driver;
>   	struct f11_2d_sensor *sensor = &f11->sensor;
>   	int rc;
>   
> -	input_dev = input_allocate_device();
> +	if (!drv_data->input) {
> +		input_dev = input_allocate_device();
> +	} else {
> +		input_dev = drv_data->input;
> +		sensor->unified_input = true;
> +	}
>   	if (!input_dev) {
>   		rc = -ENOMEM;
>   		goto error_unregister;
>   	}
>   
>   	sensor->input = input_dev;
> -	if (driver->set_input_params) {
> -		rc = driver->set_input_params(rmi_dev, input_dev);
> -		if (rc < 0) {
> -			dev_err(&fn->dev,
> -				"%s: Error in setting input device.\n",
> -				__func__);
> -			goto error_unregister;
> +
> +	if (!sensor->unified_input) {
> +		if (driver->set_input_params) {
> +			rc = driver->set_input_params(rmi_dev, input_dev);
> +			if (rc < 0) {
> +				dev_err(&fn->dev,
> +					"%s: Error in setting input device.\n",
> +					__func__);
> +				goto error_unregister;
> +			}
>   		}
> +		sprintf(sensor->input_phys, "%s.abs/input0",
> +			dev_name(&fn->dev));
> +		input_dev->phys = sensor->input_phys;
> +		input_dev->dev.parent = &rmi_dev->dev;
>   	}
> -	sprintf(sensor->input_phys, "%s.abs/input0",
> -		dev_name(&fn->dev));
> -	input_dev->phys = sensor->input_phys;
> -	input_dev->dev.parent = &rmi_dev->dev;
> -	input_set_drvdata(input_dev, f11);
>   
> -	set_bit(EV_SYN, input_dev->evbit);
>   	set_bit(EV_ABS, input_dev->evbit);
>   	input_set_capability(input_dev, EV_KEY, BTN_TOUCH);
>   
> @@ -1413,19 +1421,21 @@ static int rmi_f11_register_devices(struct rmi_function *fn)
>   		set_bit(REL_X, input_dev->relbit);
>   		set_bit(REL_Y, input_dev->relbit);
>   	}
> -	rc = input_register_device(input_dev);
> -	if (rc) {
> -		input_free_device(input_dev);
> -		sensor->input = NULL;
> -		goto error_unregister;
> +	if (!sensor->unified_input) {
> +		rc = input_register_device(input_dev);
> +		if (rc) {
> +			input_free_device(input_dev);
> +			sensor->input = NULL;
> +			goto error_unregister;
> +		}
>   	}
>   
>   	return 0;
>   
>   error_unregister:
> -	if (f11->sensor.input) {
> -		input_unregister_device(f11->sensor.input);
> -		f11->sensor.input = NULL;
> +	if (!sensor->unified_input && sensor->input) {
> +		input_unregister_device(sensor->input);
> +		sensor->input = NULL;
>   	}
>   
>   	return rc;
> @@ -1525,7 +1535,7 @@ static void rmi_f11_remove(struct rmi_function *fn)
>   {
>   	struct f11_data *f11 = dev_get_drvdata(&fn->dev);
>   
> -	if (f11->sensor.input)
> +	if (!f11->sensor.unified_input && f11->sensor.input)
>   		input_unregister_device(f11->sensor.input);
>   }
>   


  reply	other threads:[~2015-07-02 17:51 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-23 19:17 [PATCH 00/11] Input: synaptics-rmi4: various fixes for the existing rmi4 branch Benjamin Tissoires
2015-06-23 19:17 ` [PATCH 01/11] Input: synaptics-rmi4 - embed the function modules in rmi_core Benjamin Tissoires
2015-06-24  9:51   ` Paul Bolle
2015-06-24 14:10     ` Benjamin Tissoires
2015-07-02 17:49   ` Andrew Duggan
2015-07-02 17:49     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 02/11] Input: synaptics-rmi4 - add a common input device in rmi_driver Benjamin Tissoires
2015-07-02 17:49   ` Andrew Duggan
2015-07-02 17:49     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 03/11] Input: synaptics-rmi4 - explicitly request polling when needed Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 04/11] Input: synaptics-rmi4 - prevent oopses when irq arrives while the device is not bound Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 05/11] Input: synaptics-rmi4 - call rmi_driver_process_config_requests in enable_sensor Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 06/11] Input: synaptics-rmi4 - add a reset callback Benjamin Tissoires
2015-06-23 19:17 ` [PATCH 07/11] Input: synaptics-rmi4 - f11: fix bitmap irq check Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 08/11] Input: synaptics-rmi4 - f11: use the unified input node if available Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan [this message]
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 09/11] Input: synaptics-rmi4 - f11: clean up rmi_f11_finger_handler Benjamin Tissoires
2015-07-02 17:51   ` Andrew Duggan
2015-07-02 17:51     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 10/11] Input: synaptics-rmi4 - f11: allow the top software button property to be set Benjamin Tissoires
2015-07-02 17:51   ` Andrew Duggan
2015-07-02 17:51     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 11/11] Input: synaptics-rmi4 - f11: add support for kernel tracking Benjamin Tissoires
2015-07-02 17:51   ` Andrew Duggan
2015-07-02 17:51     ` Andrew Duggan
2015-07-23 17:10 ` [PATCH 00/11] Input: synaptics-rmi4: various fixes for the existing rmi4 branch Benjamin Tissoires
2015-10-31 20:41   ` Linus Walleij
2015-11-02 22:14     ` Andrew Duggan
2015-11-03 10:29       ` Linus Walleij
2015-11-03 14:01       ` Linus Walleij
2015-11-04  0:38         ` Andrew Duggan
2015-11-04  8:28           ` Benjamin Tissoires
2015-11-04 13:55           ` Linus Walleij

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=55957A01.2080007@synaptics.com \
    --to=aduggan@synaptics.com \
    --cc=axiong@synaptics.com \
    --cc=benjamin.tissoires@gmail.com \
    --cc=benjamin.tissoires@redhat.com \
    --cc=cheiny@synaptics.com \
    --cc=cpaul@redhat.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vincent.huang@tw.synaptics.com \
    /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.