linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 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).