From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] usb: kbd: don't use int xfers when polling via ctrl xfers
Date: Sun, 15 Nov 2015 20:40:45 +0100 [thread overview]
Message-ID: <5648DFBD.3060004@redhat.com> (raw)
In-Reply-To: <1447446849-10438-1-git-send-email-swarren@wwwdotorg.org>
Hi,
On 11/13/2015 09:34 PM, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
>
> When CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP is enabled, use a
> GET_REPORT control transfer to retrieve the initial state of the
> keyboard. This matches the technique used to poll the keyboard state.
> This is useful since it eliminates the remaining use of interrupt
> transfers from the USB keyboard driver, which allows it to work with
> USB HCD that don't support interrupt transfers.
>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> Are there any disadvantages to using control transfers over interrupt
> transfers? I'm not aware of any, but I assume there must be a reason
> that U-Boot typically uses interrupt transfers.
I know of at least 2 issues with using control transfers, and IMHO we
should try to just remove support for control transfers from the usb
kbd drivers.
The 2 known issues are:
1) I've some cheap wireless keyboards where the usb-dongle does not
support the ctrl method of polling and things simply do not work
when using it.
2) My USB+DVI kvm switch will report keys as pressed to all connected
machines, even those without focus when using the ctrl method (this makes
sense since other control methods must work without focus to keep the
os on the machine happy).
Regards,
Hans
> ---
> common/usb_kbd.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/common/usb_kbd.c b/common/usb_kbd.c
> index 95912f99c767..81c4d62c632b 100644
> --- a/common/usb_kbd.c
> +++ b/common/usb_kbd.c
> @@ -475,6 +475,9 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
> USB_KBD_BOOT_REPORT_SIZE, data->new,
> data->intinterval);
> if (!data->intq) {
> +#elif defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP)
> + if (usb_get_report(dev, iface->desc.bInterfaceNumber,
> + 1, 0, data->new, USB_KBD_BOOT_REPORT_SIZE) < 0) {
> #else
> if (usb_submit_int_msg(dev, data->intpipe, data->new, data->intpktsize,
> data->intinterval) < 0) {
>
next prev parent reply other threads:[~2015-11-15 19:40 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-13 20:34 [U-Boot] [PATCH] usb: kbd: don't use int xfers when polling via ctrl xfers Stephen Warren
2015-11-14 1:16 ` Marek Vasut
2015-12-15 23:35 ` Stephen Warren
2015-12-16 0:42 ` Marek Vasut
2015-12-16 2:45 ` Stephen Warren
2015-12-16 14:13 ` Marek Vasut
2015-11-15 19:40 ` Hans de Goede [this message]
2015-11-16 17:16 ` Stephen Warren
2015-11-16 17:20 ` Hans de Goede
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=5648DFBD.3060004@redhat.com \
--to=hdegoede@redhat.com \
--cc=u-boot@lists.denx.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox