Actions
Bug #13880
openusbsacm fails to open multi-config device
Status:
New
Priority:
Normal
Assignee:
-
Category:
driver - device drivers
Start date:
Due date:
% Done:
0%
Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:
External Bug:
Description
Any attempt to attach the following device to usbsacm(4D)
results in the following error:
Jun 18 00:09:31 sun-pc usba: [ID 723738 kern.info] /pci@0,0/pci1022,1453@1,3/pci1022,43c6@0,2/pci1022,43c7@6/pci1b6f,7052@0/communications@2 (usb_mid8): can't support ugen for multiple configurations devices that have attached child interface drivers
the two configurations differ only in the number of data interfaces exposed (one vs two). I haven't used this device in such a long time that I've forgotten what the second config is used for, perhaps it is invoked only during firmware update? (Rockwell ACF chipsets contain a full microcontroller)
the device information from kadb:
INDEX DRIVER INST NODE GEN VID.PID PRODUCT 8 usb_mid 8 communications1.1 0803.3095 USB Modem usba_device: 0xfffffe2d518a7580 mfg_prod_sn: Conexant - USB Modem - 24680246 communications, instance #8 (driver name: usb_mid) /pci@0,0/pci1022,1453@1,3/pci1022,43c6@0,2/pci1022,43c7@6/pci1b6f,7052@0/communications@2 dip: 0xfffffe2d1175f738 usb_mid_statep: 0xfffffe2d11504bf0 usb_mid_errlevel: 0x4 { modem, instance #-1 (driver not attached) /pci@0,0/pci1022,1453@1,3/pci1022,43c6@0,2/pci1022,43c7@6/pci1b6f,7052@0/communications@2/modem dip: 0xfffffe2d1175ebf8 data, instance #-1 (driver not attached) /pci@0,0/pci1022,1453@1,3/pci1022,43c6@0,2/pci1022,43c7@6/pci1b6f,7052@0/communications@2/data dip: 0xfffffe2d1175e928 } Device Descriptor { bLength = 0x12 bDescriptorType = 0x1 bcdUSB = 0x110 bDeviceClass = 0x2 bDeviceSubClass = 0 bDeviceProtocol = 0 bMaxPacketSize0 = 0x40 idVendor = 0x803 idProduct = 0x3095 bcdDevice = 0x100 iManufacturer = 0x1 iProduct = 0x2 iSerialNumber = 0x3 bNumConfigurations = 0x2 } -- Active Config Index 0 Configuration Descriptor { bLength = 0x9 bDescriptorType = 0x2 wTotalLength = 0x49 bNumInterfaces = 0x2 bConfigurationValue = 0x1 iConfiguration = 0x0 bmAttributes = 0x80 bMaxPower = 0x32 } Interface Descriptor { bLength = 0x9 bDescriptorType = 0x4 bInterfaceNumber = 0x0 bAlternateSetting = 0x0 bNumEndpoints = 0x1 bInterfaceClass = 0x2 bInterfaceSubClass = 0x2 bInterfaceProtocol = 0x1 iInterface = 0x0 } Endpoint Descriptor { bLength = 0x7 bDescriptorType = 0x5 bEndpointAddress = 0x81 bmAttributes = 0x3 wMaxPacketSize = 0x40 bInterval = 0x80 } Interface Descriptor { bLength = 0x9 bDescriptorType = 0x4 bInterfaceNumber = 0x1 bAlternateSetting = 0x0 bNumEndpoints = 0x2 bInterfaceClass = 0xa bInterfaceSubClass = 0x0 bInterfaceProtocol = 0x0 iInterface = 0x0 } Endpoint Descriptor { bLength = 0x7 bDescriptorType = 0x5 bEndpointAddress = 0x82 bmAttributes = 0x2 wMaxPacketSize = 0x40 bInterval = 0x1 } Endpoint Descriptor { bLength = 0x7 bDescriptorType = 0x5 bEndpointAddress = 0x2 bmAttributes = 0x2 wMaxPacketSize = 0x40 bInterval = 0x1 } Unknown_Interface:0x24 { 05 24 00 10 01 } Unknown_Interface:0x24 { 05 24 01 03 01 } Unknown_Interface:0x24 { 04 24 02 07 } Unknown_Interface:0x24 { 05 24 06 00 01 } Unknown_Interface:0x24 { 06 24 07 04 48 03 } -- Inactive Config Index 1 Configuration Descriptor { bLength = 0x9 bDescriptorType = 0x2 wTotalLength = 0x60 bNumInterfaces = 0x3 bConfigurationValue = 0x2 iConfiguration = 0x0 bmAttributes = 0x80 bMaxPower = 0x32 } Interface Descriptor { bLength = 0x9 bDescriptorType = 0x4 bInterfaceNumber = 0x0 bAlternateSetting = 0x0 bNumEndpoints = 0x1 bInterfaceClass = 0x2 bInterfaceSubClass = 0x2 bInterfaceProtocol = 0x1 iInterface = 0x0 } Endpoint Descriptor { bLength = 0x7 bDescriptorType = 0x5 bEndpointAddress = 0x81 bmAttributes = 0x3 wMaxPacketSize = 0x40 bInterval = 0x80 } Interface Descriptor { bLength = 0x9 bDescriptorType = 0x4 bInterfaceNumber = 0x1 bAlternateSetting = 0x0 bNumEndpoints = 0x2 bInterfaceClass = 0xa bInterfaceSubClass = 0x0 bInterfaceProtocol = 0x0 iInterface = 0x0 } Endpoint Descriptor { bLength = 0x7 bDescriptorType = 0x5 bEndpointAddress = 0x82 bmAttributes = 0x2 wMaxPacketSize = 0x40 bInterval = 0xa } Endpoint Descriptor { bLength = 0x7 bDescriptorType = 0x5 bEndpointAddress = 0x2 bmAttributes = 0x2 wMaxPacketSize = 0x40 bInterval = 0xa } Interface Descriptor { bLength = 0x9 bDescriptorType = 0x4 bInterfaceNumber = 0x2 bAlternateSetting = 0x0 bNumEndpoints = 0x2 bInterfaceClass = 0xa bInterfaceSubClass = 0x0 bInterfaceProtocol = 0x0 iInterface = 0x0 } Endpoint Descriptor { bLength = 0x7 bDescriptorType = 0x5 bEndpointAddress = 0x83 bmAttributes = 0x2 wMaxPacketSize = 0x40 bInterval = 0x1 } Endpoint Descriptor { bLength = 0x7 bDescriptorType = 0x5 bEndpointAddress = 0x3 bmAttributes = 0x2 wMaxPacketSize = 0x40 bInterval = 0x1 } Unknown_Interface:0x24 { 05 24 00 10 01 } Unknown_Interface:0x24 { 05 24 01 03 01 } Unknown_Interface:0x24 { 04 24 02 07 } Unknown_Interface:0x24 { 05 24 06 00 01 } Unknown_Interface:0x24 { 06 24 07 04 48 03 }
Actions