lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 5 Feb 2018 11:07:08 +0100
From:   Christian Gmeiner <christian.gmeiner@...il.com>
To:     Martin Kepplinger <martin.kepplinger@...zinger.com>
Cc:     Dmitry Torokhov <dmitry.torokhov@...il.com>,
        linux-input <linux-input@...r.kernel.org>,
        LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 1/2] input: touchscreen: ar1021_i2c: enable touch mode
 during open

Hi all.

2017-04-27 14:22 GMT+02:00 Martin Kepplinger <martin.kepplinger@...zinger.com>:
> The device could as well be in command mode, in which this driver cannot
> handle the device. When opening the device, let's make sure the device
> will be in the mode we expect it to be for this driver.
>

I run into issues caused by this change. It turns out that the device
is non-functional
after some warm-reboots and as a result I am not able to use xorg's
evdev driver.
So I have some questions about this change:

* Should we enable irq before calling i2c_master_send(..) as the chip raises an
  irq if the command was processed?

* Would it be enough to send this command only once during driver
lifetime? I can
  see that on my system open gets called 3 times during boot-up.

* What are the circumstances the touch device would be in an other state? In the
  official kernel driver the userspace can send commands via sysfs.
Also the driver
  does set the touch enable mode as this patch does.


> Signed-off-by: Martin Kepplinger <martin.kepplinger@...zinger.com>
> ---
>  drivers/input/touchscreen/ar1021_i2c.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
>
> diff --git a/drivers/input/touchscreen/ar1021_i2c.c b/drivers/input/touchscreen/ar1021_i2c.c
> index 1a94d8b..2a76231 100644
> --- a/drivers/input/touchscreen/ar1021_i2c.c
> +++ b/drivers/input/touchscreen/ar1021_i2c.c
> @@ -18,6 +18,12 @@
>  #define AR1021_MAX_X   4095
>  #define AR1021_MAX_Y   4095
>
> +#define AR1021_CMD     0x55
> +#define AR1021_TOUCH   0x80
> +
> +#define AR1021_CMD_ENABLE_TOUCH                0x12
> +#define AR1021_CMD_DISABLE_TOUCH       0x13
> +
>  struct ar1021_i2c {
>         struct i2c_client *client;
>         struct input_dev *input;
> @@ -58,6 +64,15 @@ static int ar1021_i2c_open(struct input_dev *dev)
>  {
>         struct ar1021_i2c *ar1021 = input_get_drvdata(dev);
>         struct i2c_client *client = ar1021->client;
> +       int error;
> +       u8 cmd_enable_touch[3] = {AR1021_CMD,
> +                                 0x01, /* number of bytes after this */
> +                                 AR1021_CMD_ENABLE_TOUCH };
> +
> +       error = i2c_master_send(ar1021->client, cmd_enable_touch,
> +                               sizeof(cmd_enable_touch));
> +       if (error < 0)
> +               return error;
>
>         enable_irq(client->irq);
>
> --
> 2.1.4
>

-- 
greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ