Subject: USB quirk needed
To: None <current-users@netbsd.org>
From: Martti Kuparinen <martti.kuparinen@iki.fi>
List: current-users
Date: 08/22/2003 15:45:41
Hi!

Inspired by the FreeBSD code I tried (again) to make my Pentax Optio 430
work in NetBSD -current. Below is the console output and the diff I tried.
I have also tried these PQUIRK combinations:

- 0
- PQUIRK_NOMODESENSE
- PQUIRK_NOMODESENSE | PQUIRK_NOBIGMODESENSE

What else could I try?

PS. My camera works fine in FreeBSD 5.1.

Martti


umass0 at uhub0 port 1 configuration 1 interface 0
umass0: ASAHI PENTAX PENTAX OPTIO 430, rev 1.00/10.00, addr 2
umass0: using ATAPI over CBI
atapibus0 at umass0 channel 0: 2 targets
probe(umass0:0:0): generic HBA error



Index: umass_quirks.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass_quirks.c,v
retrieving revision 1.45
diff -u -r1.45 umass_quirks.c
--- umass_quirks.c	2003/08/08 08:24:23	1.45
+++ umass_quirks.c	2003/08/22 11:54:17
@@ -77,6 +77,14 @@
 	  NULL, NULL
 	},

+	{ { USB_VENDOR_ASAHIOPTICAL, USB_PRODUCT_ANY },
+	  UMASS_WPROTO_CBI_I, UMASS_CPROTO_ATAPI,
+	  UMASS_QUIRK_RS_NO_CLEAR_UA,
+	  PQUIRK_NOMODESENSE,
+	  UMATCH_DEVCLASS_DEVSUBCLASS_DEVPROTO,
+	  NULL, NULL
+	},
+
 	{ { USB_VENDOR_ATI, USB_PRODUCT_ATI2_205 },
 	  UMASS_WPROTO_BBB, UMASS_CPROTO_ISD_ATA,
 	  0,





DEVICE addr 2
DEVICE descriptor:
bLength=18 bDescriptorType=device(1) bcdUSB=1.00 bDeviceClass=0 bDeviceSubClass=0
bDeviceProtocol=0 bMaxPacketSize=8 idVendor=0x0a17 idProduct=0x0004 bcdDevice=1000
iManufacturer=1(ASAHI PENTAX) iProduct=2(PENTAX OPTIO 430) iSerialNumber=0() bNumConfigurations=1

CONFIGURATION descriptor 0:
bLength=9 bDescriptorType=config(2) wTotalLength=39 bNumInterface=1
bConfigurationValue=1 iConfiguration=0() bmAttributes=40 bMaxPower=0 mA

INTERFACE descriptor 0:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0 bAlternateSetting=0
bNumEndpoints=3 bInterfaceClass=8 bInterfaceSubClass=5
bInterfaceProtocol=0 iInterface=0()

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=1-in
bmAttributes=bulk wMaxPacketSize=64 bInterval=0

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=2-out
bmAttributes=bulk wMaxPacketSize=64 bInterval=0

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=3-in
bmAttributes=interrupt wMaxPacketSize=8 bInterval=1

current configuration 1




usb_transfer_complete: pipe=0xc0b9a600 xfer=0xc0c1de00 status=0 actlen=1
usb_transfer_complete: repeat=1 new head=0xc0c1de00
usb_needs_explore
usb_event_thread: woke up
usb_discover
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_allocmem: use frag=0xcef35ec0 size=4
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0e16b00 status=0 actlen=4
usb_freemem: frag=0xcef35ec0
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0e16b00 status=0 actlen=0
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_quusb_transfer_complete: pipe=0xc0b9a600 xfer=0xc0c1de00 status=0 actlen=1
usb_transfer_complete: repeat=1 new head=0xc0c1de00
usb_needs_explore
usb_event_thread: woke up
usb_discover
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_allocmem: use frag=0xcef35ec0 size=4
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0e16b00 status=0 actlen=4
usb_freemem: frag=0xcef35ec0
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0e16b00 status=0 actlen=0
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0e16b00 status=0 actlen=0
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_reset_port: port 1 reset done, error=NORMAL_COMPLETION
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_allocmem: use frag=0xcef35ec0 size=4
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0e16b00 status=0 actlen=4
usb_freemem: frag=0xcef35ec0
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0e16b00 status=0 actlen=0
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_allocmem: use frag=0xcef35ec0 size=4
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0e16b00 status=0 actlen=4
usb_freemem: frag=0xcef35ec0
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_new_device bus=0xc0c1e000 port=1 depth=1 speed=2
usbd_setup_pipe: dev=0xc0e3f680 iface=0x0 ep=0xc0e3f6a4 pipe=0xc0e3f684
usb_allocmem: use frag=0xcef35ec0 size=8
usbd_get_desc: type=1, index=0, len=8
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0dfb180, running=0
usbd_dump_queue: pipe=0xc0dfb180
usb_allocmem: use frag=0xcef35e80 size=8
usb_insert_transfer: pipe=0xc0dfb180 running=0 timeout=5000
usb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=0 actlen=8
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0dfb180, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_new_device: adding unit addr=2, rev=100, class=0, subclass=0, protocol=0, maxpacket=8, len=18, speed=2
usbd_get_device_desc:
usbd_get_desc: type=1, index=0, len=18
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0dfb180, running=0
usbd_dump_queue: pipe=0xc0dfb180
usb_allocmem: use frag=0xcef35e80 size=18
usb_insert_transfer: pipe=0xc0dfb180 running=0 timeout=5000
usb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=0 actlen=18
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0dfb180, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0dfb18usbd_new_device: new dev (addr 2), dev=0xc0e3f680, parent=0xc0c17a80
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=6, pipe=0xc0dfb180, running=0
usbd_dump_queue: pipe=0xc0dfb180
usb_allocmem: use frag=0xcef35e80 size=2
usb_insert_transfer: pipe=0xc0dfb180 running=0 timeout=5000
usb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=0 actlen=2
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0dfb180, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0dfb180, running=0
usbd_dump_queue: pipe=0xc0dfb180
usb_allocmem: use frag=0xcef35e80 size=4
usb_insert_transfer: pipe=0xc0dfb180 running=0 timeout=5000
usb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=0 actlen=4
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xcusb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=0 actlen=2
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0dfb180, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0dfb180, running=0
usbd_dump_queue: pipe=0xc0dfb180
usb_allocmem: use frag=0xcef35e80 size=34
usb_insert_transfer: pipe=0xc0dfb180 running=0 timeout=5000
usb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=0 actlen=34
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0dfb180, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_probe_and_attach: trying device specific drivers
usbd_submatch port=1,-1 configno=-1,-1 ifaceno=-1,-1 vendor=2583,-1 product=4,-1 release=4096,-1
usbd_submatch port=1,-1 configno=-1,-1 ifaceno=-1,-1 vendor=2583,-1 product=4,-1 release=4096,-1
usbd_submusb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=0 actlen=26
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0dfb180, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=6, pipe=0xc0dfb180, running=0
usbd_dump_queue: pipe=0xc0dfb180
usb_allocmem: use frag=0xcef35e80 size=2
usb_insert_transfer: pipe=0xc0dfb180 running=0 timeout=5000
usb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=0 actlen=2
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0dfb180, xfer=0x0
usbd_free_xfer: 0xc0e16b00
usbd_alloc_xfer() = 0xc0e16b00
usbd_transfer: xfer=0xc0e16b00, flags=2, pipe=0xc0dfb180, running=0
usbd_dump_queue: pipe=0xc0dfb180
usb_allocmem: use frag=0xcef35e80 size=34
usb_insert_transfer: pipe=0xc0dfb180 running=0 timeout=5000
usb_schedsoftintr: pusb_schedsoftintr: polling=0
usb_transfer_complete: pipe=0xc0dfb180 xfer=0xc0e16b00 status=17 actlen=6
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0dfb180, xfer=0x0
probe(umass0:0:0): generic HBA error
usbd_alloc_xfer() = 0xc0dd2d00
usbd_transfer: xfer=0xc0dd2d00, flags=2, pipe=0xc0b9a700, running=0
usbd_dump_queue: pipe=0xc0b9a700
usb_allocmem: use frag=0xcef35e80 size=4
usb_insert_transfer: pipe=0xc0b9a700 running=0 timeout=5000
usb_transfer_complete: pipe=0xc0b9a700 xfer=0xc0dd2d00 status=0 actlen=4
usb_freemem: frag=0xcef35e80
usb_transfer_complete: repeat=0 new head=0x0
usbd_start_next: pipe=0xc0b9a700, xfer=0x0
usbd_free_xfer: 0xc0dd2d00