All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Tissoires <benjamin.tissoires@gmail.com>
To: Antonio Borneo <borneo.antonio@gmail.com>
Cc: Jiri Kosina <jkosina@suse.cz>,
	linux-input <linux-input@vger.kernel.org>,
	David Barksdale <dbarksdale@uplogix.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] HID: cp2112: fix gpio value in gpio_direction_output
Date: Mon, 7 Jul 2014 10:03:29 -0400	[thread overview]
Message-ID: <CAN+gG=GM9FqZJwJF0G41E9oWEjcWDeavd=kfZ9qcXvoAkmUdpA@mail.gmail.com> (raw)
In-Reply-To: <1404022428-2816-1-git-send-email-borneo.antonio@gmail.com>

On Sun, Jun 29, 2014 at 2:13 AM, Antonio Borneo
<borneo.antonio@gmail.com> wrote:
> CP2112 does not offer an atomic method to set both gpio
> direction and value.
> Also it does not permit to set gpio value before putting
> gpio in output. In fact, accordingly to Silicon Labs
> AN495, Rev. 0.2, cpt. 4.4, the HID report to set gpio
> values "does not affect any pins that are not configured
> as outputs".
>
> This is confirmed on evaluation board CP2112-EK.
> With current driver, after execute:
>         echo in > /sys/class/gpio/gpio248/direction
>         echo low > /sys/class/gpio/gpio248/direction
> gpio output is still high. Only after a following
>         echo low > /sys/class/gpio/gpio248/direction
> gpio output gets low.
>
> Fix driver by changing order of operations; first set
> direction then set value.
>
> The drawback of this new sequence is that we can have
> a pulse on gpio pin when direction is changed from
> input to output-low, but this cannot be avoided on
> current CP2112.

In this case, does keeping the first cp2112_gpio_set() before setting
the output direction prevents the pulse?
If so, then you can just keep the current code, and simply add the
cp2112_gpio_set() at the end of cp2112_gpio_direction_output().

In both case, this is:
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>

Cheers,
Benjamin

>
> Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
> ---
>  drivers/hid/hid-cp2112.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c
> index 56be85a..3952d90 100644
> --- a/drivers/hid/hid-cp2112.c
> +++ b/drivers/hid/hid-cp2112.c
> @@ -240,8 +240,6 @@ static int cp2112_gpio_direction_output(struct gpio_chip *chip,
>         u8 buf[5];
>         int ret;
>
> -       cp2112_gpio_set(chip, offset, value);
> -
>         ret = hid_hw_raw_request(hdev, CP2112_GPIO_CONFIG, buf,
>                                        sizeof(buf), HID_FEATURE_REPORT,
>                                        HID_REQ_GET_REPORT);
> @@ -260,6 +258,12 @@ static int cp2112_gpio_direction_output(struct gpio_chip *chip,
>                 return ret;
>         }
>
> +       /*
> +        * Set gpio value when output direction is already set,
> +        * as specified in AN495, Rev. 0.2, cpt. 4.4
> +        */
> +       cp2112_gpio_set(chip, offset, value);
> +
>         return 0;
>  }
>
> --
> 2.0.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2014-07-07 14:03 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-29  6:13 [PATCH] HID: cp2112: fix gpio value in gpio_direction_output Antonio Borneo
2014-07-07 14:03 ` Benjamin Tissoires [this message]
2014-07-07 15:07   ` Jiri Kosina
2014-07-07 16:01   ` Antonio Borneo

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='CAN+gG=GM9FqZJwJF0G41E9oWEjcWDeavd=kfZ9qcXvoAkmUdpA@mail.gmail.com' \
    --to=benjamin.tissoires@gmail.com \
    --cc=borneo.antonio@gmail.com \
    --cc=dbarksdale@uplogix.com \
    --cc=jkosina@suse.cz \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.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.