multi-touch-dev team mailing list archive
-
multi-touch-dev team
-
Mailing list archive
-
Message #00986
Re: open-source driver for Microsoft Surface 2.0
On 11.05.2012 14:20, Henrik Rydberg wrote:
>>> Better yet, from the protocol details, it looks like it would be
>>> straight-forward to write an MT driver directly.
>> Can you suggest a kernel driver which I could use as base?
> Sure, drivers/input/mouse/bcm5974.c seems like a candidate. It also
> uses fixed endpoints directly.
Thanks, I'll look into it.
>> Also, slightly technical issue: the Surface has one single USB interface
>> with several bulk endpoints: one for coordinate data, one for raw image
>> data. AFAICT it's not possible to handle different endpoints in the same
>> interface with different drivers? Consequently, the MT driver should
>> also provide some sort of a video interface... (probably not a full V4L
>> interface, though, as there aren't any adjustable parameters to speak of).
> In anticipation of the pixelsense technique, I started scetching on a
> memory-mapped input interface some time ago. It would be useful also
> for the MS touchmouse. Let's see where we end up.
Right, an mmap interface would probably be a bit more efficient (saves
one buffer copy?).
> If possible, it would be great to get the full output of 'lsusb -vvv
> -d 045e:0775 > lsusb-045e:0775.dat', issued when no drivers are bound
> to the device.
Attached.
Florian
--
SENT FROM MY PDP-11
Bus 002 Device 002: ID 045e:0775 Microsoft Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x045e Microsoft Corp.
idProduct 0x0775
bcdDevice 0.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 60
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 6
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x08 EP 8 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=045e ProdID=0775 Rev=00.00
S: Manufacturer=Microsoft
S: Product=Vision Input Processor
C: #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 6 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
Follow ups
References