* OOPS after connection Droids MuIn USB display
@ 2011-05-06 8:27 Erik Slagter
2011-05-06 10:51 ` Erik Slagter
0 siblings, 1 reply; 12+ messages in thread
From: Erik Slagter @ 2011-05-06 8:27 UTC (permalink / raw)
To: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 8886 bytes --]
(following Richard Goochs template bug report)
(please CC me because I am not subscribed)
(thanks in advance for looking into this!)
1. OOPS after connection Droids MuIn USB display
2. I recently bought this display:
http://www.droids.it/cmsvb4/content.php?233-990.014-MuIn-LCD_overview It
presents itself as a "communication" class USB device. After plugin, the
kernel gives an oops. The kernel keeps running, other USB devices
continue to work, but at least any lsusb started keeps hanging in "D"
state. There is no additional kernel logging about the lsusb hanging.
3. OOPS insert usb acm device
4. Linux version 2.6.38.2 (erik@skylla) (gcc version 4.5.1 20100924 (Red
Hat 4.5.1-4) (GCC) ) #3 SMP Fri Apr 22 17:31:06 CEST 2011
This is a vanilla kernel on x86-64. The fedora kernel gives the oops as
well, though.
5. --------------- >-8 ---------------------
usb 2-1.3: new full speed USB device using ehci_hcd and address 111
usb 2-1.3: New USB device found, idVendor=04d8, idProduct=000b
usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1.3: Product: VCOM
usb 2-1.3: Manufacturer: DROIDS
cdc_acm 2-1.3:1.0: This device cannot do calls on its own. It is not a
modem.
BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
IP: [<ffffffff815f64e7>] acm_probe+0x157/0xcb0
PGD 0
Oops: 0000 [#1] SMP
last sysfs file: /sys/devices/pci0000:00/0000:00:1d.7/usb2/idVendor
CPU 0
Modules linked in: [last unloaded: scsi_wait_scan]
Pid: 19, comm: khubd Tainted: G W 2.6.38.2 #3 Dell Inc. XPS
M1330
RIP: 0010:[<ffffffff815f64e7>] [<ffffffff815f64e7>] acm_probe+0x157/0xcb0
RSP: 0018:ffff88011fdf59c0 EFLAGS: 00010286
RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff8800cd803000
RDX: 0000000000000001 RSI: 0000000000000001 RDI: ffff88011bb8d800
RBP: ffff8800cd803400 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000001 R12: ffff8800cd803400
R13: 0000000000000000 R14: ffff88011bb8d888 R15: ffff8800cd803430
FS: 0000000000000000(0000) GS:ffff8800df400000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000008 CR3: 0000000001cb1000 CR4: 00000000000006f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process khubd (pid: 19, threadinfo ffff88011fdf4000, task ffff88011fca9640)
Stack:
ffff8800cd86b200 ffffffff81120a09 ffff88011fdf5a30 ffff88011bb8d888
0000000000000000 0000000000000001 0000000000000000 ffff88011bb8d800
0000000000000206 0000000000000000 ffffffff00000010 0000000000000246
Call Trace:
[<ffffffff81120a09>] ? sysfs_addrm_finish+0x29/0xe0
[<ffffffff815cff9e>] ? usb_probe_interface+0x10e/0x210
[<ffffffff81431ef6>] ? driver_probe_device+0x96/0x1b0
[<ffffffff814320b0>] ? __device_attach+0x0/0x60
[<ffffffff81430c1c>] ? bus_for_each_drv+0x5c/0x90
[<ffffffff81431d9f>] ? device_attach+0x8f/0xb0
[<ffffffff814315cd>] ? bus_probe_device+0x2d/0x50
[<ffffffff8142f4ca>] ? device_add+0x5ba/0x690
[<ffffffff815ce574>] ? usb_set_configuration+0x5b4/0x690
[<ffffffff81121722>] ? sysfs_do_create_link+0xe2/0x220
[<ffffffff815d733b>] ? generic_probe+0x3b/0xa0
[<ffffffff81431ef6>] ? driver_probe_device+0x96/0x1b0
[<ffffffff814320b0>] ? __device_attach+0x0/0x60
[<ffffffff81430c1c>] ? bus_for_each_drv+0x5c/0x90
[<ffffffff81431d9f>] ? device_attach+0x8f/0xb0
[<ffffffff814315cd>] ? bus_probe_device+0x2d/0x50
[<ffffffff8142f4ca>] ? device_add+0x5ba/0x690
[<ffffffff815c72f9>] ? usb_new_device+0xe9/0x130
[<ffffffff815c85a0>] ? hub_thread+0xba0/0x10d0
[<ffffffff810337a0>] ? enqueue_task_fair+0x160/0x1a0
[<ffffffff81058580>] ? autoremove_wake_function+0x0/0x30
[<ffffffff815c7a00>] ? hub_thread+0x0/0x10d0
[<ffffffff815c7a00>] ? hub_thread+0x0/0x10d0
[<ffffffff810580f6>] ? kthread+0x96/0xa0
[<ffffffff81003b14>] ? kernel_thread_helper+0x4/0x10
[<ffffffff81058060>] ? kthread+0x0/0xa0
[<ffffffff81003b10>] ? kernel_thread_helper+0x0/0x10
Code: 44 8b 5c 24 28 45 85 db 0f 8e 65 01 00 00 8b 74 24 28 48 8b 7c 24
38 4c 89 e5 e8 25 d3
RIP [<ffffffff815f64e7>] acm_probe+0x157/0xcb0
RSP <ffff88011fdf59c0>
CR2: 0000000000000008
---[ end trace facc809d566fe573 ]---
------------------------- >-8 --------------------
6. N/A
7.
- (software) N/A
- (cpu)
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz
stepping : 6
cpu MHz : 800.000
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm
constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm ida dts
tpr_shadow vnmi flexpriority
bogomips : 4987.54
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz
stepping : 6
cpu MHz : 800.000
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm
constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm ida dts
tpr_shadow vnmi flexpriority
bogomips : 4987.43
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
- (modules) none
- (driver/hardware details) (skip for the moment)
- (pci)
00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory
Controller Hub (rev 0c)
00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960
Integrated Graphics Controller (rev 0c)
00:02.1 Display controller: Intel Corporation Mobile GM965/GL960
Integrated Graphics Controller (rev 0c)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI
Controller #4 (rev 02)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI
Controller #5 (rev 02)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI
Controller #2 (rev 02)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio
Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express
Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express
Port 2 (rev 02)
00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express
Port 4 (rev 02)
00:1c.5 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express
Port 6 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI
Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI
Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI
Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI
Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f2)
00:1f.0 ISA bridge: Intel Corporation 82801HEM (ICH8M) LPC Interface
Controller (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E)
IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E)
SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller
(rev 02)
03:01.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller
(rev 05)
03:01.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro
Host Adapter (rev 22)
03:01.2 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host
Adapter (rev 12)
03:01.3 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)
09:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast
Ethernet PCI Express (rev 02)
0c:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or
AGN [Kedron] Network Connection (rev 61)
0d:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E
Gigabit Ethernet Controller (rev 20)
- (scsi) N/A
- (other) none, System.map doesn't seem to give any extra information
Other notes: this is exactly reproduceable, so I don't think it's a
hardware issue. The device itself (the display) seems to be working OK.
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5110 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-06 8:27 OOPS after connection Droids MuIn USB display Erik Slagter
@ 2011-05-06 10:51 ` Erik Slagter
2011-05-06 11:50 ` Maxin John
0 siblings, 1 reply; 12+ messages in thread
From: Erik Slagter @ 2011-05-06 10:51 UTC (permalink / raw)
To: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 486 bytes --]
Following up on this bug I have found the location of the OOPS in source
code (using bisection). It's clearly not the source of the problem, but
I hope it will help.
In the file drivers/usb/class/cdc-acm.c, around line 1098, there is a
comment "/*workaround for switched interfaces */" and then a check:
if (data_interface->cur_altsetting->desc.bInterfaceClass !=
CDC_DATA_INTERFACE_TYPE)
At this point, the variable data_interface is NULL and this causes the OOPS.
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5110 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-06 10:51 ` Erik Slagter
@ 2011-05-06 11:50 ` Maxin John
2011-05-06 16:07 ` Erik Slagter
2011-05-06 16:57 ` Erik Slagter
0 siblings, 2 replies; 12+ messages in thread
From: Maxin John @ 2011-05-06 11:50 UTC (permalink / raw)
To: Erik Slagter; +Cc: linux-kernel
Hi Eric,
> In the file drivers/usb/class/cdc-acm.c, around line 1098, there is a
> comment "/*workaround for switched interfaces */" and then a check:
>
> if (data_interface->cur_altsetting->desc.bInterfaceClass !=
> CDC_DATA_INTERFACE_TYPE)
>
> At this point, the variable data_interface is NULL and this causes the OOPS.
>
I have included some checks for "data_interface" since
"usb_ifnum_to_if" could return NULL.
Could you please check by applying this patch ?
Signed-off-by: Maxin B. John <maxin.john@gmail.com>
---
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index e057e53..073f418 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -960,6 +960,10 @@ static int acm_probe(struct usb_interface *intf,
if (quirks == NO_UNION_NORMAL) {
data_interface = usb_ifnum_to_if(usb_dev, 1);
control_interface = usb_ifnum_to_if(usb_dev, 0);
+ if (!data_interface || !control_interface) {
+ dev_dbg(&intf->dev, "no interfaces\n");
+ return -ENODEV;
+ }
goto skip_normal_probe;
}
@@ -1031,6 +1035,10 @@ next_desc:
if (call_interface_num > 0) {
dev_dbg(&intf->dev, "No union descriptor,
using call management descriptor\n");
data_interface = usb_ifnum_to_if(usb_dev,
(data_interface_num = call_interface_num));
+ if (!data_interface) {
+ dev_dbg(&intf->dev, "no data interface\n");
+ return -ENODEV;
+ }
control_interface = intf;
} else {
if (intf->cur_altsetting->desc.bNumEndpoints != 3) {
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-06 11:50 ` Maxin John
@ 2011-05-06 16:07 ` Erik Slagter
2011-05-06 16:57 ` Erik Slagter
1 sibling, 0 replies; 12+ messages in thread
From: Erik Slagter @ 2011-05-06 16:07 UTC (permalink / raw)
To: Maxin John; +Cc: linux-kernel
> I have included some checks for "data_interface" since
> "usb_ifnum_to_if" could return NULL.
> Could you please check by applying this patch ?
In the meantime I've done a lot of bisection and inserting printk's
(needs a reboot every time, that's why I didn't react yet).
I think I can tell even a bit more than this patch will. I already found
out that the device appears to have no data connection but does have a
control connection. The lack of data connection seems to yield the NULL.
I will now test with data_connection forced to be equal to
control_connection, because apparently some devices actually work with
only connection, maybe this is one of them.
Will have more details later.
Thank you for your interest.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-06 11:50 ` Maxin John
2011-05-06 16:07 ` Erik Slagter
@ 2011-05-06 16:57 ` Erik Slagter
2011-05-07 0:14 ` Maxin John
1 sibling, 1 reply; 12+ messages in thread
From: Erik Slagter @ 2011-05-06 16:57 UTC (permalink / raw)
To: Maxin John; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 4161 bytes --]
Yeah, I've found it!
As I mentioned earlier, the device appears to have a control interface
and no data interface. The current usb cdc-acm code doesn't account for
this and so yields a oops because data_interface is null.
I've "fixed" it very dirtily by changing these lines:
if (call_interface_num > 0) {
dev_dbg(&intf->dev, "No union descriptor, using call management
descriptor\n");
data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num =
call_interface_num));
into:
if (call_interface_num > 0) {
dev_dbg(&intf->dev, "No union descriptor, using call management
descriptor\n");
data_interface = usb_ifnum_to_if(usb_dev, 0);
I can't give an exact patch because the source is full of added debug
printk's now ;-)
As far as I understand it, this change results in data_interface to be
set equal to control_interface and later on this gets dealed with properly.
And now it not only no longer oopses, it actually works!
If you're planning to make a quirk of it, the USB ID is 04d8:000b
"Microchip Technology, Inc. PIC18F2550 (32K Flashable 10 Channel, 10 Bit
A/D USB Microcontroller"
lsusb says:
Bus 002 Device 018: ID 04d8:000b Microchip Technology, Inc. PIC18F2550
(32K Flashable 10 Channel, 10 Bit A/D USB Microcontroller)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 2 Communications
bDeviceSubClass 2 Abstract (modem)
bDeviceProtocol 1 AT-commands (v.25ter)
bMaxPacketSize0 64
idVendor 0x04d8 Microchip Technology, Inc.
idProduct 0x000b PIC18F2550 (32K Flashable 10 Channel, 10
Bit A/D USB Microcontroller)
bcdDevice 0.00
iManufacturer 1 DROIDS
iProduct 2 VCOM
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 53
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 1 AT-commands (v.25ter)
iInterface 0
CDC Header:
bcdCDC 1.10
CDC Call Management:
bmCapabilities 0x01
call management
bDataInterface 1
CDC ACM:
bmCapabilities 0x06
sends break
line coding and serial state
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 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes bInterval
10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Device Status: 0x0001
Self Powered
Thanks.
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5110 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-06 16:57 ` Erik Slagter
@ 2011-05-07 0:14 ` Maxin John
2011-05-07 7:02 ` Erik Slagter
0 siblings, 1 reply; 12+ messages in thread
From: Maxin John @ 2011-05-07 0:14 UTC (permalink / raw)
To: Erik Slagter; +Cc: linux-kernel
Hi Erik,
My apologies for misspelling your name in the previous mail.
On Fri, May 6, 2011 at 7:57 PM, Erik Slagter <erik@slagter.name> wrote:
> Yeah, I've found it!
>
> As I mentioned earlier, the device appears to have a control interface and
> no data interface. The current usb cdc-acm code doesn't account for this and
> so yields a oops because data_interface is null.
That's so good to hear.
> I can't give an exact patch because the source is full of added debug
> printk's now ;-)
>
> As far as I understand it, this change results in data_interface to be set
> equal to control_interface and later on this gets dealed with properly.
>
> And now it not only no longer oopses, it actually works!
Congratulations and thanks for explaining the details.
Best Regards,
Maxin
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-07 0:14 ` Maxin John
@ 2011-05-07 7:02 ` Erik Slagter
2011-05-07 20:02 ` Greg KH
0 siblings, 1 reply; 12+ messages in thread
From: Erik Slagter @ 2011-05-07 7:02 UTC (permalink / raw)
To: Maxin John, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 141 bytes --]
> Congratulations and thanks for explaining the details.
And now my big question is, can this be fixed upstream? ;-)
Cheers,
Erik.
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5110 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-07 7:02 ` Erik Slagter
@ 2011-05-07 20:02 ` Greg KH
2011-05-08 7:45 ` Erik Slagter
2011-05-10 18:25 ` Erik Slagter
0 siblings, 2 replies; 12+ messages in thread
From: Greg KH @ 2011-05-07 20:02 UTC (permalink / raw)
To: Erik Slagter; +Cc: Maxin John, linux-kernel
On Sat, May 07, 2011 at 09:02:49AM +0200, Erik Slagter wrote:
> >Congratulations and thanks for explaining the details.
>
> And now my big question is, can this be fixed upstream? ;-)
Yes, if someone sends us a patch :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-07 20:02 ` Greg KH
@ 2011-05-08 7:45 ` Erik Slagter
2011-05-08 15:31 ` Greg KH
2011-05-10 18:25 ` Erik Slagter
1 sibling, 1 reply; 12+ messages in thread
From: Erik Slagter @ 2011-05-08 7:45 UTC (permalink / raw)
To: Greg KH; +Cc: Maxin John, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 538 bytes --]
On 07-05-11 22:02, Greg KH wrote:
> On Sat, May 07, 2011 at 09:02:49AM +0200, Erik Slagter wrote:
>> And now my big question is, can this be fixed upstream? ;-)
>
> Yes, if someone sends us a patch :)
Somehow I knew where this was going to :-/ I can happily make a clean
patch that makes this device work, but as I am almost completely in the
dark as whether what I am doing, it will probably break any other device
and also fix it in the wrong way as well. I've had patches rejected for
the same reasons in the past...
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5110 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-08 7:45 ` Erik Slagter
@ 2011-05-08 15:31 ` Greg KH
0 siblings, 0 replies; 12+ messages in thread
From: Greg KH @ 2011-05-08 15:31 UTC (permalink / raw)
To: Erik Slagter; +Cc: Maxin John, linux-kernel
On Sun, May 08, 2011 at 09:45:07AM +0200, Erik Slagter wrote:
> On 07-05-11 22:02, Greg KH wrote:
> >On Sat, May 07, 2011 at 09:02:49AM +0200, Erik Slagter wrote:
> >>And now my big question is, can this be fixed upstream? ;-)
> >
> >Yes, if someone sends us a patch :)
>
> Somehow I knew where this was going to :-/ I can happily make a
> clean patch that makes this device work, but as I am almost
> completely in the dark as whether what I am doing, it will probably
> break any other device and also fix it in the wrong way as well.
> I've had patches rejected for the same reasons in the past...
Well, try it and we will work at it from there, otherwise nothing will
change.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-07 20:02 ` Greg KH
2011-05-08 7:45 ` Erik Slagter
@ 2011-05-10 18:25 ` Erik Slagter
2011-05-10 18:35 ` Greg KH
1 sibling, 1 reply; 12+ messages in thread
From: Erik Slagter @ 2011-05-10 18:25 UTC (permalink / raw)
To: Greg KH; +Cc: linux-kernel, Maxin John
[-- Attachment #1.1: Type: text/plain, Size: 466 bytes --]
On 07-05-11 22:02, Greg KH wrote:
> On Sat, May 07, 2011 at 09:02:49AM +0200, Erik Slagter wrote:
>>> Congratulations and thanks for explaining the details.
>> And now my big question is, can this be fixed upstream? ;-)
> Yes, if someone sends us a patch :)
Hi Greg,
Maxin John has been so kind as to make a patch which I tested and
tweaked a tiny bit. The attached patch set should do the trick. Does
this suffice this way?
Thanks,
Erik Slagter.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: diff-cdc-acm.c --]
[-- Type: text/x-csrc; name="diff-cdc-acm.c", Size: 1254 bytes --]
--- cdc-acm.c-dist 2011-05-10 19:42:37.000000000 +0200
+++ cdc-acm.c 2011-05-10 19:50:07.000000000 +0200
@@ -946,7 +946,7 @@
u8 ac_management_function = 0;
u8 call_management_function = 0;
int call_interface_num = -1;
- int data_interface_num;
+ int data_interface_num = -1;
unsigned long quirks;
int num_rx_buf;
int i;
@@ -1030,7 +1030,11 @@
if (!union_header) {
if (call_interface_num > 0) {
dev_dbg(&intf->dev, "No union descriptor, using call management descriptor\n");
- data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = call_interface_num));
+ /* quirks for Droids MuIn LCD */
+ if (quirks & NO_DATA_INTERFACE)
+ data_interface = usb_ifnum_to_if(usb_dev, 0);
+ else
+ data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = call_interface_num));
control_interface = intf;
} else {
if (intf->cur_altsetting->desc.bNumEndpoints != 3) {
@@ -1622,6 +1626,11 @@
.driver_info = NOT_A_MODEM,
},
+ /* Support for Droids MuIn LCD */
+ { USB_DEVICE(0x04d8, 0x000b),
+ .driver_info = NO_DATA_INTERFACE,
+ },
+
/* control interfaces without any protocol set */
{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
USB_CDC_PROTO_NONE) },
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: diff-cdc-acm.h --]
[-- Type: text/x-chdr; name="diff-cdc-acm.h", Size: 240 bytes --]
--- cdc-acm.h-dist 2011-05-10 19:43:18.000000000 +0200
+++ cdc-acm.h 2011-05-10 19:43:40.000000000 +0200
@@ -137,3 +137,4 @@
#define SINGLE_RX_URB 2
#define NO_CAP_LINE 4
#define NOT_A_MODEM 8
+#define NO_DATA_INTERFACE 16
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5110 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: OOPS after connection Droids MuIn USB display
2011-05-10 18:25 ` Erik Slagter
@ 2011-05-10 18:35 ` Greg KH
0 siblings, 0 replies; 12+ messages in thread
From: Greg KH @ 2011-05-10 18:35 UTC (permalink / raw)
To: Erik Slagter; +Cc: linux-kernel, Maxin John
On Tue, May 10, 2011 at 08:25:50PM +0200, Erik Slagter wrote:
> On 07-05-11 22:02, Greg KH wrote:
> >On Sat, May 07, 2011 at 09:02:49AM +0200, Erik Slagter wrote:
> >>>Congratulations and thanks for explaining the details.
> >>And now my big question is, can this be fixed upstream? ;-)
> >Yes, if someone sends us a patch :)
>
> Hi Greg,
>
> Maxin John has been so kind as to make a patch which I tested and
> tweaked a tiny bit. The attached patch set should do the trick. Does
> this suffice this way?
It's a great start, yes. But could you take a look at the file,
Documentation/Submitting patches and resend it in the format described
there so that I could apply it?
Hint, you need a good description of what the patch does, a
signed-off-by: line, perhaps a tested-by line, and the patch at the
correct level so it can be applied from the root of the kernel tree.
Can you try doing this?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2011-05-10 18:40 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-06 8:27 OOPS after connection Droids MuIn USB display Erik Slagter
2011-05-06 10:51 ` Erik Slagter
2011-05-06 11:50 ` Maxin John
2011-05-06 16:07 ` Erik Slagter
2011-05-06 16:57 ` Erik Slagter
2011-05-07 0:14 ` Maxin John
2011-05-07 7:02 ` Erik Slagter
2011-05-07 20:02 ` Greg KH
2011-05-08 7:45 ` Erik Slagter
2011-05-08 15:31 ` Greg KH
2011-05-10 18:25 ` Erik Slagter
2011-05-10 18:35 ` Greg KH
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.