summaryrefslogtreecommitdiffstats
path: root/sys/pccard
Commit message (Collapse)AuthorAgeFilesLines
* The datasheet for the 6710/6722 says that you must use one method toimp2002-01-141-2/+8
| | | | | | | | | | | | | | | detect 3.3V cards for the 6710 and another method for the 6722. This latter method is also how the 6729/6730 is supposed to detect 3.3V cards. This method works great on my Fujitsu Stylistic 500. Sadly, it appears that not all laptop makers are as detail oriented as the folks that made the Stylistic. IBM Thinkpad 701C and AST Asentia 810N both hang hard when the 6729 method is used, but at least the thinkpad works when the 6710 method is used. The failure mode appears to be any access to the memory that we've mapped the CIS in causes the machine to hang until you eject the card. The Thinkpad, at least, works with this change, and it doesn't break my Stylistic. MFC after: 4 days
* Add recognition of the Omega 83C094 PCI <-> PCMCIA bridge chip set.imp2002-01-141-1/+5
| | | | MFC after: 5 days
* Avoid doubly defining machdep.pccardmsmith2002-01-082-2/+2
|
* Better error message when cardtype is not recognizedimp2001-11-131-1/+1
|
* Use d_thread_t (the new ugly compatibility hack) rather than the oldimp2001-11-121-6/+4
| | | | uglier compatibility hack (#define thread proc).
* Introduce the concept of "default" voltage. Have pccard layer use thisimp2001-11-112-56/+83
| | | | | | | | | value (-1) in lue of 50 (which assumes a 5.0V card). The rest of the pccard system doesn't detect the proper voltage for the card, so we have to do it on powerup. Many (all?) 3.3V cards can tolerate 5.0V for reading the CIS, but may fail to operate properly when so powered. Idea from: Chiharu Shibata-san <chi@bd.mbn.or.jp> in bsd-nomads:15867
* Do not assume that a I/O based bridge is a 6729. Intel made a funky chipimp2001-11-111-1/+1
| | | | that I have the datasheet on the way for that also does this.
* o Try to do 3.3V support better for the 6722 and 6729/30.imp2001-11-094-26/+57
| | | | | | | | | | | | | o Bite the bullet and create controller types for the 6729 and also for the 673x. Rename the 672x to 6722. o Define minimal extended register info (just register 0xa for reading VS[12]). # I think the last version may have broken 673x controllers, but this should # fix them. Tested on the 6722, but not the 6729. Ideas from: Chiharu Shibata-san's article in bsd-nomads:15866
* Fix the 3.3V support for Cirrus Logic CL-PD6710. This appears to workimp2001-11-091-0/+22
| | | | | | | | | | | | | | | | | on my CL-PD6722, but won't work on the CL-PD6729. The latter two need more sophisticated detection of 3.3V cards than I'm up to at the moment. Also, only a few of the ISA chipsets that support 3.3V will likely work at the moment. It appears that for 3.3V cards we must detect them and adjust the pwr.vcc value from 50 to 33. Give a strong hint to automatically power up the card for PD_POWER cards. This makes my SMC 2602W (the 3.3V version of the 2632W) work on my Fujitsu Stylistic 500. SMC 3.3V card donated by: Ryan Losh Thanks to: bsd-nomads for reviews of past 3.3V code
* Better error messages for the cases where device_add_child fails. Weimp2001-11-021-2/+8
| | | | | | | | should also whine if the old pccardd is used, but that's a little harder than it sounds. This also has the effect of fixing a typo that was in the last version I committed.
* Remove an extra " that crept into a string.silby2001-11-021-1/+1
|
* Print a warning when device_add_child returns NULL. This used to beimp2001-11-021-0/+5
| | | | | | impossible at this point, but now it apparently is. Grump. Submitted by: OGAWA Takaya <t-ogawa@triaez.kaisei.org>
* Restore the main BAR for the bridge on resume. Some machines don't saveimp2001-10-301-1/+21
| | | | | | | | | | | | this accross suspend/resume events and this was causing the dreaded false positive hit on my "static bug" test. Note: the PCI bus code should do this for us. Note2: We don't do the same for I/O based pci devices since it is more code and doesn't appear to be necessary. Submitted by: Toshiyuki Kawashima-san <tos@fa2.so-net.ne.jp> Obtained from: bsd-nomads:16012
* Add a tunable (hw.pcic.boot_deactivated) which will boot the systemimp2001-10-231-1/+14
| | | | | | | | | | with the pccards deactivated. This can work around some problems in pccard system, but is also for people that want to explicitly turn on cards after boot rather that at boot. MFC after: 7 days Submitted by: iwasaki-san Reviewed by: ume-san, shiba-san
* Print 4 per line. To do this, we test against i % 16 == 0 rather than i % 4imp2001-10-171-1/+1
| | | | since that's always true for this loop.
* ToPIC fixes. scale back what we do for functional interrupts becauseimp2001-10-171-1/+2
| | | | | | it appears to break at least the ToPIC 100. Submitted by: Mark Santcroos <marks@ripe.net>
* takashi shibagaki-san posted a similar patch to nomads. It seems thatimp2001-10-111-1/+6
| | | | | more laptops work w/o the shutdown code than with it on reboot. So let's disable it for a while.
* Use the NetBSD init code for the TOPIC parts as a more complete basisimp2001-10-112-13/+77
| | | | | | for initializing the parts. Since I don't have any of these parts in any of my working laptops, I'm committing this to allow people to test it. Will MFC when I receive reports of it working.
* Fix, I think, The second slot problem with Cirrus Logic PD6729/30 parts:imp2001-09-211-6/+5
| | | | | | | o Move initialization of the slot bst and bsh to inside the for loop. o move sc there as well. o Remove debug printf that prints the ID of the first slot twice. o Use the sp for the relevant slot in getb, rather than for the 0th slot.
* Ian Dowse had closed the race a little more in card ejection events.imp2001-09-161-16/+18
| | | | Maybe this will also fix the suprious eject events that we're seeing?
* <jkh> "Hey Rocky, watch me eject this pccard outta my laptop!" "What,imp2001-09-134-23/+92
| | | | | | | | | | | | | | | | | | | | | | again? That NEVER works!" "This time for sure!" Minor overhaul of how we do interrupts for the pci interrupt routing case to cope with card ejection better (read: make it not hand on so many cards): o Reintroduce func_intr and func_arg and use the to store the interrupt handler to call. o Create a pcic_pci_func_intr to call the real interrupt handler iff the card hasn't been ejected. o Remove some checks in pcic_setup_intr now that it is used exclusively for isa routed interrupts. o Defer the eject event until later too, but make sure we can't do any client driver ISR calling in the interrum. o Add some simple code to make sure that we don't attach more than one child. This should fix pccardd starting twice problem (ala single user -> multi-user when you started pccardd by hand in SU). MFC: after jkh thinks I've put the crack pipe away.
* Even better compatibility with 4.x. #define thread proc, since forimp2001-09-131-16/+2
| | | | | this file, that's a reasonable workaround. Also, include sys/proc.h for 4.x.
* Better way to do compatibility between the two versions.imp2001-09-131-20/+8
|
* Fix KSE breakage to this file:imp2001-09-131-0/+32
| | | | Make it compile again on 4.x.
* KSE Milestone 2julian2001-09-121-9/+9
| | | | | | | | | | | | | | Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
* Call pcic_teardown_intr to make sure that we disestablish theimp2001-09-121-1/+1
| | | | | | | | interrupt for the card. This seems to fix hangs on my machine. MFC: pending re approval.
* When booting verbose, print the config space for this device. Thisimp2001-09-091-0/+19
| | | | | will help debugging problem systems as it will reduce the number of commands the user needs to type and send me the output of.
* If flags were specified for the device, print them in the probeimp2001-09-091-1/+4
| | | | | | message. Some scsi devices have rather elaberate flags, and it is hard to know which ones were specified in pccard.conf when debug information only includes the dmesg.
* Don't panic when we don't know the exact chip that is being used.imp2001-09-061-4/+44
| | | | | | | | Also, add support for the following parts: O2micro 6912/6972, 6922, 6933 Cirrus Logic PD6834 TI PCI-1260 and PCI-1421 MFC: Soon
* Patric Gualat tells me that I can't do basic bit math. He's right.imp2001-09-051-4/+4
| | | | | | | | When either bit 3 or 4 is set, we need to *SET* bit 5, not clear it in the card control register. This makes TI PCI-1030, 1130 and 1131 not work anymore without this fix. MFC: soon
* Don't report power interrupts.imp2001-09-041-2/+0
|
* MFS: put debug writes behind boot verbose.imp2001-09-041-7/+16
|
* Make the csc and function interrupts ISA on shutdown. This shouldimp2001-09-041-1/+13
| | | | | | | help with the hanging problem on reboot. Note: we need to do the other things as well. Also, turn off the bits in the stat change interrupt mask and the cardbus interrupt mask as well in an attempt to shut off all interrupt sources.
* Kill init_t type, and minor white space changes to match original -stable ↵imp2001-09-041-4/+1
| | | | version
* Add support for changing the way that ToPIC csc interrupts are routed.imp2001-09-042-4/+42
| | | | | | | | | # Note: The ToPIC 100 and the ToPIC 97 datasheets are in disagreement # as to if this bit is supposed to be set or cleared to enable INTA routing # so I made my best guess. Also, comments about the various chipsets, including some grumpy ones about how vague the O2micro datasheets are.
* Move to using a chip function + function pointers to deal with theimp2001-09-045-159/+634
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function and csc interrupt routing path (eg, ISA or PCI) so that we can more easily switch between the two. When we don't have a card ISR, put the function interrupt into ISA mode. This effectively masks the interrupt since it happens once, and not again until we have an ISR. This should help hangs, and might help people that unwisely update the kernel w/o updating pccardd. This is done at mapirq time. Force CL-PD6729/30 to use ISA interrupt routing and maybe even detect the number of pccard slots properly (this is still WIP). We aren't going to support PCI interrupts for this release. A future release should support them, however. Shibata-san's 3.3V fixes are not included. Add a hack which should, in i386, rewrite IRQ 0 cardbus bridges to be IRQ 255, which should cause interrupts to be routed. This is mostly untested since my one tester disappeared after reporting nothing changed. Implement, but do not use, a power method called cardbus. It looked like a great way to get around the 3.3V problem, but it seems that you can only use it to power cardbus cards (I get no CIS when I enable it, so maybe we're programming things bogusly). GC the intr and argp stuff from the slot database. Improve the ToPIC support with the power hacks that Nakagawa-san published in FreeBSD Press and that Hiroyuki Aizu-san ported to -stable. The ToPIC hacks were for 3.3V support in ToPIC 100, but it looks like the '97 also has identical registers, so use them too. Add some #defines for the cardbus power stuff. Finally implement making CSC on the Ricoh chips ISA or PCI. This will allow polling mode to work on vaios, I think. Add some minor debugging. This should likely be cleaned up or put behing a bootverbose. Some of this work, and earlier work, was influanced by Chiharu Shibata-san's power handing patches posted to bsd-nomads:15866. MFC: Soon, if possible.
* Values for the Toshiba ToPIC's Function Control Register.imp2001-09-041-0/+6
| | | | | These were lifted from Nakagawa-san's article in FreeBSD Press, as well as posts from hiroyuki Aizo-san and Chiharu Shibata-san.
* Add recognition for ToPIC95Bimp2001-09-031-0/+3
|
* Add names for the TI PCI-1210, TI PCI-4410 and TI PCI-4450 parts. I hadimp2001-08-301-0/+9
| | | | this for a while, and don't know how it didn't make it into the tree.
* Note the status of the card, so we don't print inserted lines twice onimp2001-08-291-0/+3
| | | | boot.
* Fix typo in my last commitimp2001-08-271-1/+1
|
* CL-PD6729 and CLPD-6730 chips (the only ones with I/O bars in the pciimp2001-08-271-5/+4
| | | | | | | | config space that I'm aware of) work. I'm committing this from such a machine. Remove warning about I/O based bridges. Warn users that the PCI routing of interrupts still doesn't work for these cards.
* A number of fixes for the TI-1130 and ISA interrupt routing cases:imp2001-08-271-13/+23
| | | | | | | | | | | | | | | | | | | | | | | o For TI PCI-1130, you need to set bit 5 of register 91 if you want ANY pci interrupts. Then set bits 3 and/or 4 as appropriate. This will fix those people with 1030, 1130 and 1131 in their machines trying to do PCI interrupts. o Fix case where we were trying to automatically fail back to ISA interrupt routing. We were dereferencing a NULL pointer. This was true of ANY chipset. o The bus_setup_intr method needs to be pcic_setup_intr so that "FAST" interrupts fail on PCI case (modems act flakey if we don't force them to fall back to normal interrupts). Also needed so that the proper ISA IRQ can be set in the ExCA register. This fixes the people whose ISA routing was failing[*]. o When we find a generic yenta/pccard bridge, go ahead and print its vendor ID in boot verbose. Machine with theses symptoms and a serial console by: jedgar [*] Looks like my pc98 machine has some interrupt source on IRQ 15 that gave about 30 interrupts per second, which masked this problem on my PC-9821Nr15.
* Stop dereferencing 'r' unconditionally. Maybe it is NULL when ISAimp2001-08-261-6/+5
| | | | mode and using polling mode.
* Fix last second typoimp2001-08-251-1/+1
|
* Back out the isa/pci string reporting. It may cause panics.imp2001-08-251-17/+2
|
* The tunable is hw.pcic.irq, but the hw.pcic.override_irq was how it wasimp2001-08-251-2/+1
| | | | reported in sysctl.
* Fix cut-and-paste-o that Nate found. We were setting csc_route twice,imp2001-08-251-1/+1
| | | | | rather than setting it once and setting func_route when we can't route PCI interrupts.
* First cut at getting the ISA routing working. If we can't route a PCIimp2001-08-251-31/+57
| | | | | | | | | | | interrupt for the CSC interrupt, then we revert to ISA. If we didn't have an interrupt set up with hw.pcic.irq, then do polling. Also, don't complain about ignoring function 1 for any devices except pcic devices. This would normally only show up if someone set hw.pcic.ignore_function_1=1. MFC: as soon as I can test it on some troublesome laptops.
* Explain what we're doing in pcic_pci_shutdown a little better. Try toimp2001-08-241-5/+16
| | | | | | | | | | | | explain the subtle side effects that are going to happen and why we go ahead and ack the interrupt source. This stuff is tricky to get right. Also, emperical tests have shown that doing a shutdown in attach to be ineffectual, so remove it from there. Analysis of the code paths shows that nearly identical writes to these registers happen in later parts of the code. The hanging problem on thinkpads when we change the interrupt routing type is something else.
OpenPOWER on IntegriCloud