From fdf8de5f419e66a793e64896c53f0ccff0a19efb Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Wed, 8 Oct 2008 23:27:18 +0200 Subject: bcm5974 (0.57) unstable; urgency=low * Keep reset_resume around * Submitted to kernel.org -- Henrik Rydberg Sat, 19 Jul 2008 01:42:52 +0200 --- CHANGES | 7 +++++++ bcm5974-dkms-mkdeb/debian/changelog | 7 ++----- bcm5974.c | 26 +++++++++++++++++++++++--- dkms.conf | 2 +- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index d31ea79..89f02c1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,10 @@ +bcm5974 (0.57) unstable; urgency=low + + * Keep reset_resume around + * Submitted to kernel.org + + -- Henrik Rydberg Fri, 18 Jul 2008 02:42:52 +0200 + bcm5974 (0.56) unstable; urgency=low * Leave device initialization to hid; use mode-switch only diff --git a/bcm5974-dkms-mkdeb/debian/changelog b/bcm5974-dkms-mkdeb/debian/changelog index cd60af8..76304fd 100644 --- a/bcm5974-dkms-mkdeb/debian/changelog +++ b/bcm5974-dkms-mkdeb/debian/changelog @@ -1,9 +1,6 @@ MODULE_NAME-dkms (MODULE_VERSION) unstable; urgency=low - * Leave device initialization to hid; use mode-switch only - * Mode switch moved to atp_open and simplified - * Corrected cleanup action in atp_open - * Simplified control package detection - * Removed reset_resume, pre_reset, post_reset; not needed + * Keep reset_resume around + * Submitted to kernel.org -- Henrik Rydberg DATE_STAMP diff --git a/bcm5974.c b/bcm5974.c index 67cbab3..1e1cf04 100644 --- a/bcm5974.c +++ b/bcm5974.c @@ -404,14 +404,33 @@ exit: err("bcm5974: trackpad urb failed: %d", error); } +/* + * The Wellspring trackpad, like many recent Apple trackpads, share + * the usb device with the keyboard. Since keyboards are usually + * handled by the HID system, the device ends up being handled by two + * modules. Setting up the device therefore becomes slightly + * complicated. To enable multitouch features, a mode switch is + * required, which is usually applied via the control interface of the + * device. It can be argued where this switch should take place. In + * some drivers, like appletouch, the switch is made during + * probe. However, the hid module may also alter the state of the + * device, resulting in trackpad malfunction under certain + * circumstances. To get around this problem, there is at least one + * example that utilizes the USB_QUIRK_RESET_RESUME quirk in order to + * recieve a reset_resume request rather than the normal resume. Since + * the implementation of reset_resume is equal to mode switch plus + * open, it seems easier to always do the switch while opening the + * device. + */ static int atp_open(struct input_dev *input) { struct atp *dev = input_get_drvdata(input); if (!dev->open) { - if (atp_wellspring_mode(dev)) - printk(KERN_INFO "bcm5974: mode switch failed\n"); - + if (atp_wellspring_mode(dev)) { + dprintk(1, "bcm5974: mode switch failed\n"); + goto error; + } if (usb_submit_urb(dev->bt_urb, GFP_KERNEL)) goto error; if (usb_submit_urb(dev->tp_urb, GFP_KERNEL)) @@ -609,6 +628,7 @@ static struct usb_driver atp_driver = { .disconnect = atp_disconnect, .suspend = atp_suspend, .resume = atp_resume, + .reset_resume = atp_resume, .id_table = atp_table, }; diff --git a/dkms.conf b/dkms.conf index 93e97f3..2d5c9f4 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="bcm5974" -PACKAGE_VERSION="0.56" +PACKAGE_VERSION="0.57" MAKE[0]="make -C ${kernel_source_dir} SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build modules" BUILT_MODULE_NAME[0]="bcm5974" -- cgit v1.2.3