Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Mar 2014 09:38:02 +0100
From:      Hans Petter Selasky <hps@bitfrost.no>
To:        Admin <admin@allunix.ru>, freebsd-usb@freebsd.org
Subject:   Re: VIA Cardbus USB
Message-ID:  <5322BFEA.2030507@bitfrost.no>
In-Reply-To: <5322B907.6070506@allunix.ru>
References:  <5322AE1E.6020407@allunix.ru> <5322B2E0.7090905@bitfrost.no> <5322B907.6070506@allunix.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On 03/14/14 09:08, Admin wrote:
> 14.03.2014 14:42, Hans Petter Selasky пишет:
>> On 03/14/14 08:22, Admin wrote:
>>> Hello all.
>>>
>>> I have a two-port PCMCIA USB 2.0 card exactly like this:
>>>
>>> http://i01.i.aliimg.com/wsphoto/v0/371216405/PCMCIA-to-font-b-USB-b-font-font-b-2-0-b-font-font-b-Cardbus.jpg
>>>
>>>
>>>
>>> It works in Linux for my USB mouse and keyboard, so now I am trying to
>>> use it in FreeBSD.
>>>
>>> This is how it is detected by pciconf -lv:
>>>
>>> uhci0@pci0:7:0:0: class=0x0c0300 card=0x30381106 chip=0x30381106
>>> rev=0x61 hdr=0x00
>>> vendor = 'VIA Technologies, Inc.'
>>> device = 'VT82xxxxx UHCI USB 1.1 Controller'
>>> class = serial bus
>>> subclass = USB
>>> uhci1@pci0:7:0:1: class=0x0c0300 card=0x30381106 chip=0x30381106
>>> rev=0x61 hdr=0x00
>>> vendor = 'VIA Technologies, Inc.'
>>> device = 'VT82xxxxx UHCI USB 1.1 Controller'
>>> class = serial bus
>>> subclass = USB
>>> ehci0@pci0:7:0:2: class=0x0c0320 card=0x31041106 chip=0x31041106
>>> rev=0x63 hdr=0x00
>>> vendor = 'VIA Technologies, Inc.'
>>> device = 'USB 2.0'
>>> class = serial bus
>>> subclass = USB
>>>
>>> And this is what I see during boot:
>>>
>>> Copyright (c) 1992-2013 The FreeBSD Project.
>>> Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
>>> The Regents of the University of California. All rights reserved.
>>> FreeBSD is a registered trademark of The FreeBSD Foundation.
>>> FreeBSD 10.0-RC3 #2: Wed Feb 12 16:18:02 NOVT 2014
>>> root@AcerAspire:/usr/obj/usr/src/sys/GENERIC i386
>>> FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610
>>> CPU: AMD Turion(tm) 64 X2 Mobile Technology TL-50 (1596.04-MHz 686-class
>>> CPU)
>>> Origin = "AuthenticAMD" Id = 0x40f82 Family = 0xf Model = 0x48
>>> Stepping = 2
>>> Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
>>>
>>>
>>> Features2=0x2001<SSE3,CX16>
>>> AMD Features=0xea500800<SYSCALL,NX,MMX+,FFXSR,RDTSCP,LM,3DNow!+,3DNow!>
>>> AMD Features2=0x1f<LAHF,CMP,SVM,ExtAPIC,CR8>
>>> real memory = 3221225472 (3072 MB)
>>> avail memory = 2743922688 (2616 MB)
>>> Event timer "LAPIC" quality 400
>>> ACPI APIC Table: <PTLTD APIC >
>>> FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
>>> FreeBSD/SMP: 1 package(s) x 2 core(s)
>>> cpu0 (BSP): APIC ID: 0
>>> cpu1 (AP): APIC ID: 1
>>> MADT: Forcing active-low polarity and level trigger for SCI
>>> ioapic0 <Version 2.1> irqs 0-23 on motherboard
>>> kbd1 at kbdmux0
>>> random: <Software, Yarrow> initialized
>>> acpi0: <PTLTD RSDT> on motherboard
>>> acpi0: Power Button (fixed)
>>> acpi0: reservation of 0, 1000 (3) failed
>>> cpu0: <ACPI CPU> on acpi0
>>> cpu1: <ACPI CPU> on acpi0
>>> atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
>>> Event timer "RTC" frequency 32768 Hz quality 0
>>> attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
>>> Timecounter "i8254" frequency 1193182 Hz quality 0
>>> attimer0: Can't map interrupt.
>>> Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
>>> acpi_timer0: <32-bit timer at 3.579545MHz> port 0x8008-0x800b on acpi0
>>> acpi_ec0: <Embedded Controller: GPE 0x10> port 0x62,0x66 on acpi0
>>> acpi_lid0: <Control Method Lid Switch> on acpi0
>>> acpi_button0: <Power Button> on acpi0
>>> acpi_button1: <Sleep Button> on acpi0
>>> pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
>>> pci0: <ACPI PCI bus> on pcib0
>>> pcib1: <ACPI PCI-PCI bridge> at device 1.0 on pci0
>>> pci1: <ACPI PCI bus> on pcib1
>>> vgapci0: <VGA-compatible display> port 0x9000-0x90ff mem
>>> 0xc8000000-0xcfffffff,0xc0100000-0xc010ffff irq 17 at device 5.0 on pci1
>>> vgapci0: Boot video device
>>> pcib2: <ACPI PCI-PCI bridge> at device 4.0 on pci0
>>> pcib2: failed to allocate initial I/O port window: 0-0xfff
>>> pcib2: failed to allocate initial memory window: 0-0xfffff
>>> pcib2: failed to allocate initial prefetch window: 0-0xfffff
>>> pci2: <ACPI PCI bus> on pcib2
>>> pcib3: <ACPI PCI-PCI bridge> at device 5.0 on pci0
>>> pcib3: failed to allocate initial I/O port window: 0-0xfff
>>> pcib3: failed to allocate initial memory window: 0-0xfffff
>>> pci4: <ACPI PCI bus> on pcib3
>>> pci0: <serial bus, SMBus> at device 20.0 (no driver attached)
>>> atapci0: <ATI IXP400 UDMA133 controller> port
>>> 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x8410-0x841f irq 16 at device 20.1
>>> on pci0
>>> ata0: <ATA channel> at channel 0 on atapci0
>>> ata1: <ATA channel> at channel 1 on atapci0
>>> hdac0: <ATI SB450 HDA Controller> mem 0xc0000000-0xc0003fff irq 16 at
>>> device 20.2 on pci0
>>> hdac0: Device stuck in reset
>>> isab0: <PCI-ISA bridge> at device 20.3 on pci0
>>> isa0: <ISA bus> on isab0
>>> pcib4: <ACPI PCI-PCI bridge> at device 20.4 on pci0
>>> pci6: <ACPI PCI bus> on pcib4
>>> rl0: <RealTek 8139 10/100BaseTX> port 0xa000-0xa0ff mem
>>> 0xc0210000-0xc02100ff irq 21 at device 1.0 on pci6
>>> miibus0: <MII bus> on rl0
>>> rlphy0: <RealTek internal media interface> PHY 0 on miibus0
>>> rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
>>> rl0: Ethernet address: 00:16:d4:55:3d:e8
>>> ath0: <Atheros 2413> mem 0xc0200000-0xc020ffff irq 22 at device 2.0
>>> on pci6
>>> ath0: AR2413 mac 7.8 RF2413 phy 4.5
>>> ath0: 2GHz radio: 0x0000; 5GHz radio: 0x0056
>>> cbb0: <PCI-CardBus Bridge> mem 0xc0211000-0xc0211fff irq 20 at device
>>> 4.0 on pci6
>>> cardbus0: <CardBus bus> on cbb0
>>> pccard0: <16-bit PCCard bus> on cbb0
>>> pci6: <memory, flash> at device 4.1 (no driver attached)
>>> sdhci_pci0: <ENE CB712 SD> mem 0xc0210800-0xc02108ff irq 23 at device
>>> 4.2 on pci6
>>> sdhci_pci0: 1 slot(s) allocated
>>> pci6: <memory, flash> at device 4.3 (no driver attached)
>>> sdhci_pci1: <ENE CB712 SD 2> at device 4.4 on pci6
>>> sdhci_pci1: 1 slot(s) allocated
>>> acpi_tz0: <Thermal Zone> on acpi0
>>> atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
>>> atkbd0: <AT Keyboard> irq 1 on atkbdc0
>>> kbd0 at atkbd0
>>> atkbd0: [GIANT-LOCKED]
>>> psm0: <PS/2 Mouse> irq 12 on atkbdc0
>>> psm0: [GIANT-LOCKED]
>>> psm0: model Generic PS/2 mouse, device ID 0
>>> battery0: <ACPI Control Method Battery> on acpi0
>>> acpi_acad0: <AC Adapter> on acpi0
>>> pmtimer0 on isa0
>>> orm0: <ISA Option ROMs> at iomem 0xc0000-0xcefff,0xcf000-0xcffff pnpid
>>> ORM0000 on isa0
>>> sc0: <System console> at flags 0x100 on isa0
>>> sc0: VGA <16 virtual consoles, flags=0x300>
>>> vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on
>>> isa0
>>> ppc0: parallel port not found.
>>> powernow0: <PowerNow! K8> on cpu0
>>> powernow1: <PowerNow! K8> on cpu1
>>> Timecounters tick every 1.000 msec
>>> random: unblocking device.
>>> cardbus0: Expecting link target, got 0xff
>>> cardbus0: Expecting link target, got 0xff
>>> uhci0: <VIA 83C572 USB controller> port 0xa100-0xa11f irq 20 at device
>>> 0.0 on cardbus0
>>> ada0 at ata0 bus 0 scbus0 target 0 lun 0
>>> ada0: <ST98823A 3.06> ATA-6 device
>>> ada0: Serial Number 5PK2AD2Y
>>> ada0: 100.000MB/s transfers (UDMA5, PIO 8192bytes)
>>> ada0: 76319MB (156301488 512 byte sectors: 16H 63S/T 16383C)
>>> ada0: Previously was known as ad0
>>> cd0 at ata0 bus 0 scbus0 target 1 lun 0
>>> cd0: <PIONEER DVD-RW DVR-K16RS 1.35> Removable CD-ROM SCSI-0 device
>>> cd0: Serial Number FIDL384431WL
>>> cd0: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes)
>>> cd0: cd present [1131986 x 2048 byte records]
>>> SMP: AP CPU #1 Launched!
>>> usbus0: controller did not reset
>>> usbus0 on uhci0
>>> usbus0: 12Mbps Full Speed USB v1.0
>>> cardbus0: Expecting link target, got 0xff
>>> cardbus0: Expecting link target, got 0xff
>>> uhci1: <VIA 83C572 USB controller> port 0xa120-0xa13f irq 20 at device
>>> 0.1 on cardbus0
>>> ugen0.1: <VIA> at usbus0
>>> uhub0: <VIA UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
>>> usbus1: controller did not reset
>>> usbus1 on uhci1
>>> usbus1: 12Mbps Full Speed USB v1.0
>>> cardbus0: Expecting link target, got 0xff
>>> cardbus0: Expecting link target, got 0xff
>>> ehci0: <VIA VT6202 USB 2.0 controller> mem 0xc0212000-0xc02120ff irq 20
>>> at device 0.2 on cardbus0
>>> ehci0: VIA-quirk applied
>>> usbus2: EHCI version 1.0
>>> ugen1.1: <VIA> at usbus1
>>> uhub1: <VIA UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
>>> uhci_interrupt: resume detect
>>> uhci_interrupt: host system error
>>> uhci_interrupt: host controller process error
>>> uhci_interrupt: resume detect
>>> uhci_interrupt: host system error
>>> uhci_interrupt: host controller process error
>>> usbus2 on ehci0
>>> usbus2: 480Mbps High Speed USB v2.0
>>> ugen2.1: <VIA> at usbus2
>>> uhub2: <VIA EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus2
>>> uhub0: 2 ports with 2 removable, self powered
>>> uhub1: 2 ports with 2 removable, self powered
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub2: 4 ports with 4 removable, self powered
>>> uhci_interrupt: resume detect
>>> uhci_interrupt: host system error
>>> uhci_interrupt: host controller process error
>>> uhci_interrupt: resume detect
>>> uhci_interrupt: host system error
>>> uhci_interrupt: host controller process error
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhci_interrupt: resume detect
>>> uhci_interrupt: host system error
>>> uhci_interrupt: host controller process error
>>> uhci_interrupt: resume detect
>>> uhci_interrupt: host system error
>>> uhci_interrupt: host controller process error
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> Trying to mount root from ufs:/dev/ada0p2 [rw]...
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> wlan0: Ethernet address: 00:16:cf:89:cf:e0
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>> uhub_reattach_port: port 1 reset failed, error=USB_ERR_TIMEOUT
>>> uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port 1
>>>
>>>
>>> I see that when nothing is plugged in those USB ports on the card.
>>>
>>> When I plug something in (like keyboard and mouse), it is not detected
>>> and does not work.
>>>
>>> usbconfig just hangs, not reacting to ctrl+c until I unplug the card.
>>> Then it unhags and states the right EHCI device.
>>>
>>> Where should I start looking?
>>
>> Hi,
>>
>> This might sound like an IRQ problem, that the device is not
>> generating any interrupts. You can fake interrupts by using a
>> timer/callout to see if that is the real problem.
>>
>> --
> Thanks for the reply!
> I thought of that, yes, but... do I have to hack a scheduler or something?
> I'm not shure how this could be done.
>
>

Hi,

Just hack a callout that is calling the ehci_interrupt() function every 
1ms. See for example the xhci driver which has already got such a feature.

--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5322BFEA.2030507>