From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Cc: Andrew Duggan <aduggan@synaptics.com>,
Lyude Paul <thatslyude@gmail.com>,
Christopher Heiny <cheiny@synaptics.com>,
Nick Dyer <nick@shmanahar.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Dennis Wassenberg <dennis.wassenberg@secunet.com>,
linux-kernel@vger.kernel.org, linux-input@vger.kernel.org
Subject: Re: [PATCH v3 05/18] Input: synaptics-rmi4 - Add support for controlling dribble packets in F12
Date: Tue, 8 Nov 2016 17:02:31 -0800 [thread overview]
Message-ID: <20161109010231.GJ8719@dtor-ws> (raw)
In-Reply-To: <1476373872-18027-6-git-send-email-benjamin.tissoires@redhat.com>
On Thu, Oct 13, 2016 at 05:50:59PM +0200, Benjamin Tissoires wrote:
> From: Andrew Duggan <aduggan@synaptics.com>
>
> Implements reading and setting the dribble bit in F12's control registers.
>
> Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
> Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Applied, thank you.
>
> ---
>
> new in v3
> ---
> drivers/input/rmi4/rmi_f12.c | 73 +++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 72 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/input/rmi4/rmi_f12.c b/drivers/input/rmi4/rmi_f12.c
> index 767ac79..f79a785 100644
> --- a/drivers/input/rmi4/rmi_f12.c
> +++ b/drivers/input/rmi4/rmi_f12.c
> @@ -31,6 +31,7 @@ enum rmi_f12_object_type {
> struct f12_data {
> struct rmi_2d_sensor sensor;
> struct rmi_2d_sensor_platform_data sensor_pdata;
> + bool has_dribble;
>
> u16 data_addr;
>
> @@ -239,12 +240,79 @@ static int rmi_f12_attention(struct rmi_function *fn,
> return 0;
> }
>
> +static int rmi_f12_write_control_regs(struct rmi_function *fn)
> +{
> + int ret;
> + const struct rmi_register_desc_item *item;
> + struct rmi_device *rmi_dev = fn->rmi_dev;
> + struct f12_data *f12 = dev_get_drvdata(&fn->dev);
> + int control_size;
> + char buf[3];
> + u16 control_offset = 0;
> + u8 subpacket_offset = 0;
> +
> + if (f12->has_dribble
> + && (f12->sensor.dribble != RMI_REG_STATE_DEFAULT)) {
> + item = rmi_get_register_desc_item(&f12->control_reg_desc, 20);
> + if (item) {
> + control_offset = rmi_register_desc_calc_reg_offset(
> + &f12->control_reg_desc, 20);
> +
> + /*
> + * The byte containing the EnableDribble bit will be
> + * in either byte 0 or byte 2 of control 20. Depending
> + * on the existence of subpacket 0. If control 20 is
> + * larger then 3 bytes, just read the first 3.
> + */
> + if (item->reg_size >= 3)
> + control_size = 3;
> + else
> + control_size = item->reg_size;
Changed to
control_size = min(item->reg_size, 3UL);
> +
> + ret = rmi_read_block(rmi_dev, fn->fd.control_base_addr
> + + control_offset, buf, control_size);
> + if (ret)
> + return ret;
> +
> + if (rmi_register_desc_has_subpacket(item, 0))
> + subpacket_offset += 1;
> +
> + switch (f12->sensor.dribble) {
> + case RMI_REG_STATE_OFF:
> + buf[subpacket_offset] &= ~BIT(2);
> + break;
> + case RMI_REG_STATE_ON:
> + buf[subpacket_offset] |= BIT(2);
> + break;
> + case RMI_REG_STATE_DEFAULT:
> + default:
> + break;
> + }
> +
> + ret = rmi_write_block(rmi_dev,
> + fn->fd.control_base_addr + control_offset,
> + buf, control_size);
> + if (ret)
> + return ret;
> + }
> + }
> +
> + return 0;
> +
> +}
> +
> static int rmi_f12_config(struct rmi_function *fn)
> {
> struct rmi_driver *drv = fn->rmi_dev->driver;
> + int ret;
>
> drv->set_irq_bits(fn->rmi_dev, fn->irq_mask);
>
> + ret = rmi_f12_write_control_regs(fn);
> + if (ret)
> + dev_warn(&fn->dev,
> + "Failed to write F12 control registers: %d\n", ret);
> +
> return 0;
> }
>
> @@ -271,7 +339,7 @@ static int rmi_f12_probe(struct rmi_function *fn)
> }
> ++query_addr;
>
> - if (!(buf & 0x1)) {
> + if (!(buf & BIT(0))) {
> dev_err(&fn->dev,
> "Behavior of F12 without register descriptors is undefined.\n");
> return -ENODEV;
> @@ -281,6 +349,8 @@ static int rmi_f12_probe(struct rmi_function *fn)
> if (!f12)
> return -ENOMEM;
>
> + f12->has_dribble = !!(buf & BIT(3));
> +
> if (fn->dev.of_node) {
> ret = rmi_2d_sensor_of_probe(&fn->dev, &f12->sensor_pdata);
> if (ret)
> @@ -329,6 +399,7 @@ static int rmi_f12_probe(struct rmi_function *fn)
>
> sensor->x_mm = f12->sensor_pdata.x_mm;
> sensor->y_mm = f12->sensor_pdata.y_mm;
> + sensor->dribble = f12->sensor_pdata.dribble;
>
> if (sensor->sensor_type == rmi_sensor_default)
> sensor->sensor_type =
> --
> 2.7.4
>
--
Dmitry
next prev parent reply other threads:[~2016-11-09 1:02 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-13 15:50 [PATCH v3 00/18] Synaptics RMI4 and SMBus implementation Benjamin Tissoires
2016-10-13 15:50 ` [PATCH v3 01/18] Input: synaptics-rmi4 - Move IRQ handling to rmi_driver Benjamin Tissoires
2016-11-09 0:47 ` Dmitry Torokhov
2016-10-13 15:50 ` [PATCH v3 02/18] Input: synaptics-rmi4 - factor out functions from probe Benjamin Tissoires
2016-10-13 15:50 ` [PATCH v3 03/18] Input: synaptics-rmi4 - Handle incomplete input data Benjamin Tissoires
2016-11-09 0:46 ` Dmitry Torokhov
2016-10-13 15:50 ` [PATCH v3 04/18] Input: synaptics-rmi4 - Add parameters for dribble packets and palm detect gesture Benjamin Tissoires
2016-11-09 0:51 ` Dmitry Torokhov
2016-10-13 15:50 ` [PATCH v3 05/18] Input: synaptics-rmi4 - Add support for controlling dribble packets in F12 Benjamin Tissoires
2016-11-09 1:02 ` Dmitry Torokhov [this message]
2016-10-13 15:51 ` [PATCH v3 06/18] Input: synaptics-rmi4 - Set the ABS_MT_TOOL_TYPE bit to report tool type Benjamin Tissoires
2016-11-09 1:03 ` Dmitry Torokhov
2016-10-13 15:51 ` [PATCH v3 07/18] Input: synaptics-rmi4 - add SMBus support Benjamin Tissoires
2016-11-09 1:08 ` Dmitry Torokhov
2016-10-13 15:51 ` [PATCH v3 08/18] Input: serio - store the pt_buttons in the struct serio directly Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 09/18] Input: synaptics-rmi4 - have only one struct platform data Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 10/18] Input: synaptics-rmi4 - add support for F03 Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 11/18] Input: synaptics-rmi4 - f03: grab data passed by transport device Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 12/18] Input: synaptics-rmi4 - Add rmi_find_function() Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 13/18] Input: synaptics-rmi4 - f30/f03: Forward mechanical buttons on buttonpads to PS/2 guest Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 14/18] Input: synaptics - allocate a Synaptics Intertouch device Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 15/18] Input: synaptics-rmi4 - add rmi_platform Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 16/18] Input: synaptics-rmi4 - smbus: call psmouse_deactivate before binding/resume Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 17/18] Input: synaptics-rmi4 - smbus: on resume, try 3 times if init fails Benjamin Tissoires
2016-10-13 15:51 ` [PATCH v3 18/18] Input: synaptics-rmi4 - fix documentation of rmi_2d_sensor_platform_data Benjamin Tissoires
2016-11-04 8:23 ` [PATCH v3 00/18] Synaptics RMI4 and SMBus implementation Benjamin Tissoires
2016-11-07 23:17 ` Nick Dyer
2016-11-08 15:09 ` Benjamin Tissoires
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=20161109010231.GJ8719@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=aduggan@synaptics.com \
--cc=benjamin.tissoires@redhat.com \
--cc=bjorn.andersson@linaro.org \
--cc=cheiny@synaptics.com \
--cc=dennis.wassenberg@secunet.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nick@shmanahar.org \
--cc=thatslyude@gmail.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.