* Problem with appletouch driver in Linux version 2.6.23-rc7
@ 2007-09-22 17:14 Thomas Rohwer
2007-09-24 12:40 ` Dmitry Torokhov
0 siblings, 1 reply; 13+ messages in thread
From: Thomas Rohwer @ 2007-09-22 17:14 UTC (permalink / raw)
To: linux-input
[-- Attachment #1: Type: text/plain, Size: 681 bytes --]
Hello,
I tried Linux version 2.6.23-rc7 on my macbook pro using the appletouch input driver.
I noticed that often release events for the touchpad button are missing. This does not
occur with Linux version 2.6.22. I suppose this is related to the new reset logic in
the driver introduced in 2.6.23. If a reset occurs while the button is pressed the
release event seems to be not sent sometimes. The attached patch fixes the problem for me. It
changes the count towards idle so that the count is only incremented if the touchpad
button is not pressed. I also attached the output of lsusb.txt.
As I am not subscribed to the list, please cc me in replies.
Sincerely,
Thomas Rohwer
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 1295 bytes --]
*** linux-2.6.23-rc7/drivers/input/mouse/appletouch.c 2007-09-20 01:01:13.000000000 +0200
--- linux/drivers/input/mouse/appletouch.c 2007-09-22 18:26:29.000000000 +0200
***************
*** 469,474 ****
--- 469,477 ----
y = atp_calculate_abs(dev->xy_acc + ATP_XSENSORS, ATP_YSENSORS,
ATP_YFACT, &y_z, &y_f);
+ int key= dev->data[dev->datalen - 1] & 1;
+ input_report_key(dev->input, BTN_LEFT, key);
+
if (x && y) {
if (dev->x_old != -1) {
x = (dev->x_old * 3 + x) >> 2;
***************
*** 505,511 ****
the first touch unless reinitialised. Do so if it's been
idle for a while in order to avoid waking the kernel up
several hundred times a second */
! if (atp_is_geyser_3(dev)) {
dev->idlecount++;
if (dev->idlecount == 10) {
dev->valid = 0;
--- 508,514 ----
the first touch unless reinitialised. Do so if it's been
idle for a while in order to avoid waking the kernel up
several hundred times a second */
! if (atp_is_geyser_3(dev) && (!key)) {
dev->idlecount++;
if (dev->idlecount == 10) {
dev->valid = 0;
***************
*** 514,520 ****
}
}
- input_report_key(dev->input, BTN_LEFT, dev->data[dev->datalen - 1] & 1);
input_sync(dev->input);
exit:
--- 517,522 ----
[-- Attachment #3: lsusb.txt --]
[-- Type: text/plain, Size: 56853 bytes --]
Bus 006 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 1 Single TT
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3 Linux 2.6.23-rc7 ehci_hcd
iProduct 2 EHCI Host Controller
iSerial 1 0000:00:1a.7
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 12
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 4
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
TT think time 8 FS bits
bPwrOn2PwrGood 10 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0100 power
Port 3: 0000.0100 power
Port 4: 0000.0100 power
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled
Bus 007 Device 002: ID 05ac:8502 Apple Computer, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 Common Class
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x8502
bcdDevice 1.45
iManufacturer 1 Apple Inc.
iProduct 2 Built-in iSight
iSerial 3 7076827E7CF1F528 (03.01)
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 1442
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 14 Video
bFunctionSubClass 3 Video Interface Collection
bFunctionProtocol 0
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 1 Video Control
bInterfaceProtocol 0
iInterface 0
VideoControl Interface Descriptor:
bLength 13
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdUVC 1.00
wTotalLength 79
dwClockFrequency 48.000000MHz
bInCollection 1
baInterfaceNr( 0) 1
VideoControl Interface Descriptor:
bLength 18
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0201 Camera Sensor
bAssocTerminal 0
iTerminal 0
wObjectiveFocalLengthMin 0
wObjectiveFocalLengthMax 0
wOcularFocalLength 0
bControlSize 3
bmControls 0x00040002
Auto-Exposure Mode
Privacy
VideoControl Interface Descriptor:
bLength 11
bDescriptorType 36
bDescriptorSubtype 5 (PROCESSING_UNIT)
Warning: Descriptor too short
bUnitID 2
bSourceID 1
wMaxMultiplier 0
bControlSize 2
bmControls 0x0000157f
Brightness
Contrast
Hue
Saturation
Sharpness
Gamma
White Balance Temperature
Backlight Compensation
Power Line Frequency
White Balance Temperature, Auto
iProcessing 0
bmVideoStandards 0x 9
None
SECAM - 625/50
VideoControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 3
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 2
iTerminal 0
VideoControl Interface Descriptor:
bLength 28
bDescriptorType 36
bDescriptorSubtype 6 (EXTENSION_UNIT)
bUnitID 4
guidExtensionCode {a917c75d-4119-11da-ae0e-000d56ac7b4c}
bNumControl 12
bNrPins 1
baSourceID( 0) 1
bControlSize 3
bmControls( 0) 0xf9
bmControls( 1) 0x01
bmControls( 2) 0x1c
iExtension 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 6
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
VideoStreaming Interface Descriptor:
bLength 15
bDescriptorType 36
bDescriptorSubtype 1 (INPUT_HEADER)
bNumFormarts 2
wTotalLength 33284
bEndPointAddress 0
bmInfo 3
bTerminalLink 2
bStillCaptureMethod 1
bTriggerSupport 1
bTriggerUsage 1
bControlSize 1
bmaControls( 0) 11
bmaControls( 1) 11
VideoStreaming Interface Descriptor:
bLength 11
bDescriptorType 36
bDescriptorSubtype 6 (FORMAT_MJPEG)
bFormatIndex 1
bNumFrameDescriptors 8
bFlags 0
Fixed-size samples: No
bDefaultFrameIndex 1
bAspectRatioX 0
bAspectRatioY 0
bmInterlaceFlags 0x00
Interlaced stream or variable: No
Fields per frame: 1 fields
Field 1 first: No
Field pattern: Field 1 only
bCopyProtect 0
VideoStreaming Interface Descriptor:
bLength 74
bDescriptorType 36
bDescriptorSubtype 7 (FRAME_MJPEG)
bFrameIndex 1
bmCapabilities 0x00
Still image unsupported
wWidth 640
wHeight 480
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 614400
dwDefaultFrameInterval 333333
bFrameIntervalType 12
dwFrameInterval( 0) 166667
dwFrameInterval( 1) 333333
dwFrameInterval( 2) 363636
dwFrameInterval( 3) 400000
dwFrameInterval( 4) 444444
dwFrameInterval( 5) 500000
dwFrameInterval( 6) 571428
dwFrameInterval( 7) 666667
dwFrameInterval( 8) 800000
dwFrameInterval( 9) 1000000
dwFrameInterval(10) 1333333
dwFrameInterval(11) 2000000
VideoStreaming Interface Descriptor:
bLength 74
bDescriptorType 36
bDescriptorSubtype 7 (FRAME_MJPEG)
bFrameIndex 2
bmCapabilities 0x00
Still image unsupported
wWidth 720
wHeight 480
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 691200
dwDefaultFrameInterval 333333
bFrameIntervalType 12
dwFrameInterval( 0) 166667
dwFrameInterval( 1) 333333
dwFrameInterval( 2) 363636
dwFrameInterval( 3) 400000
dwFrameInterval( 4) 444444
dwFrameInterval( 5) 500000
dwFrameInterval( 6) 571428
dwFrameInterval( 7) 666667
dwFrameInterval( 8) 800000
dwFrameInterval( 9) 1000000
dwFrameInterval(10) 1333333
dwFrameInterval(11) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 7 (FRAME_MJPEG)
bFrameIndex 3
bmCapabilities 0x00
Still image unsupported
wWidth 800
wHeight 600
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 960000
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 7 (FRAME_MJPEG)
bFrameIndex 4
bmCapabilities 0x00
Still image unsupported
wWidth 1024
wHeight 576
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 1179648
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 7 (FRAME_MJPEG)
bFrameIndex 5
bmCapabilities 0x00
Still image unsupported
wWidth 1024
wHeight 768
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 1572864
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 7 (FRAME_MJPEG)
bFrameIndex 6
bmCapabilities 0x00
Still image unsupported
wWidth 1280
wHeight 720
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 1843200
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 7 (FRAME_MJPEG)
bFrameIndex 7
bmCapabilities 0x00
Still image unsupported
wWidth 1280
wHeight 960
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 2457600
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 7 (FRAME_MJPEG)
bFrameIndex 8
bmCapabilities 0x00
Still image unsupported
wWidth 1280
wHeight 1024
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 2621440
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 38
bDescriptorType 36
bDescriptorSubtype 3 (STILL_IMAGE_FRAME)
bEndpointAddress 0
bNumImageSizePatterns 8
wWidth( 0) 640
wHeight( 0) 480
wWidth( 1) 720
wHeight( 1) 480
wWidth( 2) 800
wHeight( 2) 600
wWidth( 3) 1024
wHeight( 3) 576
wWidth( 4) 1024
wHeight( 4) 768
wWidth( 5) 1280
wHeight( 5) 720
wWidth( 6) 1280
wHeight( 6) 960
wWidth( 7) 1280
wHeight( 7) 1024
bNumCompressionPatterns 8
VideoStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 13 (COLORFORMAT)
bColorPrimaries 1 (BT.709,sRGB)
bTransferCharacteristics 1 (BT.709)
bMatrixCoefficients 1 (BT.709)
VideoStreaming Interface Descriptor:
bLength 27
bDescriptorType 36
bDescriptorSubtype 4 (FORMAT_UNCOMPRESSED)
bFormatIndex 2
bNumFrameDescriptors 7
guidFormat {32595559-0000-0010-8000-00aa00389b71}
bBitsPerPixel 16
bDefaultFrameIndex 1
bAspectRatioX 0
bAspectRatioY 0
bmInterlaceFlags 0x00
Interlaced stream or variable: No
Fields per frame: 1 fields
Field 1 first: No
Field pattern: Field 1 only
bCopyProtect 0
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 1
bmCapabilities 0x00
Still image unsupported
wWidth 640
wHeight 480
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 614400
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 2
bmCapabilities 0x00
Still image unsupported
wWidth 352
wHeight 288
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 202752
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 3
bmCapabilities 0x00
Still image unsupported
wWidth 320
wHeight 240
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 153600
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 4
bmCapabilities 0x00
Still image unsupported
wWidth 176
wHeight 144
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 50688
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 5
bmCapabilities 0x00
Still image unsupported
wWidth 160
wHeight 120
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 38400
dwDefaultFrameInterval 333333
bFrameIntervalType 11
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 363636
dwFrameInterval( 2) 400000
dwFrameInterval( 3) 444444
dwFrameInterval( 4) 500000
dwFrameInterval( 5) 571428
dwFrameInterval( 6) 666667
dwFrameInterval( 7) 800000
dwFrameInterval( 8) 1000000
dwFrameInterval( 9) 1333333
dwFrameInterval(10) 2000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 6
bmCapabilities 0x00
Still image unsupported
wWidth 704
wHeight 576
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 811008
dwDefaultFrameInterval 400000
bFrameIntervalType 11
dwFrameInterval( 0) 400000
dwFrameInterval( 1) 444444
dwFrameInterval( 2) 500000
dwFrameInterval( 3) 571428
dwFrameInterval( 4) 666667
dwFrameInterval( 5) 800000
dwFrameInterval( 6) 1000000
dwFrameInterval( 7) 1333333
dwFrameInterval( 8) 2000000
dwFrameInterval( 9) 4000000
dwFrameInterval(10) 10000000
VideoStreaming Interface Descriptor:
bLength 70
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 7
bmCapabilities 0x00
Still image unsupported
wWidth 720
wHeight 480
dwMinBitRate 24576000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 691200
dwDefaultFrameInterval 400000
bFrameIntervalType 11
dwFrameInterval( 0) 400000
dwFrameInterval( 1) 444444
dwFrameInterval( 2) 500000
dwFrameInterval( 3) 571428
dwFrameInterval( 4) 666667
dwFrameInterval( 5) 800000
dwFrameInterval( 6) 1000000
dwFrameInterval( 7) 1333333
dwFrameInterval( 8) 2000000
dwFrameInterval( 9) 4000000
dwFrameInterval(10) 10000000
VideoStreaming Interface Descriptor:
bLength 34
bDescriptorType 36
bDescriptorSubtype 3 (STILL_IMAGE_FRAME)
bEndpointAddress 0
bNumImageSizePatterns 7
wWidth( 0) 640
wHeight( 0) 480
wWidth( 1) 352
wHeight( 1) 288
wWidth( 2) 320
wHeight( 2) 240
wWidth( 3) 176
wHeight( 3) 144
wWidth( 4) 160
wHeight( 4) 120
wWidth( 5) 704
wHeight( 5) 576
wWidth( 6) 720
wHeight( 6) 480
bNumCompressionPatterns 7
VideoStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 13 (COLORFORMAT)
bColorPrimaries 1 (BT.709,sRGB)
bTransferCharacteristics 1 (BT.709)
bMatrixCoefficients 1 (BT.709)
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0080 1x 128 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 3
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0400 1x 0 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 4
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0b00 2x 768 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 5
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0c00 2x 0 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 6
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x1380 3x 896 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 7
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x1400 3x 0 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 Common Class
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)
Bus 007 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 1 Single TT
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3 Linux 2.6.23-rc7 ehci_hcd
iProduct 2 EHCI Host Controller
iSerial 1 0000:00:1d.7
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 12
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 6
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
TT think time 8 FS bits
bPwrOn2PwrGood 10 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0100 power
Port 3: 0000.0100 power
Port 4: 0000.0503 highspeed power enable connect
Port 5: 0000.0100 power
Port 6: 0000.0100 power
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled
Bus 002 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3 Linux 2.6.23-rc7 uhci_hcd
iProduct 2 UHCI Host Controller
iSerial 1 0000:00:1a.1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 255
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 2
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 1 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0100 power
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled
Bus 004 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3 Linux 2.6.23-rc7 uhci_hcd
iProduct 2 UHCI Host Controller
iSerial 1 0000:00:1d.1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 255
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 2
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 1 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0100 power
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled
Bus 001 Device 003: ID 05ac:1000 Apple Computer, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x1000
bcdDevice 19.65
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 59
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Devices
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 63
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Devices
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 2 Mouse
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 61
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Device Status: 0x0001
Self Powered
Bus 001 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3 Linux 2.6.23-rc7 uhci_hcd
iProduct 2 UHCI Host Controller
iSerial 1 0000:00:1a.0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 255
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 2
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 1 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0103 power enable connect
Port 2: 0000.0100 power
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled
Bus 003 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3 Linux 2.6.23-rc7 uhci_hcd
iProduct 2 UHCI Host Controller
iSerial 1 0000:00:1d.0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 255
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 2
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 1 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0100 power
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled
Bus 005 Device 003: ID 05ac:021b Apple Computer, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x021b
bcdDevice 0.16
iManufacturer 1 Apple Computer
iProduct 2 Apple Internal Keyboard / Trackpad
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 84
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 40mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Devices
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 3 Apple Internal Keyboard
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 13 International (ISO)
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 73
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 8
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Devices
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 2 Mouse
iInterface 4 Touchpad
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 89
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 8
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Devices
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 3 Apple Internal Keyboard
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 20
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 8
Device Status: 0x0000
(Bus Powered)
Bus 005 Device 002: ID 05ac:8242 Apple Computer, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x8242
bcdDevice 0.16
iManufacturer 1 Apple Computer, Inc.
iProduct 2 IR Receiver
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 34
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 1 Apple Computer, Inc.
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Devices
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 42
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)
Bus 005 Device 001: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed hub
bMaxPacketSize0 64
idVendor 0x0000
idProduct 0x0000
bcdDevice 2.06
iManufacturer 3 Linux 2.6.23-rc7 uhci_hcd
iProduct 2 UHCI Host Controller
iSerial 1 0000:00:1d.2
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 255
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 2
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 1 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0303 lowspeed power enable connect
Port 2: 0000.0103 power enable connect
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-22 17:14 Problem with appletouch driver in Linux version 2.6.23-rc7 Thomas Rohwer
@ 2007-09-24 12:40 ` Dmitry Torokhov
2007-09-24 12:49 ` Matthew Garrett
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2007-09-24 12:40 UTC (permalink / raw)
To: Thomas Rohwer; +Cc: linux-input, Soeren Sonnenburg, Matthew Garrett
Hi Thomas,
On 9/22/07, Thomas Rohwer <tr@tng.de> wrote:
> Hello,
>
> I tried Linux version 2.6.23-rc7 on my macbook pro using the appletouch input driver.
> I noticed that often release events for the touchpad button are missing. This does not
> occur with Linux version 2.6.22. I suppose this is related to the new reset logic in
> the driver introduced in 2.6.23. If a reset occurs while the button is pressed the
> release event seems to be not sent sometimes. The attached patch fixes the problem for me. It
> changes the count towards idle so that the count is only incremented if the touchpad
> button is not pressed. I also attached the output of lsusb.txt.
>
> As I am not subscribed to the list, please cc me in replies.
>
Yep, this makes sense, thank you for the patch. Couple of comments:
> y = atp_calculate_abs(dev->xy_acc + ATP_XSENSORS, ATP_YSENSORS,
> ATP_YFACT, &y_z, &y_f);
>
> + int key= dev->data[dev->datalen - 1] & 1;
We do not normally put variable definitions in the middle of the code
but at the beginning of the block.
> the first touch unless reinitialised. Do so if it's been
> idle for a while in order to avoid waking the kernel up
> several hundred times a second */
> ! if (atp_is_geyser_3(dev)) {
Unified diffs please.
I will fix these up myself, you don't need to resubmit the patch. I
only need "Signed-off-by: ... " line from you. Thanks!
--
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-24 12:40 ` Dmitry Torokhov
@ 2007-09-24 12:49 ` Matthew Garrett
2007-09-24 13:03 ` Soeren Sonnenburg
2007-09-24 13:10 ` Thomas Rohwer
2 siblings, 0 replies; 13+ messages in thread
From: Matthew Garrett @ 2007-09-24 12:49 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Thomas Rohwer, linux-input, Soeren Sonnenburg
On Mon, Sep 24, 2007 at 08:40:56AM -0400, Dmitry Torokhov wrote:
> On 9/22/07, Thomas Rohwer <tr@tng.de> wrote:
> > I tried Linux version 2.6.23-rc7 on my macbook pro using the appletouch input driver.
> > I noticed that often release events for the touchpad button are missing. This does not
> > occur with Linux version 2.6.22. I suppose this is related to the new reset logic in
> > the driver introduced in 2.6.23. If a reset occurs while the button is pressed the
> > release event seems to be not sent sometimes. The attached patch fixes the problem for me. It
> > changes the count towards idle so that the count is only incremented if the touchpad
> > button is not pressed. I also attached the output of lsusb.txt.
I'd spotted this, but hadn't got around to fixing it yet. Thanks for
picking it up!
> I will fix these up myself, you don't need to resubmit the patch. I
> only need "Signed-off-by: ... " line from you. Thanks!
Acked-by: Matthew Garrett <mjg59@srcf.ucam.org>
--
Matthew Garrett | mjg59@srcf.ucam.org
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-24 12:40 ` Dmitry Torokhov
2007-09-24 12:49 ` Matthew Garrett
@ 2007-09-24 13:03 ` Soeren Sonnenburg
2007-09-24 13:22 ` Thomas Rohwer
2007-09-24 13:10 ` Thomas Rohwer
2 siblings, 1 reply; 13+ messages in thread
From: Soeren Sonnenburg @ 2007-09-24 13:03 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Thomas Rohwer, linux-input, Matthew Garrett
On Mon, 2007-09-24 at 08:40 -0400, Dmitry Torokhov wrote:
> Hi Thomas,
>
> On 9/22/07, Thomas Rohwer <tr@tng.de> wrote:
> > Hello,
Hi Thomas,
could you please re-send the patch? I for some reason have yet to see
it ...
Thanks,
Soeren
--
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-24 12:40 ` Dmitry Torokhov
2007-09-24 12:49 ` Matthew Garrett
2007-09-24 13:03 ` Soeren Sonnenburg
@ 2007-09-24 13:10 ` Thomas Rohwer
2 siblings, 0 replies; 13+ messages in thread
From: Thomas Rohwer @ 2007-09-24 13:10 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input, Soeren Sonnenburg, Matthew Garrett
Hello,
thanks for taking a look and fixing the patch. The patch was originally only intended
to document the bug (since I am not familiar with the code), but if you think the fix is ok, that is fine.
> I will fix these up myself, you don't need to resubmit the patch. I
> only need "Signed-off-by: ... " line from you. Thanks!
Signed-off-by: Thomas Rohwer <trohwer@tng.de>
Sincerely,
Thomas Rohwer
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-24 13:03 ` Soeren Sonnenburg
@ 2007-09-24 13:22 ` Thomas Rohwer
2007-09-26 19:56 ` Soeren Sonnenburg
0 siblings, 1 reply; 13+ messages in thread
From: Thomas Rohwer @ 2007-09-24 13:22 UTC (permalink / raw)
To: Soeren Sonnenburg; +Cc: Dmitry Torokhov, linux-input, Matthew Garrett
[-- Attachment #1: Type: text/plain, Size: 176 bytes --]
Hello,
> could you please re-send the patch? I for some reason have yet to see
> it ...
here it is again, adressing also the comments from Dmitry.
Sincerely,
Thomas Rohwer
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 1078 bytes --]
--- linux-2.6.23-rc7/drivers/input/mouse/appletouch.c 2007-09-20 01:01:13.000000000 +0200
+++ linux/drivers/input/mouse/appletouch.c 2007-09-24 15:15:56.000000000 +0200
@@ -328,6 +328,7 @@
{
int x, y, x_z, y_z, x_f, y_f;
int retval, i, j;
+ int key;
struct atp *dev = urb->context;
switch (urb->status) {
@@ -469,6 +470,9 @@
y = atp_calculate_abs(dev->xy_acc + ATP_XSENSORS, ATP_YSENSORS,
ATP_YFACT, &y_z, &y_f);
+ key= dev->data[dev->datalen - 1] & 1;
+ input_report_key(dev->input, BTN_LEFT, key);
+
if (x && y) {
if (dev->x_old != -1) {
x = (dev->x_old * 3 + x) >> 2;
@@ -505,7 +509,7 @@
the first touch unless reinitialised. Do so if it's been
idle for a while in order to avoid waking the kernel up
several hundred times a second */
- if (atp_is_geyser_3(dev)) {
+ if (atp_is_geyser_3(dev) && (!key)) {
dev->idlecount++;
if (dev->idlecount == 10) {
dev->valid = 0;
@@ -514,7 +518,6 @@
}
}
- input_report_key(dev->input, BTN_LEFT, dev->data[dev->datalen - 1] & 1);
input_sync(dev->input);
exit:
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-24 13:22 ` Thomas Rohwer
@ 2007-09-26 19:56 ` Soeren Sonnenburg
2007-09-26 20:13 ` Dmitry Torokhov
0 siblings, 1 reply; 13+ messages in thread
From: Soeren Sonnenburg @ 2007-09-26 19:56 UTC (permalink / raw)
To: Thomas Rohwer; +Cc: Dmitry Torokhov, linux-input, Matthew Garrett
On Mon, 2007-09-24 at 15:22 +0200, Thomas Rohwer wrote:
> Hello,
>
> > could you please re-send the patch? I for some reason have yet to see
> > it ...
>
> here it is again, adressing also the comments from Dmitry.
Thomas, Matthew and Dmitry,
I think there is another bug in this. I mean whenever a mouse button is
pressed or the mouse is moved the counter should be reset - no?
Currently the idle counter is just increased...
I mean shouldn't it be
if (x || y || key)
dev->idlecount=0;
if (!x && !y && !key)
{
dev->idlecount++;
if (dev->idlecount == 10) {
dev->valid = 0;
schedule_work(&dev->work);
}
}
Soeren
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-26 19:56 ` Soeren Sonnenburg
@ 2007-09-26 20:13 ` Dmitry Torokhov
2007-09-27 17:51 ` Soeren Sonnenburg
0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Torokhov @ 2007-09-26 20:13 UTC (permalink / raw)
To: Soeren Sonnenburg; +Cc: Thomas Rohwer, linux-input, Matthew Garrett
On 9/26/07, Soeren Sonnenburg <kernel@nn7.de> wrote:
>
> On Mon, 2007-09-24 at 15:22 +0200, Thomas Rohwer wrote:
> > Hello,
> >
> > > could you please re-send the patch? I for some reason have yet to see
> > > it ...
> >
> > here it is again, adressing also the comments from Dmitry.
>
> Thomas, Matthew and Dmitry,
>
> I think there is another bug in this. I mean whenever a mouse button is
> pressed or the mouse is moved the counter should be reset - no?
>
> Currently the idle counter is just increased...
>
> I mean shouldn't it be
>
> if (x || y || key)
> dev->idlecount=0;
>
> if (!x && !y && !key)
> {
> dev->idlecount++;
> if (dev->idlecount == 10) {
> dev->valid = 0;
> schedule_work(&dev->work);
> }
> }
>
Yes, I think you are right. I guess one could trigger an extra reset
by pressing the button repeatedly witout touching the pad. But because
we won't do reset while the button is pressed we'll never lose release
event.
I guess we want to fix it but it can wait for 2.6.24. A patch woudl be
appreciated.
Thanks!
--
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-26 20:13 ` Dmitry Torokhov
@ 2007-09-27 17:51 ` Soeren Sonnenburg
2007-09-27 21:08 ` Thomas Rohwer
0 siblings, 1 reply; 13+ messages in thread
From: Soeren Sonnenburg @ 2007-09-27 17:51 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Thomas Rohwer, linux-input, Matthew Garrett
[-- Attachment #1: Type: text/plain, Size: 1417 bytes --]
On Wed, 2007-09-26 at 16:13 -0400, Dmitry Torokhov wrote:
> On 9/26/07, Soeren Sonnenburg <kernel@nn7.de> wrote:
> >
> > On Mon, 2007-09-24 at 15:22 +0200, Thomas Rohwer wrote:
> > > Hello,
> > >
> > > > could you please re-send the patch? I for some reason have yet to see
> > > > it ...
> > >
> > > here it is again, adressing also the comments from Dmitry.
> >
> > Thomas, Matthew and Dmitry,
> >
> > I think there is another bug in this. I mean whenever a mouse button is
> > pressed or the mouse is moved the counter should be reset - no?
> >
> > Currently the idle counter is just increased...
> >
> > I mean shouldn't it be
> >
> > if (x || y || key)
> > dev->idlecount=0;
> >
> > if (!x && !y && !key)
> > {
> > dev->idlecount++;
> > if (dev->idlecount == 10) {
> > dev->valid = 0;
> > schedule_work(&dev->work);
> > }
> > }
> >
>
> Yes, I think you are right. I guess one could trigger an extra reset
> by pressing the button repeatedly witout touching the pad. But because
> we won't do reset while the button is pressed we'll never lose release
> event.
>
> I guess we want to fix it but it can wait for 2.6.24. A patch woudl be
> appreciated.
Patch is attached. As all these if () conditions made it quite
unreadable I moved the block dealing with geyser 3 and above to the very
bottom. Still compiles/works for me. Please have a look.
Soeren
[-- Attachment #2: appletouch.diff --]
[-- Type: text/x-patch, Size: 1187 bytes --]
Signed-off-by: Soeren Sonnenburg <kernel@nn7.de>
diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/appletouch.c
index a1804bf..78f30b2 100644
--- a/drivers/input/mouse/appletouch.c
+++ b/drivers/input/mouse/appletouch.c
@@ -502,18 +502,23 @@ static void atp_complete(struct urb* urb)
/* reset the accumulator on release */
memset(dev->xy_acc, 0, sizeof(dev->xy_acc));
+ }
+
+ /* Geyser 3 will continue to send packets continually after
+ the first touch unless reinitialised. Do so if it's been
+ idle for a while in order to avoid waking the kernel up
+ several hundred times a second */
- /* Geyser 3 will continue to send packets continually after
- the first touch unless reinitialised. Do so if it's been
- idle for a while in order to avoid waking the kernel up
- several hundred times a second */
- if (!key && atp_is_geyser_3(dev)) {
+ if (atp_is_geyser_3(dev)) {
+ if (!x && !y && !key) {
dev->idlecount++;
if (dev->idlecount == 10) {
dev->valid = 0;
schedule_work(&dev->work);
}
}
+ else
+ dev->idlecount=0;
}
input_report_key(dev->input, BTN_LEFT, key);
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-27 17:51 ` Soeren Sonnenburg
@ 2007-09-27 21:08 ` Thomas Rohwer
2007-10-13 21:33 ` Soeren Sonnenburg
0 siblings, 1 reply; 13+ messages in thread
From: Thomas Rohwer @ 2007-09-27 21:08 UTC (permalink / raw)
To: Soeren Sonnenburg; +Cc: Dmitry Torokhov, linux-input, Matthew Garrett
>>> I think there is another bug in this. I mean whenever a mouse button is
>>> pressed or the mouse is moved the counter should be reset - no?
>>>
>>> Currently the idle counter is just increased...
>>>
>>> I mean shouldn't it be
>>>
>>> if (x || y || key)
>>> dev->idlecount=0;
>>>
>>> if (!x && !y && !key)
>>> {
>>> dev->idlecount++;
>>> if (dev->idlecount == 10) {
>>> dev->valid = 0;
>>> schedule_work(&dev->work);
>>> }
>>> }
Hello,
I agree that this is makes sense. I was wondering if one can remove the whole
idlecount logic. I tried replacing 10 with 1. This almost works; only if you press
the touchpad button, after a reset happened, you first get a usb packet with the
button state still 0 and after that one with button 1. I.e. with count 1 instead of 10
you reset the device another time in this case. But one could handle this case separately.
I am currently working with 2 instead of 10.
I was also wondering when the procedure atp_reinit is executed after using schedule_work.
Can it happen that atp_complete is called (even multiple times) before atp_reinit is executed?
Sincerely,
Thomas Rohwer
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-09-27 21:08 ` Thomas Rohwer
@ 2007-10-13 21:33 ` Soeren Sonnenburg
2007-10-13 21:44 ` Matthew Garrett
2007-10-15 13:09 ` Dmitry Torokhov
0 siblings, 2 replies; 13+ messages in thread
From: Soeren Sonnenburg @ 2007-10-13 21:33 UTC (permalink / raw)
To: Thomas Rohwer; +Cc: Dmitry Torokhov, linux-input, Matthew Garrett
[-- Attachment #1: Type: text/plain, Size: 1627 bytes --]
On Thu, 2007-09-27 at 23:08 +0200, Thomas Rohwer wrote:
> >>> I think there is another bug in this. I mean whenever a mouse button is
> >>> pressed or the mouse is moved the counter should be reset - no?
> >>>
> >>> Currently the idle counter is just increased...
> >>>
> >>> I mean shouldn't it be
> >>>
> >>> if (x || y || key)
> >>> dev->idlecount=0;
> >>>
> >>> if (!x && !y && !key)
> >>> {
> >>> dev->idlecount++;
> >>> if (dev->idlecount == 10) {
> >>> dev->valid = 0;
> >>> schedule_work(&dev->work);
> >>> }
> >>> }
>
> Hello,
>
> I agree that this is makes sense. I was wondering if one can remove the whole
> idlecount logic. I tried replacing 10 with 1. This almost works; only if you press
> the touchpad button, after a reset happened, you first get a usb packet with the
> button state still 0 and after that one with button 1. I.e. with count 1 instead of 10
> you reset the device another time in this case. But one could handle this case separately.
> I am currently working with 2 instead of 10.
I am not sure whether it is worth fighting for. For the moment I think
we should just use the attached patch (where I as you suggest set
idlecount to 2).
So if there are no objections, Dmity please apply.
However if the touchpad sets some kind of 'ignore data' status bit on
'wakeup' this could be used to cleanup the code.
> I was also wondering when the procedure atp_reinit is executed after using schedule_work.
> Can it happen that atp_complete is called (even multiple times) before atp_reinit is executed?
I have no idea, Matthew?
Soeren.
[-- Attachment #2: appletouch.patch --]
[-- Type: text/x-patch, Size: 1581 bytes --]
Signed-off-by: Soeren Sonnenburg <kernel@nn7.de>
diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/appletouch.c
index a1804bf..aa2bb4e 100644
--- a/drivers/input/mouse/appletouch.c
+++ b/drivers/input/mouse/appletouch.c
@@ -127,7 +127,8 @@ MODULE_DEVICE_TABLE (usb, atp_table);
* Threshold for the touchpad sensors. Any change less than ATP_THRESHOLD is
* ignored.
*/
-#define ATP_THRESHOLD 5
+#define ATP_THRESHOLD 5
+#define ATP_IDLE_LIMIT 2
/* MacBook Pro (Geyser 3 & 4) initialization constants */
#define ATP_GEYSER3_MODE_READ_REQUEST_ID 1
@@ -502,18 +503,23 @@ static void atp_complete(struct urb* urb)
/* reset the accumulator on release */
memset(dev->xy_acc, 0, sizeof(dev->xy_acc));
+ }
+
+ /* Geyser 3 will continue to send packets continually after
+ the first touch unless reinitialised. Do so if it's been
+ idle for a while in order to avoid waking the kernel up
+ several hundred times a second */
- /* Geyser 3 will continue to send packets continually after
- the first touch unless reinitialised. Do so if it's been
- idle for a while in order to avoid waking the kernel up
- several hundred times a second */
- if (!key && atp_is_geyser_3(dev)) {
+ if (atp_is_geyser_3(dev)) {
+ if (!x && !y && !key) {
dev->idlecount++;
- if (dev->idlecount == 10) {
+ if (dev->idlecount == ATP_IDLE_LIMIT) {
dev->valid = 0;
schedule_work(&dev->work);
}
}
+ else
+ dev->idlecount=0;
}
input_report_key(dev->input, BTN_LEFT, key);
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-10-13 21:33 ` Soeren Sonnenburg
@ 2007-10-13 21:44 ` Matthew Garrett
2007-10-15 13:09 ` Dmitry Torokhov
1 sibling, 0 replies; 13+ messages in thread
From: Matthew Garrett @ 2007-10-13 21:44 UTC (permalink / raw)
To: Soeren Sonnenburg; +Cc: Thomas Rohwer, Dmitry Torokhov, linux-input
On Sat, Oct 13, 2007 at 11:33:10PM +0200, Soeren Sonnenburg wrote:
> On Thu, 2007-09-27 at 23:08 +0200, Thomas Rohwer wrote:
> > I was also wondering when the procedure atp_reinit is executed after using schedule_work.
> > Can it happen that atp_complete is called (even multiple times) before atp_reinit is executed?
>
> I have no idea, Matthew?
My recollection is that atp_complete is called in a context that doesn't
permit sending new urbs.
--
Matthew Garrett | mjg59@srcf.ucam.org
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Problem with appletouch driver in Linux version 2.6.23-rc7
2007-10-13 21:33 ` Soeren Sonnenburg
2007-10-13 21:44 ` Matthew Garrett
@ 2007-10-15 13:09 ` Dmitry Torokhov
1 sibling, 0 replies; 13+ messages in thread
From: Dmitry Torokhov @ 2007-10-15 13:09 UTC (permalink / raw)
To: Soeren Sonnenburg; +Cc: Thomas Rohwer, linux-input, Matthew Garrett
Hi Soeren,
On 10/13/07, Soeren Sonnenburg <kernel@nn7.de> wrote:
>
> I am not sure whether it is worth fighting for. For the moment I think
> we should just use the attached patch (where I as you suggest set
> idlecount to 2).
>
> So if there are no objections, Dmity please apply.
>
I already applied the previous version of the patch. I think we are
getting to "best is the enemy of good" stage at this point so I'll
drop this one, at leat fro now.
Thanks.
--
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2007-10-15 13:09 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-22 17:14 Problem with appletouch driver in Linux version 2.6.23-rc7 Thomas Rohwer
2007-09-24 12:40 ` Dmitry Torokhov
2007-09-24 12:49 ` Matthew Garrett
2007-09-24 13:03 ` Soeren Sonnenburg
2007-09-24 13:22 ` Thomas Rohwer
2007-09-26 19:56 ` Soeren Sonnenburg
2007-09-26 20:13 ` Dmitry Torokhov
2007-09-27 17:51 ` Soeren Sonnenburg
2007-09-27 21:08 ` Thomas Rohwer
2007-10-13 21:33 ` Soeren Sonnenburg
2007-10-13 21:44 ` Matthew Garrett
2007-10-15 13:09 ` Dmitry Torokhov
2007-09-24 13:10 ` Thomas Rohwer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).