aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/cardbus
Commit message (Collapse)AuthorAgeFilesLines
* Move the PCI-specific logic of removing a cardbus device into aJohn Baldwin2010-01-051-30/+1
| | | | | | | | | | | | pci_delete_child() function called by the cardbus driver. The new function uses resource_list_unreserve() to release the BARs decoded by the device being removed. Reviewed by: imp Tested by: brooks Notes: svn path=/head/; revision=201609
* Fix an error case I missed in the previous change so that the CIS resourceJohn Baldwin2009-12-301-2/+2
| | | | | | | is fully cleaned up if we fail to find the CIS in the devices ROM. Notes: svn path=/head/; revision=201286
* Delete the CIS resource after releasing it. This is needed when the CIS isJohn Baldwin2009-12-301-2/+3
| | | | | | | | | stored in a BAR since the CIS BAR is mapped before the PCI bus driver enumerates all the BARs. Without this change, the PCI bus driver would attempt to initialize a BAR that was already allocated resulting in a panic. Notes: svn path=/head/; revision=201280
* Teach the PCI bus driver to handle PCIR_BIOS BARs properly and remove specialJohn Baldwin2009-12-301-6/+0
| | | | | | | | | | | | handling for the PCIR_BIOS decoding enable bit from the cardbus driver. The PCIR_BIOS BAR does include type bits like other BARs. Instead, it is always a 32-bit non-prefetchable memory BAR where the low bit is used as a flag to enable decoding. Reviewed by: imp Notes: svn path=/head/; revision=201279
* Use bus_*() rather than bus_space_*().John Baldwin2009-12-301-17/+7
| | | | Notes: svn path=/head/; revision=201278
* Minorly improved debugging. Use the DEVPRINTF macro and report theWarner Losh2009-03-131-13/+7
| | | | | | | offset for memory when mapping in the CIS. Notes: svn path=/head/; revision=189755
* Move the deactivation of the device's BAR to before the loop where weWarner Losh2009-03-121-5/+5
| | | | | | | | turn deactivate the resources. While this likely doesn't matter, it is likely to be safer. Notes: svn path=/head/; revision=189731
* Restore blank line removed when fixing my earlier botch. Never doWarner Losh2009-03-101-0/+1
| | | | | | | | | just one last change before bed... Pointy had to: imp Notes: svn path=/head/; revision=189653
* Complete removal of cardbus_write_ivar which was left hanging.George V. Neville-Neil2009-03-101-3/+0
| | | | Notes: svn path=/head/; revision=189636
* When freeing all the resources of the card, it is better to turn offWarner Losh2009-03-101-15/+11
| | | | | | | | | | | | | | | the PORTEN and MEMEN bits in the command register than to zero the bars. Use pci_write_ivar directly instead of a one-line wrapper that adds no value. Track verbosity changes in pci. Remove a stray blank line. Notes: svn path=/head/; revision=189619
* Remove unused variable.Wojciech A. Koszek2009-02-061-2/+0
| | | | | | | | Found with: Coverity Prevent(tm) CID: 4138 Notes: svn path=/head/; revision=188216
* Goof, catch up to constant rename (I renamed it to match the overall PCIJohn Baldwin2009-02-021-1/+1
| | | | | | | | | style of having register offsets start with PCIR_* rather than PCI_*). Submitted by: rss Notes: svn path=/head/; revision=188033
* When no driver attaches to a card, don't power down the card. We canWarner Losh2008-12-311-1/+2
| | | | | | | | | now read config registers of cardbus cards that are inserted, but aren't attached to a driver. Also, add a power related comment... Notes: svn path=/head/; revision=186642
* Don't call destroy_dev on the alias. This fixes half a dozen PRs I think.Warner Losh2008-12-022-7/+4
| | | | Notes: svn path=/head/; revision=185545
* Create a /dev/cardbus%d.cis, to be compatible with older versions ofWarner Losh2008-11-212-1/+6
| | | | | | | | the software. This is a trivial amount of code to keep wireless monitoring software working... I plan on removing it in 9.0. Notes: svn path=/head/; revision=185140
* Overhaul of CIS parsing, next step: keep a cached copy of the CIS,Warner Losh2008-11-174-73/+68
| | | | | | | | | | | | read before we configure the card, so we can implement /dev/cardbus*.cis. Also, do this on a per-child basis, so we now have a different name than before. I think i'll have to fix that for some legacy tools to keep working. I can now do a dumpcis on my running atheros card and have it still work! Notes: svn path=/head/; revision=185015
* First step in cleaning up CIS parsing and /dev/cardbus*.cis: removeWarner Losh2008-11-153-38/+42
| | | | | | | | | redundant malloc/free. Add comments about how this should really be done. Fix an overly verbose comment about under 1MB mapping: go ahead and set the bits, but we ignore them. Notes: svn path=/head/; revision=184981
* Turns out this isn't even used at all... The bogon that I was tracing wasWarner Losh2008-11-031-6/+0
| | | | | | | in code from my p4 tree, not -current. Delete it here. Notes: svn path=/head/; revision=184584
* Use child (the card) in preference to cbdev (the bridge) whenWarner Losh2008-11-031-2/+4
| | | | | | | | | | | | | | allocating resources to read the CIS. I'm not sure when this changed, but it is totally wrong. Also, add a minor improvement to the debugging. This should help everybody trying to run dumpcis on atheros wireless card as well. MFC after: 2 days Notes: svn path=/head/; revision=184581
* We can't mask out the higher order bits and have the size come outWarner Losh2008-11-031-1/+1
| | | | | | | | | | | right... Good thing the size was ignored... Where this macro is used, there's no reason to do it anyway. There seems to have been some old-time confusion between the CIS pointer definition, and the BAR definitions at the base of this bug. Notes: svn path=/head/; revision=184579
* Make the PCI code aware of PCI domains (aka PCI segments) so we canMarius Strobl2007-09-301-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | support machines having multiple independently numbered PCI domains and don't support reenumeration without ambiguity amongst the devices as seen by the OS and represented by PCI location strings. This includes introducing a function pci_find_dbsf(9) which works like pci_find_bsf(9) but additionally takes a domain number argument and limiting pci_find_bsf(9) to only search devices in domain 0 (the only domain in single-domain systems). Bge(4) and ofw_pcibus(4) are changed to use pci_find_dbsf(9) instead of pci_find_bsf(9) in order to no longer report false positives when searching for siblings and dupe devices in the same domain respectively. Along with this change the sole host-PCI bridge driver converted to actually make use of PCI domain support is uninorth(4), the others continue to use domain 0 only for now and need to be converted as appropriate later on. Note that this means that the format of the location strings as used by pciconf(8) has been changed and that consumers of <sys/pciio.h> potentially need to be recompiled. Suggested by: jhb Reviewed by: grehan, jhb, marcel Approved by: re (kensmith), jhb (PCI maintainer hat) Notes: svn path=/head/; revision=172394
* gcc 4.2 thinks that tupleid is uninitialized. Or might be usedWarner Losh2007-06-081-1/+1
| | | | | | | | | | uninitialized. It gets passed into other routines that initialize it... Cope by initializing. Submitted by: mjacob Notes: svn path=/head/; revision=170419
* Fix interrupt routing for some cards after the previous fix to clear BARsJohn Baldwin2007-05-161-6/+7
| | | | | | | | | | in cardbus cards: update the saved copy of the PCIR_INTLINE register in the PCI ivars in addition to the actual register. Reviewed by: imp Notes: svn path=/head/; revision=169633
* Write 0 to all the bars in cardbus_cardbus_setup_regs. This is neededWarner Losh2007-05-161-19/+18
| | | | | | | | | | | because on at least my dc based cards there's garbage in there. The recent changes in the resource code appears to have unmasked this problem... At least dc now probes/attaches better than it did before. Also, we no longer need to write to the cfg for the other registers. Notes: svn path=/head/; revision=169620
* Change PCIM_CIS_ASI_TUPLE to _CONFIG.Warner Losh2007-05-161-1/+1
| | | | | | | | | Add PCI_MAX_BAR_0 minor style nit. Add PCIM_CIS_CONFIG_MASK Notes: svn path=/head/; revision=169616
* Cope gracefully with device_get_children returning an error.Warner Losh2007-01-191-2/+5
| | | | | | | | Obtained from: Hans Petter Selasky P4: http://perforce.freebsd.org/chv.cgi?CH=112957 Notes: svn path=/head/; revision=166104
* Minor cleanup of CIS parsing.Warner Losh2006-06-121-5/+1
| | | | Notes: svn path=/head/; revision=159534
* Better error message when the CIS is a non-standards conforming '0'.Warner Losh2006-06-121-1/+3
| | | | Notes: svn path=/head/; revision=159533
* When we can't parse the CIS, note with a warning that the bogus CISWarner Losh2006-06-121-5/+2
| | | | | | | | was ignored, rather than freaking out. In the past, it wasn't possible to not parse the CIS, so this changes no behavior. Notes: svn path=/head/; revision=159532
* Make the 'pci_devclass' pointer variable private (drivers really shouldn'tJohn Baldwin2006-01-201-1/+0
| | | | | | | | | share devclass pointers, a mistake I've encouraged in the past) and move the declaration of the pci_driver kobj class from cardbus.c to pci_private.h so that other drivers can inherit from pci_driver. Notes: svn path=/head/; revision=154599
* Use the child to allocate the resource rather than bridge, since we'reWarner Losh2006-01-031-41/+6
| | | | | | | | | | | | | allocating a resource that's in the card itself. Remove more now-redundant resource_list_add, and now-redunant code that lives in the pci layer. # This fixes the atheros card that I have which had its CIS in one of # the BARs. Don't know yet if this fixes the amd64 issues reported. Notes: svn path=/head/; revision=153981
* Minor style(9) hacking, plus use a macro in place of (struct resource *)~0ULWarner Losh2006-01-031-6/+7
| | | | | | | (what the heck does that mean?). Notes: svn path=/head/; revision=153980
* Fixing build bustage.Tai-hwa Liang2005-12-311-1/+1
| | | | Notes: svn path=/head/; revision=153920
* Remove now-obsolete printf warning.Warner Losh2005-12-301-7/+2
| | | | Notes: svn path=/head/; revision=153900
* Move all of the resource allocation into the pci layer. The resourceWarner Losh2005-12-301-321/+15
| | | | | | | allocation here just duplicated it (badly). Notes: svn path=/head/; revision=153896
* The RID2BAR macro returns a number, not a bitmask. Fix this.Warner Losh2005-12-301-4/+6
| | | | | | | Spotted by: ru, jhb Notes: svn path=/head/; revision=153895
* - Retire BARBIT in favor of new PCI_RID2BAR.Gleb Smirnoff2005-12-301-5/+5
| | | | | | | - Fix build. Notes: svn path=/head/; revision=153875
* Retire BARBIT in favor of new PCI_RID2BAR.Warner Losh2005-12-292-5/+4
| | | | Notes: svn path=/head/; revision=153862
* Help Warner with merge from p4.Gleb Smirnoff2005-12-291-1/+2
| | | | Notes: svn path=/head/; revision=153832
* Implement /dev/cardbus%d.cis, same thing as /dev/pccard%d.cis. ThereWarner Losh2005-12-294-71/+268
| | | | | | | | are some rough edges with this still, but it seems to work well enough to commit. Notes: svn path=/head/; revision=153811
* When in rev. 1.47 cardbus_alloc_resources() function was moved fromGleb Smirnoff2005-12-281-15/+40
| | | | | | | | | | | | | | | | | | | | | | | cardbus_cis.c to this file, some code was not merged and thus resource list entries were invalid. They didn't have a resources attached to them. However, the problem was masked for some time later, because newer resources list entries were added to the head of the list, and resource_list_find() always returned the first matching resource list entry. Usually the underlying driver allocated a valid resource and added it to the head of the list, and invalid one wasn't used. In rev. 1.174 of subr_bus.c the sorting of resource list entries was reversed demasking the problem in cardbus_alloc_resources(). This commit fixes the problem returning back some code from cardbus_cis.c, pre-1.49 revisions. PR: kern/87114 PR: kern/90441 Hardware provided by: Vasily Olekhov <olekhov yandex.ru> Reviewed by: imp Notes: svn path=/head/; revision=153788
* Cardbus has only 1 slot, so simplify a little.Warner Losh2005-10-282-44/+37
| | | | Notes: svn path=/head/; revision=151789
* Eliminate even more duplication, and move some definitions into pcireg.hWarner Losh2005-10-282-45/+19
| | | | Notes: svn path=/head/; revision=151785
* Remove now redundant defines.Warner Losh2005-10-281-6/+0
| | | | Notes: svn path=/head/; revision=151784
* Simplify code a little, prefer PCI?_FOO registers where possible.Warner Losh2005-10-281-15/+9
| | | | Notes: svn path=/head/; revision=151783
* Use PCIR_BARS rather than CARDBUS_BASE0_REGWarner Losh2005-10-281-2/+3
| | | | | | | Style nit. Notes: svn path=/head/; revision=151782
* Calling rman_get_start() after bus_release_resource() is evil.Ruslan Ermilov2005-09-271-2/+2
| | | | | | | It became fatal after a recent "struct resource" split change. Notes: svn path=/head/; revision=150616
* Use STAILQ in preference to SLIST for the resources. Insert new resourcesWarner Losh2005-03-181-4/+4
| | | | | | | | | | | | last in the list rather than first. This makes the resouces print in the 4.x order rather than the 5.x order (eg fdc0 at 0x3f0-0x3f5,0x3f7 is 4.x, but 0x3f7,0x3f0-0x3f5 is 5.x). This also means that the pci code will once again print the resources in BAR ascending order. Notes: svn path=/head/; revision=143785
* Doh! silly typo precludes compilingWarner Losh2005-03-111-2/+2
| | | | Notes: svn path=/head/; revision=143395
* Revert changes of 1.49. Lots-a-people broke with it, for reasonsWarner Losh2005-03-111-5/+9
| | | | | | | | | | | | unknown (since my sony vaio didn't :-(. Instead, fix the problem described by 1.49 in a different way: just add the two calls I'd hoped I'd avoid in 1.49 by doing the (wrong) gymnastics there. While 1.49 is a good direction to go in, each step of the way should work :-(. Notes: svn path=/head/; revision=143394