Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Mar 2014 11:07:35 +0700
From:      Admin <admin@allunix.ru>
To:        Warner Losh <imp@bsdimp.com>, Hans Petter Selasky <hps@bitfrost.no>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: VIA Cardbus USB
Message-ID:  <5327C687.1020202@allunix.ru>
In-Reply-To: <9AC6995B-7134-40DC-BCC1-25D99EC4D022@gmail.com>
References:  <5322AE1E.6020407@allunix.ru> <5322B2E0.7090905@bitfrost.no> <5322B907.6070506@allunix.ru> <5322BFEA.2030507@bitfrost.no> <9AC6995B-7134-40DC-BCC1-25D99EC4D022@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
17.03.2014 3:27, Warner Losh пишет:
> On Mar 14, 2014, at 2:38 AM, Hans Petter Selasky <hps@bitfrost.no> wrote:
>
>> 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.
> Any updates?
>
> Warner
>
>
First of all I must confess that I didn't realize at first that this 
maillist, as I assume now, is mostly for developers, which I certainly 
am not. Not even a programmer. Just a user, somewhat experienced (using 
FreeBSD for almost everything since 2003), but hacking a kernel is above 
my competence. I tried some tricks like compiling kernel without USB2.0 
support to see if it only effects ehci and not ohci for example, but I 
guess this may seem pretty stupid to this community. That obviously 
didn't work, so at this point I just gave up and continued to use Linux 
in that machine instead. Maybe a little backstory can explain what I'm 
really trying to do:

I have a notebook Acer Aspire 5100. A pretty old one and best known for 
it's unreliable southbridge. The symptoms of it burning down are almost 
the same for everyone: notebook gets a burned hole in the chasis in the 
left lower corner under the keyboard, USB stops working, keyboard and 
touchpad stop responding. And yes, I have all of them. Yet notebook can 
still work almost flawlessly after that, you just can't type anything in 
or plug the USB-device. That means you can't, for exmple, enter BIOS and 
change boot priority, etc. So when I run it's preinstalled Windows - I 
can't do anything. When I run Linux LiveCD - I also can't do anything, I 
just can't pass the first step in Kubuntu's graphical setup. So here is 
what I did - I took out HDD and installed a FreeBSD on it using another 
computer, and then I inserted the HDD back into the notebook. So the 
BIOS still is inaccessible due to no response on F2 and the FreeBSD boot 
menu is also unskipable due to no reaction on Enter, so I have to wait 
all 10 seconds before the kernel is loaded.

But when the kernel is loaded, the keyboard magically starts responding. 
When the system is loaded I can use it fully. The keyboard just works. 
And what I want to know is how? The touchpad and USB are still dead, no 
USB controllers are detected in dmesg or usbconfig, but the keyboard is 
detected normally as atkbd0 and it just works. And FreeBSD is the only 
OS that sees and reacts to this notebook's keyboard. I just wonder how 
this is possible? The southbridge is dead without a doubt, and all other 
systems totally agree with this.

Yet I have to have a mouse to make this old notebook somewhat usefull, 
So, as I've said, I grabbed that PCMCIA USB card and tried plugging 
mouse into it. In Linux that totally hepled, mouse and keyboard 
connected to this USB adapter just work and I can use Linux. But using 
external keyboard (since Linux does not detect a built-in one) makes 
this notebook not usable as a portable device. That's why I want to use 
FreeBSD with a built-in keyboard, which works, and a mouse connected to 
this PCMCIA-To-USB adapter, which does not work.

That's my story. But I'm just not familiar with C language to figure out 
what should I do.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5327C687.1020202>