> On Sep 23 20:55:45, h...@stare.cz wrote: > > On Aug 29 18:06:32, lau...@tratt.net wrote: > > > Lots of us have to use webcams more than we used to. There have been some > > > recent changes in OpenBSD support for webcams that some might find useful. > > > Most of the hard work was done by Marcus Glocker, with input from Ingo > > > Feinerer, sc.dying, and myself. > > > > Thanks to all! The uvideo on my old MacBook1,1 > > (dmesg below) is back, for instance. > > Ah. This is with a diff (below) I got on misc earlier. > Sorry for the confusion.
Here is the same with UVIDEO_DEBUG, if it's of any help. I can donate the MacBook if anyone is interested. Jan $ video -q video device /dev/video: encodings: uyvy frame sizes (width x height, in pixels) and rates (in frames per second): 320x240: 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 352x288: 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 640x480: 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 controls: brightness, saturation, gamma, sharpness messages: Sep 24 09:58:29 mb32 /bsd: uvideo0: uvideo_open: sc=0xd580b000 Sep 24 09:58:29 mb32 /bsd: uvideo0: uvideo_find_ctrl: control not supported by device! Sep 24 09:58:29 mb32 last message repeated 4 times Sep 24 09:58:30 mb32 /bsd: uvideo0: uvideo_close: sc=0xd580b000 Sep 24 09:58:30 mb32 /bsd: uvideo0: uvideo_vs_free_isoc $ video -c video: VIDIOC_G_CTRL: Invalid argument brightness=63 saturation=5 gamma=100 sharpness=3 messages: Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_open: sc=0xd580b000 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_find_ctrl: control not supported by device! Sep 24 09:58:35 mb32 last message repeated 4 times Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_s_fmt: requested width=640, height=480 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_find_res: frame index 0: width=640, height=480 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_find_res: frame index 1: width=352, height=288 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_find_res: frame index 2: width=320, height=240 Sep 24 09:58:35 mb32 /bsd: uvideo0: SET probe request successfully Sep 24 09:58:35 mb32 /bsd: bmHint=0x01 Sep 24 09:58:35 mb32 /bsd: bFormatIndex=0x01 Sep 24 09:58:35 mb32 /bsd: bFrameIndex=0x01 Sep 24 09:58:35 mb32 /bsd: dwFrameInterval=333333 (100ns units) Sep 24 09:58:35 mb32 /bsd: wKeyFrameRate=0 Sep 24 09:58:35 mb32 /bsd: wPFrameRate=0 Sep 24 09:58:35 mb32 /bsd: wCompQuality=0 Sep 24 09:58:35 mb32 /bsd: wCompWindowSize=0 Sep 24 09:58:35 mb32 /bsd: wDelay=0 (ms) Sep 24 09:58:35 mb32 /bsd: dwMaxVideoFrameSize=0 (bytes) Sep 24 09:58:35 mb32 /bsd: dwMaxPayloadTransferSize=0 (bytes) Sep 24 09:58:35 mb32 /bsd: uvideo0: GET probe request successfully Sep 24 09:58:35 mb32 /bsd: bmHint=0x00 Sep 24 09:58:35 mb32 /bsd: bFormatIndex=0x01 Sep 24 09:58:35 mb32 /bsd: bFrameIndex=0x01 Sep 24 09:58:35 mb32 /bsd: dwFrameInterval=333333 (100ns units) Sep 24 09:58:35 mb32 /bsd: wKeyFrameRate=0 Sep 24 09:58:35 mb32 /bsd: wPFrameRate=0 Sep 24 09:58:35 mb32 /bsd: wCompQuality=0 Sep 24 09:58:35 mb32 /bsd: wCompWindowSize=0 Sep 24 09:58:35 mb32 /bsd: wDelay=33 (ms) Sep 24 09:58:35 mb32 /bsd: dwMaxVideoFrameSize=614400 (bytes) Sep 24 09:58:35 mb32 /bsd: dwMaxPayloadTransferSize=3072 (bytes) Sep 24 09:58:35 mb32 /bsd: fixed dwMaxVideoFrameSize=614400, width=640 height=480 bpp=16 Sep 24 09:58:35 mb32 /bsd: uvideo0: SET commit request successfully Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_s_fmt: offered width=640, height=480 Sep 24 09:58:35 mb32 /bsd: uvideo0: SET probe request successfully Sep 24 09:58:35 mb32 /bsd: bmHint=0x01 Sep 24 09:58:35 mb32 /bsd: bFormatIndex=0x01 Sep 24 09:58:35 mb32 /bsd: bFrameIndex=0x01 Sep 24 09:58:35 mb32 /bsd: dwFrameInterval=333333 (100ns units) Sep 24 09:58:35 mb32 /bsd: wKeyFrameRate=0 Sep 24 09:58:35 mb32 /bsd: wPFrameRate=0 Sep 24 09:58:35 mb32 /bsd: wCompQuality=0 Sep 24 09:58:35 mb32 /bsd: wCompWindowSize=0 Sep 24 09:58:35 mb32 /bsd: wDelay=0 (ms) Sep 24 09:58:35 mb32 /bsd: dwMaxVideoFrameSize=0 (bytes) Sep 24 09:58:35 mb32 /bsd: dwMaxPayloadTransferSize=0 (bytes) Sep 24 09:58:35 mb32 /bsd: uvideo0: GET probe request successfully Sep 24 09:58:35 mb32 /bsd: bmHint=0x00 Sep 24 09:58:35 mb32 /bsd: bFormatIndex=0x01 Sep 24 09:58:35 mb32 /bsd: bFrameIndex=0x01 Sep 24 09:58:35 mb32 /bsd: dwFrameInterval=333333 (100ns units) Sep 24 09:58:35 mb32 /bsd: wKeyFrameRate=0 Sep 24 09:58:35 mb32 /bsd: wPFrameRate=0 Sep 24 09:58:35 mb32 /bsd: wCompQuality=0 Sep 24 09:58:35 mb32 /bsd: wCompWindowSize=0 Sep 24 09:58:35 mb32 /bsd: wDelay=33 (ms) Sep 24 09:58:35 mb32 /bsd: dwMaxVideoFrameSize=614400 (bytes) Sep 24 09:58:35 mb32 /bsd: dwMaxPayloadTransferSize=3072 (bytes) Sep 24 09:58:35 mb32 /bsd: fixed dwMaxVideoFrameSize=614400, width=640 height=480 bpp=16 Sep 24 09:58:35 mb32 /bsd: uvideo0: SET commit request successfully Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_reqbufs: count=4 Sep 24 09:58:35 mb32 /bsd: uvideo0: allocated 2457600 bytes mmap buffer Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_reqbufs: index=0, offset=0, length=614400 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_reqbufs: index=1, offset=614400, length=614400 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_reqbufs: index=2, offset=1228800, length=614400 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_reqbufs: index=3, offset=1843200, length=614400 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_querybuf: index=0, offset=0, length=614400 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_querybuf: index=1, offset=614400, length=614400 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_querybuf: index=2, offset=1228800, length=614400 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_querybuf: index=3, offset=1843200, length=614400 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_vs_open Sep 24 09:58:35 mb32 /bsd: uvideo0: set alternate iface to bAlternateSetting=0x01 psize=3072 max_packet_size=3072 Sep 24 09:58:35 mb32 /bsd: uvideo0: open pipe for bEndpointAddress=0x82 Sep 24 09:58:35 mb32 /bsd: uvideo0: nframes=40 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_vs_alloc_isoc Sep 24 09:58:35 mb32 /bsd: uvideo0: allocated 122880 bytes isoc VS xfer buffer Sep 24 09:58:35 mb32 last message repeated 2 times Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_vs_alloc_frame: allocated 614400 bytes frame buffer Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_find_ctrl: control not supported by device! Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_vs_cb: CANCELLED Sep 24 09:58:35 mb32 last message repeated 2 times Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_close: sc=0xd580b000 Sep 24 09:58:35 mb32 /bsd: uvideo0: uvideo_vs_free_isoc $ video video: VIDIOC_G_CTRL: Invalid argument messages: Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_open: sc=0xd580b000 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_find_ctrl: control not supported by device! Sep 24 09:58:39 mb32 last message repeated 4 times Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_s_fmt: requested width=640, height=480 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_find_res: frame index 0: width=640, height=480 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_find_res: frame index 1: width=352, height=288 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_find_res: frame index 2: width=320, height=240 Sep 24 09:58:39 mb32 /bsd: uvideo0: SET probe request successfully Sep 24 09:58:39 mb32 /bsd: bmHint=0x01 Sep 24 09:58:39 mb32 /bsd: bFormatIndex=0x01 Sep 24 09:58:39 mb32 /bsd: bFrameIndex=0x01 Sep 24 09:58:39 mb32 /bsd: dwFrameInterval=333333 (100ns units) Sep 24 09:58:39 mb32 /bsd: wKeyFrameRate=0 Sep 24 09:58:39 mb32 /bsd: wPFrameRate=0 Sep 24 09:58:39 mb32 /bsd: wCompQuality=0 Sep 24 09:58:39 mb32 /bsd: wCompWindowSize=0 Sep 24 09:58:39 mb32 /bsd: wDelay=0 (ms) Sep 24 09:58:39 mb32 /bsd: dwMaxVideoFrameSize=0 (bytes) Sep 24 09:58:39 mb32 /bsd: dwMaxPayloadTransferSize=0 (bytes) Sep 24 09:58:39 mb32 /bsd: uvideo0: GET probe request successfully Sep 24 09:58:39 mb32 /bsd: bmHint=0x00 Sep 24 09:58:39 mb32 /bsd: bFormatIndex=0x01 Sep 24 09:58:39 mb32 /bsd: bFrameIndex=0x01 Sep 24 09:58:39 mb32 /bsd: dwFrameInterval=333333 (100ns units) Sep 24 09:58:39 mb32 /bsd: wKeyFrameRate=0 Sep 24 09:58:39 mb32 /bsd: wPFrameRate=0 Sep 24 09:58:39 mb32 /bsd: wCompQuality=0 Sep 24 09:58:39 mb32 /bsd: wCompWindowSize=0 Sep 24 09:58:39 mb32 /bsd: wDelay=33 (ms) Sep 24 09:58:39 mb32 /bsd: dwMaxVideoFrameSize=614400 (bytes) Sep 24 09:58:39 mb32 /bsd: dwMaxPayloadTransferSize=3072 (bytes) Sep 24 09:58:39 mb32 /bsd: fixed dwMaxVideoFrameSize=614400, width=640 height=480 bpp=16 Sep 24 09:58:39 mb32 /bsd: uvideo0: SET commit request successfully Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_s_fmt: offered width=640, height=480 Sep 24 09:58:39 mb32 /bsd: uvideo0: SET probe request successfully Sep 24 09:58:39 mb32 /bsd: bmHint=0x01 Sep 24 09:58:39 mb32 /bsd: bFormatIndex=0x01 Sep 24 09:58:39 mb32 /bsd: bFrameIndex=0x01 Sep 24 09:58:39 mb32 /bsd: dwFrameInterval=333333 (100ns units) Sep 24 09:58:39 mb32 /bsd: wKeyFrameRate=0 Sep 24 09:58:39 mb32 /bsd: wPFrameRate=0 Sep 24 09:58:39 mb32 /bsd: wCompQuality=0 Sep 24 09:58:39 mb32 /bsd: wCompWindowSize=0 Sep 24 09:58:39 mb32 /bsd: wDelay=0 (ms) Sep 24 09:58:39 mb32 /bsd: dwMaxVideoFrameSize=0 (bytes) Sep 24 09:58:39 mb32 /bsd: dwMaxPayloadTransferSize=0 (bytes) Sep 24 09:58:39 mb32 /bsd: uvideo0: GET probe request successfully Sep 24 09:58:39 mb32 /bsd: bmHint=0x00 Sep 24 09:58:39 mb32 /bsd: bFormatIndex=0x01 Sep 24 09:58:39 mb32 /bsd: bFrameIndex=0x01 Sep 24 09:58:39 mb32 /bsd: dwFrameInterval=333333 (100ns units) Sep 24 09:58:39 mb32 /bsd: wKeyFrameRate=0 Sep 24 09:58:39 mb32 /bsd: wPFrameRate=0 Sep 24 09:58:39 mb32 /bsd: wCompQuality=0 Sep 24 09:58:39 mb32 /bsd: wCompWindowSize=0 Sep 24 09:58:39 mb32 /bsd: wDelay=33 (ms) Sep 24 09:58:39 mb32 /bsd: dwMaxVideoFrameSize=614400 (bytes) Sep 24 09:58:39 mb32 /bsd: dwMaxPayloadTransferSize=3072 (bytes) Sep 24 09:58:39 mb32 /bsd: fixed dwMaxVideoFrameSize=614400, width=640 height=480 bpp=16 Sep 24 09:58:39 mb32 /bsd: uvideo0: SET commit request successfully Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_reqbufs: count=4 Sep 24 09:58:39 mb32 /bsd: uvideo0: allocated 2457600 bytes mmap buffer Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_reqbufs: index=0, offset=0, length=614400 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_reqbufs: index=1, offset=614400, length=614400 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_reqbufs: index=2, offset=1228800, length=614400 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_reqbufs: index=3, offset=1843200, length=614400 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_querybuf: index=0, offset=0, length=614400 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_querybuf: index=1, offset=614400, length=614400 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_querybuf: index=2, offset=1228800, length=614400 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_querybuf: index=3, offset=1843200, length=614400 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_vs_open Sep 24 09:58:39 mb32 /bsd: uvideo0: set alternate iface to bAlternateSetting=0x01 psize=3072 max_packet_size=3072 Sep 24 09:58:39 mb32 /bsd: uvideo0: open pipe for bEndpointAddress=0x82 Sep 24 09:58:39 mb32 /bsd: uvideo0: nframes=40 Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_vs_alloc_isoc Sep 24 09:58:39 mb32 /bsd: uvideo0: allocated 122880 bytes isoc VS xfer buffer Sep 24 09:58:39 mb32 last message repeated 2 times Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_vs_alloc_frame: allocated 614400 bytes frame buffer Sep 24 09:58:39 mb32 /bsd: uvideo0: uvideo_find_ctrl: control not supported by device! After some timeout (I didn't press q), video(1) says video: ioctl VIDIOC_DQBUF: Invalid argument and messages say: Sep 24 09:58:49 mb32 /bsd: uvideo0: uvideo_vs_cb: CANCELLED Sep 24 09:58:49 mb32 last message repeated 2 times Sep 24 09:58:49 mb32 /bsd: uvideo0: uvideo_close: sc=0xd580b000 Sep 24 09:58:50 mb32 /bsd: uvideo0: uvideo_vs_free_isoc Jan > > OpenBSD 6.8-beta (GENERIC.MP) #0: Wed Sep 23 13:07:51 CEST 2020 > > h...@mb32.stare.cz:/usr/src/sys/arch/i386/compile/GENERIC.MP > > real mem = 2113323008 (2015MB) > > avail mem = 2058436608 (1963MB) > > random: good seed from bootblocks > > mpath0 at root > > scsibus0 at mpath0: 256 targets > > mainbus0 at root > > bios0 at mainbus0: date 07/29/05, SMBIOS rev. 2.4 @ 0xe7490 (36 entries) > > bios0: vendor Apple Computer, Inc. version "MB11.88Z.0061.B03.0610121324" > > date 10/12/06 > > bios0: Apple Computer, Inc. MacBook1,1 > > acpi0 at bios0: ACPI 3.0 > > acpi0: sleep states S0 S3 S4 S5 > > acpi0: tables DSDT FACP HPET APIC MCFG ASF! SBST ECDT SSDT SSDT SSDT > > acpi0: wakeup devices ADP1(S3) LID0(S3) PXS1(S4) PXS2(S4) USB1(S3) USB2(S3) > > USB3(S3) USB4(S3) USB7(S3) EC__(S3) > > acpitimer0 at acpi0: 3579545 Hz, 24 bits > > acpihpet0 at acpi0: 14318179 Hz > > acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat > > cpu0 at mainbus0: apid 0 (boot processor) > > cpu0: Genuine Intel(R) CPU T2500 @ 2.00GHz ("GenuineIntel" 686-class) 2 > > GHz, 06-0e-08 > > cpu0: > > FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,MWAIT,VMX,EST,TM2,xTPR,PDCM,NXE,PERF,SENSOR,MELTDOWN > > mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges > > cpu0: apic clock running at 166MHz > > cpu0: mwait min=64, max=64, C-substates=0.2.2.2.2, IBE > > cpu1 at mainbus0: apid 1 (application processor) > > cpu1: Genuine Intel(R) CPU T2500 @ 2.00GHz ("GenuineIntel" 686-class) 2 > > GHz, 06-0e-08 > > cpu1: > > FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,MWAIT,VMX,EST,TM2,xTPR,PDCM,NXE,PERF,SENSOR,MELTDOWN > > ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 20, 24 pins, remapped > > acpimcfg0 at acpi0 > > acpimcfg0: addr 0xe0000000, bus 0-255 > > acpiec0 at acpi0 > > acpiprt0 at acpi0: bus 0 (PCI0) > > acpiprt1 at acpi0: bus 1 (RP01) > > acpiprt2 at acpi0: bus 2 (RP02) > > acpiprt3 at acpi0: bus 3 (PCIB) > > acpisbs0 at acpi0: SBS0 model "ASMB016" serial 35580 type LION oem "DP" > > acpiac0 at acpi0: AC unit online > > acpibtn0 at acpi0: LID0 > > "APP0002" at acpi0 not configured > > acpibtn1 at acpi0: PWRB > > acpibtn2 at acpi0: SLPB > > "PNP0A08" at acpi0 not configured > > asmc0 at acpi0: SMC_ (smc-napa) addr 0x300/0x20: rev 1.4f504, 203 keys > > "APP0003" at acpi0 not configured > > "ACPI0001" at acpi0 not configured > > "IFX0101" at acpi0 not configured > > acpicmos0 at acpi0 > > acpicpu0 at acpi0: !C4(100@55 mwait@0x31), !C3(500@1 mwait@0x20), !C2(500@1 > > mwait@0x10), C1(1000@1 mwait), PSS > > acpicpu1 at acpi0: !C4(100@55 mwait@0x31), !C3(500@1 mwait@0x20), !C2(500@1 > > mwait@0x10), C1(1000@1 mwait), PSS > > acpivideo0 at acpi0: GFX0 > > bios0: ROM list: 0xc0000/0xe600! > > cpu0: Enhanced SpeedStep 1998 MHz: speeds: 2000, 1833, 1667, 1500, 1333, > > 1000 MHz > > memory map conflict 0xe00f8000/0x1000 > > memory map conflict 0xfed1c000/0x4000 > > memory map conflict 0xfffb0000/0x30000 > > pci0 at mainbus0 bus 0: configuration mode 1 (bios) > > pchb0 at pci0 dev 0 function 0 "Intel 82945GM Host" rev 0x03 > > inteldrm0 at pci0 dev 2 function 0 "Intel 82945GM Video" rev 0x03 > > drm0 at inteldrm0 > > intagp0 at inteldrm0 > > agp0 at intagp0: aperture at 0x80000000, size 0x10000000 > > inteldrm0: apic 1 int 16, I945GM, gen 3 > > "Intel 82945GM Video" rev 0x03 at pci0 dev 2 function 1 not configured > > vendor "Intel", unknown product 0x27a3 (class DASP subclass Time and > > Frequency, rev 0x03) at pci0 dev 7 function 0 not configured > > azalia0 at pci0 dev 27 function 0 "Intel 82801GB HD Audio" rev 0x02: msi > > azalia0: codecs: Sigmatel STAC9220/1 > > audio0 at azalia0 > > ppb0 at pci0 dev 28 function 0 "Intel 82801GB PCIE" rev 0x02: apic 1 int 17 > > pci1 at ppb0 bus 1 > > mskc0 at pci1 dev 0 function 0 "Marvell Yukon 88E8053" rev 0x22, Yukon-2 EC > > rev. A3 (0x2): apic 1 int 16 > > msk0 at mskc0 port A: address 00:16:cb:d0:c4:3c > > eephy0 at msk0 phy 0: 88E1111 Gigabit PHY, rev. 2 > > ppb1 at pci0 dev 28 function 1 "Intel 82801GB PCIE" rev 0x02: apic 1 int 16 > > pci2 at ppb1 bus 2 > > ath0 at pci2 dev 0 function 0 "Atheros AR5424" rev 0x01: apic 1 int 17 > > ath0: AR5424 10.3 phy 6.1 rf 10.2 eeprom 5.3, WORAW, address > > 00:16:cb:bf:f6:88 > > uhci0 at pci0 dev 29 function 0 "Intel 82801GB USB" rev 0x02: apic 1 int 21 > > uhci1 at pci0 dev 29 function 1 "Intel 82801GB USB" rev 0x02: apic 1 int 19 > > uhci2 at pci0 dev 29 function 2 "Intel 82801GB USB" rev 0x02: apic 1 int 18 > > uhci3 at pci0 dev 29 function 3 "Intel 82801GB USB" rev 0x02: apic 1 int 16 > > ehci0 at pci0 dev 29 function 7 "Intel 82801GB USB" rev 0x02: apic 1 int 21 > > usb0 at ehci0: USB revision 2.0 > > uhub0 at usb0 configuration 1 interface 0 "Intel EHCI root hub" rev > > 2.00/1.00 addr 1 > > ppb2 at pci0 dev 30 function 0 "Intel 82801BAM Hub-to-PCI" rev 0xe2 > > pci3 at ppb2 bus 3 > > "AT&T/Lucent FW322 1394" rev 0x61 at pci3 dev 3 function 0 not configured > > ichpcib0 at pci0 dev 31 function 0 "Intel 82801GBM LPC" rev 0x02: PM > > disabled > > pciide0 at pci0 dev 31 function 1 "Intel 82801GB IDE" rev 0x02: DMA, > > channel 0 configured to compatibility, channel 1 configured to compatibility > > atapiscsi0 at pciide0 channel 0 drive 0 > > scsibus1 at atapiscsi0: 2 targets > > cd0 at scsibus1 targ 0 lun 0: <MATSHITA, DVD-R UJ-857, HBEA> removable > > cd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 4 > > pciide0: channel 1 disabled (no drives) > > pciide1 at pci0 dev 31 function 2 "Intel 82801GBM SATA" rev 0x02: DMA, > > channel 0 configured to native-PCI, channel 1 configured to native-PCI > > pciide1: using apic 1 int 19 for native-PCI interrupt > > wd0 at pciide1 channel 0 drive 1: <ST960813AS> > > wd0: 16-sector PIO, LBA48, 57231MB, 117210240 sectors > > wd0(pciide1:0:1): using PIO mode 4, Ultra-DMA mode 5 > > ichiic0 at pci0 dev 31 function 3 "Intel 82801GB SMBus" rev 0x02: apic 1 > > int 19 > > iic0 at ichiic0 > > spdmem0 at iic0 addr 0x50: 2GB DDR2 SDRAM non-parity PC2-5300CL5 SO-DIMM > > usb1 at uhci0: USB revision 1.0 > > uhub1 at usb1 configuration 1 interface 0 "Intel UHCI root hub" rev > > 1.00/1.00 addr 1 > > usb2 at uhci1: USB revision 1.0 > > uhub2 at usb2 configuration 1 interface 0 "Intel UHCI root hub" rev > > 1.00/1.00 addr 1 > > usb3 at uhci2: USB revision 1.0 > > uhub3 at usb3 configuration 1 interface 0 "Intel UHCI root hub" rev > > 1.00/1.00 addr 1 > > usb4 at uhci3: USB revision 1.0 > > uhub4 at usb4 configuration 1 interface 0 "Intel UHCI root hub" rev > > 1.00/1.00 addr 1 > > isa0 at ichpcib0 > > isadma0 at isa0 > > pcppi0 at isa0 port 0x61 > > spkr0 at pcppi0 > > npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16 > > uvideo0 at uhub0 port 4 configuration 1 interface 0 "Apple Computer > > Bluetooth" rev 2.00/0.0c addr 2 > > uhidev0 at uhub1 port 2 configuration 1 interface 0 "Apple Inc. Apple > > Internal Keyboard / Trackpad" rev 2.00/0.09 addr 2 > > uhidev0: iclass 3/1 > > ukbd0 at uhidev0: 8 variable keys, 5 key codes, country code 13 > > wskbd0 at ukbd0: console keyboard > > uhidev1 at uhub1 port 2 configuration 1 interface 1 "Apple Inc. Apple > > Internal Keyboard / Trackpad" rev 2.00/0.09 addr 2 > > uhidev1: iclass 3/1, 5 report ids > > ums0 at uhidev1 reportid 2: 3 buttons > > wsmouse0 at ums0 mux 0 > > ums1 at uhidev1 reportid 5 > > ums1: mouse has no X report > > uhidev2 at uhub1 port 2 configuration 1 interface 2 "Apple Inc. Apple > > Internal Keyboard / Trackpad" rev 2.00/0.09 addr 2 > > uhidev2: iclass 3/0 > > uhid0 at uhidev2: input=1, output=0, feature=0 > > uhidev3 at uhub3 port 2 configuration 1 interface 0 "Apple Computer, Inc. > > IR Receiver" rev 2.00/1.10 addr 2 > > uhidev3: iclass 3/0, 38 report ids > > uhid1 at uhidev3 reportid 36: input=4, output=0, feature=0 > > uhid2 at uhidev3 reportid 37: input=4, output=0, feature=0 > > uhid3 at uhidev3 reportid 38: input=4, output=0, feature=0 > > uhidev4 at uhub4 port 1 configuration 1 interface 0 "Apple Computer > > HID-proxy" rev 2.00/19.65 addr 2 > > uhidev4: iclass 3/1 > > ukbd1 at uhidev4: 8 variable keys, 6 key codes > > wskbd1 at ukbd1 mux 1 > > uhidev5 at uhub4 port 1 configuration 1 interface 1 "Apple Computer > > HID-proxy" rev 2.00/19.65 addr 2 > > uhidev5: iclass 3/1 > > ums2 at uhidev5: 5 buttons > > wsmouse1 at ums2 mux 0 > > vscsi0 at root > > scsibus2 at vscsi0: 256 targets > > softraid0 at root > > scsibus3 at softraid0: 256 targets > > root on wd0a (d56fb6b19bfb4252.a) swap on wd0b dump on wd0b > > inteldrm0: 1280x800, 32bpp > > wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation), using wskbd0 > > wskbd1: connecting to wsdisplay0 > > wsdisplay0: screen 1-5 added (std, vt100 emulation) > > uvideo0 detached > > uvideo0 at uhub0 port 4 configuration 1 interface 0 "Micron Built-in > > iSight" rev 2.00/1.84 addr 2 > > video0 at uvideo0 > > > diff --git a/sys/dev/usb/uvideo.c b/sys/dev/usb/uvideo.c > index d33e3079acd..da00d0d3d0d 100644 > --- a/sys/dev/usb/uvideo.c > +++ b/sys/dev/usb/uvideo.c > @@ -510,6 +510,8 @@ uvideo_attach(struct device *parent, struct device *self, > void *aux) > int i; > > sc->sc_udev = uaa->device; > + sc->sc_iface = uaa->ifaceno; > + sc->sc_nifaces = uaa->nifaces; > > /* Find the first unclaimed video interface. */ > for (i = 0; i < uaa->nifaces; i++) { > @@ -521,10 +523,8 @@ uvideo_attach(struct device *parent, struct device > *self, void *aux) > if (id->bInterfaceClass == UICLASS_VIDEO) > break; > } > - if (i == uaa->nifaces) { > - printf("%s: can't find video interface\n", DEVNAME(sc)); > - return; > - } > + if (i == uaa->nifaces) > + goto attach; > > /* Find out which interface association we belong to. */ > usbd_desc_iter_init(sc->sc_udev, &iter); > @@ -540,30 +540,38 @@ uvideo_attach(struct device *parent, struct device > *self, void *aux) > break; > desc = usbd_desc_iter_next(&iter); > } > - if (desc == NULL) { > - printf("%s: can't find interface assoc descriptor\n", > - DEVNAME(sc)); > - return; > - } > + if (desc != NULL) { > + /* > + * Claim all interfaces of our association. Interfaces must be > + * claimed during attach, during attach hooks is too late. > + */ > + for (i = iad->bFirstInterface; > + i < iad->bFirstInterface + iad->bInterfaceCount; i++) { > + if (usbd_iface_claimed(sc->sc_udev, i)) { > + printf("%s: interface already claimed\n", > + DEVNAME(sc)); > + return; > + } > + usbd_claim_iface(sc->sc_udev, i); > + } > > - /* > - * Claim all interfaces of our association. Interfaces must be > - * claimed during attach, during attach hooks is too late. > - */ > - for (i = iad->bFirstInterface; > - i < iad->bFirstInterface + iad->bInterfaceCount; i++) { > - if (usbd_iface_claimed(sc->sc_udev, i)) { > - printf("%s: interface already claimed\n", > - DEVNAME(sc)); > - return; > + /* Remember our association by saving the first interface. */ > + sc->sc_iface = iad->bFirstInterface; > + sc->sc_nifaces = iad->bInterfaceCount; > + } else { > + /* No association, so simply claim them all. */ > + for (i = 0; i < uaa->nifaces; i++) { > + if (usbd_iface_claimed(sc->sc_udev, i)) > + continue; > + id = > usbd_get_interface_descriptor(&sc->sc_udev->ifaces[i]); > + if (id == NULL) > + continue; > + if (id->bInterfaceClass == UICLASS_VIDEO) > + usbd_claim_iface(sc->sc_udev, i); > } > - usbd_claim_iface(sc->sc_udev, i); > } > > - /* Remember our association by saving the first interface. */ > - sc->sc_iface = iad->bFirstInterface; > - sc->sc_nifaces = iad->bInterfaceCount; > - > +attach: > /* maybe the device has quirks */ > sc->sc_quirk = uvideo_lookup(uaa->vendor, uaa->product);