diff options
author | Nitin A Kamble <nitin.a.kamble@intel.com> | 2013-09-13 21:16:44 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-09-17 14:22:34 +0100 |
commit | d74a0ecdbc85a482cab6e7eae8dcb48185d44d84 (patch) | |
tree | b1c00d316f0bfa394ccedb8dcbe0673bff29e52e /meta/recipes-core/udev | |
parent | 27e7162840482c7790480be5f52c7651d5b71794 (diff) | |
download | openembedded-core-d74a0ecdbc85a482cab6e7eae8dcb48185d44d84.tar.gz openembedded-core-d74a0ecdbc85a482cab6e7eae8dcb48185d44d84.tar.bz2 openembedded-core-d74a0ecdbc85a482cab6e7eae8dcb48185d44d84.zip |
udev: avoid autosuspend of USB input devices
Some of the external USB devices has internal USB hub, which
make them look like "fixed" rather than "removable". And USB
autosuspend does not work with some of these devices resulting
in inoperable pointing device.
Now the code detect these false "fixed" devices by looking at their
parents. If any of their parent is "removable", then USB autosuspend
is not enabled for that device, which keeps the pointing device
functional.
Fixes bug:
[YOCTO #5166]
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/udev')
-rw-r--r-- | meta/recipes-core/udev/udev.inc | 1 | ||||
-rw-r--r-- | meta/recipes-core/udev/udev/avoid-mouse-autosuspend.patch | 25 |
2 files changed, 26 insertions, 0 deletions
diff --git a/meta/recipes-core/udev/udev.inc b/meta/recipes-core/udev/udev.inc index 6606707b46..2ff8f006da 100644 --- a/meta/recipes-core/udev/udev.inc +++ b/meta/recipes-core/udev/udev.inc @@ -17,6 +17,7 @@ RPROVIDES_${PN} = "hotplug" SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \ file://0001-Fixing-keyboard_force_release.sh-shell-script-path.patch \ + file://avoid-mouse-autosuspend.patch \ file://run.rules \ file://udev.rules \ file://devfs-udev.rules \ diff --git a/meta/recipes-core/udev/udev/avoid-mouse-autosuspend.patch b/meta/recipes-core/udev/udev/avoid-mouse-autosuspend.patch new file mode 100644 index 0000000000..2c31b33b02 --- /dev/null +++ b/meta/recipes-core/udev/udev/avoid-mouse-autosuspend.patch @@ -0,0 +1,25 @@ +Source: http://cgit.freedesktop.org/systemd/systemd/commit/rules/42-usb-hid-pm.rules?id=e0386cf2809219bbdd30895f46f1f567b56902b6 + +Some USB ports on external hubs may be reported as "fixed". We only want +to auto-enable this on ports that are internal to the machine, so check +the parent state as well. + +Upstream-Status: backport + +Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> +2013/09/13 + +Index: udev-182/rules/42-usb-hid-pm.rules +=================================================================== +--- udev-182.orig/rules/42-usb-hid-pm.rules ++++ udev-182/rules/42-usb-hid-pm.rules +@@ -46,4 +46,9 @@ ACTION=="add", SUBSYSTEM=="usb", ATTRS{i + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="14dd", ATTR{idProduct}="0002", TEST=="power/control", ATTR{power/control}="auto" + + # USB HID devices that are internal to the machine should also be safe to autosuspend ++# And skip it for devices which are external but say "fixed" ++ACTION=="add", SUBSYSTEM=="usb", SUBSYSTEMS=="usb", ATTRS{removable}=="removable", GOTO="usb_hid_pm_end" ++ACTION=="add", SUBSYSTEM=="usb", SUBSYSTEMS=="usb", ATTRS{removable}=="unknown", GOTO="usb_hid_pm_end" + ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", ATTRS{removable}=="fixed", TEST=="../power/control", ATTR{../power/control}="auto" ++LABEL="usb_hid_pm_end" ++ |