summaryrefslogtreecommitdiffstats
path: root/sys/pci
Commit message (Collapse)AuthorAgeFilesLines
* Typo in comment (decent performances -> decent performance).wpaul2000-09-221-1/+1
|
* Make pcn_miibus_readreg() latch onto the first PHY that it finds (aswpaul2000-09-222-1/+5
| | | | | | | | | a result of mii_phy_probe()) and use that rather than hardcoding a constant. The hardcoded way was too specific to the particular card I had and caused PHY probing to fail on at least one laptop with a built-in AMD chip. Reported by: rjk@grauel.com (Richard J Kuhns)
* some copyright cleanupsmjacob2000-09-211-3/+2
|
* Add the PCI device ID for the on-board ethernet controllers on thewpaul2000-09-212-0/+4
| | | | | Intel 815E motherboard, which I believe is an i82562. Seems to work just fine with the fxp driver.
* Remove one debug line that snuck in by accident.wpaul2000-09-201-1/+0
|
* Add a new driver for the AMD PCnet/FAST, FAST+ and Home PCI adapters.wpaul2000-09-202-0/+1865
| | | | | | | | | | | | | | Previously, these cards were supported by the lnc driver (and they still are, but the pcn driver will claim them first), which is fine except the lnc driver runs them in 16-bit LANCE compatibility mode. The pcn driver runs these chips in 32-bit mode and uses the RX alignment feature to achieve zero-copy receive. (Which puts it in the same class as the xl, fxp and tl chipsets.) This driver is also MI, so it will work on the x86 and alpha platforms. (The lnc driver is still needed to support non-PCI cards. At some point, I'll need to newbusify it so that it too will me MI.) The Am79c978 HomePNA adapter is also supported.
* Clean up the VIA id's a bit and add the K[TX]133 chipsetssos2000-09-201-7/+12
|
* If this is a Davicom DM9102A and we're enabling the homePNA link, forcewpaul2000-09-201-4/+9
| | | | | dc_link to 1 and don't activate the tick routine. Without this, dc_start() always thinks the link is down and never transmits in homePNA mode.
* Removed NetBSD support, which bit-rotted long ago.dg2000-09-182-363/+41
| | | | Changed new SMP locking macros given the new situation.
* Added a couple more missing FXP_SPLVAR()'s.dg2000-09-171-0/+2
|
* As a minor optimization, do suspended checking more like it was originallydg2000-09-171-1/+6
| | | | in the PR - before the while loop.
* Added missing FXP_SPLVAR() to fxp_intr().dg2000-09-171-2/+2
|
* Attempt to replicate the new fxp SMP locking in the changes committeddg2000-09-171-6/+8
| | | | in the previous (APM suspend/resume) commit.
* Added support for APM suspend/resume.dg2000-09-172-7/+111
| | | | | PR: 18756 Submitted by: mike ryan <msr@elision.org>, with modifications by me.
* Add include of proc.h to make compile without SMP defined. Thiscp2000-09-171-0/+1
| | | | | | | change is likely interm, the include happens automagically when SMP is defined. Obtained from: Jason Evans.
* Add locking to make able to run without the Giant lock being held. Thiscp2000-09-172-17/+51
| | | | | | | | is enabling as all entries are still called with Giant being held. Maintaining compatability with NetBSD makes what should be very simple kinda ugly. Reviewed by: Jason Evans
* Add PCIM_CMD_MWRICEN, the bit in the command register in PCI spacegibbs2000-09-161-0/+1
| | | | that enables memory write and invalidate cycles on a bus master.
* Make LINT compile again.phk2000-09-161-0/+1
|
* - Remove the inthand2_t type and use the equivalent driver_intr_t type fromjhb2000-09-131-8/+1
| | | | | | | | | | | | | newbus for referencing device interrupt handlers. - Move the 'struct intrec' type which describes interrupt sources into sys/interrupt.h instead of making it just be a x86 structure. - Don't create 'ithd' and 'intrec' typedefs, instead, just use 'struct ithd' and 'struct intrec' - Move the code to translate new-bus interrupt flags into an interrupt thread priority out of the x86 nexus code and into a MI ithread_priority() function in sys/kern/kern_intr.c. - Remove now-uneeded x86-specific headers from sys/dev/ata/ata-all.c and sys/pci/pci_compat.c.
* Per msmith's request, don't attach to Qlogic 12160 id'd cards that havemjacob2000-09-071-0/+8
| | | | a certain SubVendorID.
* Special-case the LED twiddling code so that it doesn't do anythingwpaul2000-09-072-2/+12
| | | | | | | on the NEC VersaPro NoteBook PC. This 21143 implementation has no LEDs, and flipping the LED control bits somehow stops it from establishing a link. We check the subsystem ID and don't flip the LED control bits for the NEC NIC.
* Major update to the way synchronization is done in the kernel. Highlightsjasone2000-09-071-1/+3
| | | | | | | | | | | | | | | include: * Mutual exclusion is used instead of spl*(). See mutex(9). (Note: The alpha port is still in transition and currently uses both.) * Per-CPU idle processes. * Interrupts are run in their own separate kernel threads and can be preempted (i386 only). Partially contributed by: BSDi (BSD/OS) Submissions by (at least): cp, dfr, dillon, grog, jake, jhb, sheldonh
* Register resources in a more opportune order for the hardware.phk2000-09-051-17/+17
|
* Add compaq hotplug PCI device id.peter2000-09-051-9/+27
| | | | | Tidy up some loose ends. Be a little more consistent how the ign driver probes with the rest of the drivers in this file.
* When dumping the 'found devices' list in verbose mode, actually show thepeter2000-09-051-0/+2
| | | | | | bus/slot/function numbers. The old PCI code used other markers or something, but without it here under the new pci code it is very hard to tell which device is which (this only affects bootverbose mode).
* Fix pci-pci bridges (I hope).peter2000-09-031-9/+4
| | | | | | | | | | | In the nexus case, there are no ivars for children of nexus devices, and we were passing data in from before the device existed, hence ivars are convenient as the softc doesn't really exist yet. However, for pci->pci bridges, the pcib occupies a pci device itself, which *does* already have ivars. However, softc is available and stable at this point since we've been identified and are locating the bus during attach. So, use softc for this version of pcib devices for storing the physical bus number in.
* Define some more bits in CSR15 needed for previous change.wpaul2000-09-021-0/+4
|
* Make the blinkylights on non-MII 21143 cards work. We need to enablewpaul2000-09-011-0/+11
| | | | | | | the link and activity LED control bits in CSR15 in order for the controller to drive the LEDs correctly. This was largely done for the ZNYX multiport cards, but should also work with the DEC DE500-BA and other non-MII cards.
* If a base address register has been set up by the BIOS, but the relevantmsmith2000-09-011-6/+13
| | | | | | | enable bit hasn't been set in the command register, set the bit and honour the register. It seems that quite a few lazy BIOS writers aren't bothering to do this, which upsets the existing code and causes us to miss out on properly-configured devices.
* Take a shot at fixing multiple pci busses on i386.peter2000-08-311-6/+11
| | | | | | | | pcib_set_bus() cannot be used on the new child because it is meant to be used on the *pci* device (it looks at the parent internally) not the pcib being added. Bite the bullet and use ivars for the bus number to avoid any doubts about whether the softc is consistant between probe and attach. This should not break the Alpha code.
* Remove duplicate static definition of pci_devclasspeter2000-08-311-1/+0
|
* Add a detach method to allow this device to be unloaded.imp2000-08-301-0/+7
|
* Add TI-1031 id. It doesn't work yet, but it is nice to have it.imp2000-08-292-0/+6
| | | | | These were on cards that were pci pccard (not cardbus) bridges that lived in SparcUltras that picked up on ebay.
* * Completely rewrite the alpha busspace to hide the implementation fromdfr2000-08-287-216/+318
| | | | | | | | | | | | the drivers. * Remove legacy inx/outx support from chipset and replace with macros which call busspace. * Rework pci config accesses to route through the pcib device instead of calling a MD function directly. With these changes it is possible to cleanly support machines which have more than one independantly numbered PCI busses. As a bonus, the new busspace implementation should be measurably faster than the old one.
* Add support for the 3Com 556 and 556B mini-pci adapters used on somewpaul2000-08-282-9/+89
| | | | | | | laptops. I've checked that this still works with the other cards and it works with the 3c556 that I have access to, but I want to check that it works with the 556B mentioned in PR #20878 before I close out the PR and merge to -stable.
* remove clause 3 licencemjacob2000-08-271-7/+1
|
* Correct messages for VIA Apollo Pro133A.kuriyama2000-08-251-1/+5
|
* Fix up the sis driver, largely to improve the NatSemi DP83815 support:wpaul2000-08-222-19/+85
| | | | | | | | | | | | | | | | | | | | | | | - Modify the driver to poll the link state and positively set the MAC to full or half duplex as needed. Previously, it was possible for the MAC to remain in half duplex even though the PHY had negotiated full duplex with its link partner, which would result in bursty performance. - Program some of the NatSemi's registers as specified by the datasheet. The manual says these are necessary for "optimum perofrmance," though a couple of them are marked as reserved in the register map. *shrug* - Select the TX DMA burst size correctly for 10 and 100mbps modes. Previously I was using 64 bytes in both modes, which worked in 100mbps mode, but resulting in spotty performance in 10mbps. 32 bytes works much better; without this change, the natsemi chip yields piss poor performance at 10mbps. With these fixes, the NatSemi chip finally performs to my satisfaction. I should be merging the support for this controller into -stable shortly. Phew.
* Replace the mbuf external reference counting code with somethingdwmalone2000-08-195-152/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that should be better. The old code counted references to mbuf clusters by using the offset of the cluster from the start of memory allocated for mbufs and clusters as an index into an array of chars, which did the reference counting. If the external storage was not a cluster then reference counting had to be done by the code using that external storage. NetBSD's system of linked lists of mbufs was cosidered, but Alfred felt it would have locking issues when the kernel was made more SMP friendly. The system implimented uses a pool of unions to track external storage. The union contains an int for counting the references and a pointer for forming a free list. The reference counts are incremented and decremented atomically and so should be SMP friendly. This system can track reference counts for any sort of external storage. Access to the reference counting stuff is now through macros defined in mbuf.h, so it should be easier to make changes to the system in the future. The possibility of storing the reference count in one of the referencing mbufs was considered, but was rejected 'cos it would often leave extra mbufs allocated. Storing the reference count in the cluster was also considered, but because the external storage may not be a cluster this isn't an option. The size of the pool of reference counters is available in the stats provided by "netstat -m". PR: 19866 Submitted by: Bosko Milekic <bmilekic@dsuper.net> Reviewed by: alfred (glanced at by others on -net)
* Fix a bug brought to light by the people working on SMPng. I don't quitewpaul2000-08-111-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | understand exactly what it is about SMPng that tickles this bug. What I do know is that the foo_init() routine in most drivers is often called twice when an interface is brought up. One time is due to the ifconfig(8) command calling the SIOCSIFFLAGS ioctl to set the IFF_UP flag, and another is probably due to the kernel calling ifp->if_init at some point. In any case, the SMPng changes seem to affect the timing of these two events in such a way that there is a significant delay before any packets are sent onto the wire after the interface is first brought up. This manifested itself locally as an SMPng test machine which failed to obtain an address via DHCP when booting up. It looks like the second call to fxp_init() is happening faster now than it did before, and I think it catches the chip while it's in the process of dealing with the configuration command from the first call. Whatever the case, a FXP_CSR_SCB_CNA interrupt event is now generated shortly after the second fxp_init() call. (This interrupt is apparently never generated by a non-SMPng kernel, so nobody noticed.) There are two problems with this: first, fxp_intr() does not handle the FXP_CSR_SCB_CNA interrupt event (it never tests for it or does anything to deal with it), and second, the meaning of FXP_CSR_SCB_CNA is not documented in the driver. (Apparently it means "command unit not active.") Bad coder. No biscuit. The fix is to have the FXP_CSR_SCB_CNA interrupt handled just like the FXP_SCB_STATACK_CXTNO interrupt. This prevents the state machine for the configuration/RX filter programming stuff from getting wedged for several seconds and preventing packet transmission. Noticed by: jhb
* Close PR 20438. Make fix for preserving LED settings conditional onwpaul2000-08-071-3/+7
| | | | presence Intel 21143 chip.
* Add the ESS Solo-1 to generic chip match.sanpei2000-08-031-0/+2
| | | | | Solo-1 Datasheet(vendor/device info at P.33) http://www.alsa-project.org/alsa/ftp/manuals/ess/DsSolo1.pdf
* Add support for the Netgear GA620T copper gigabit card.wpaul2000-08-022-1/+8
|
* Add call to bus_generic_attach() at the end of sk_attach(). It turns out thatwpaul2000-08-021-0/+2
| | | | | | | | if you kldload this driver, all the subordinate devices are probed/attached as expected. But this is not the case when the driver is statically compiled into the kernel. Since I do most of my testing with modules, I failed to notice this. I'm not sure if it's intended behavior or not. I think it may be, but it seems a little counter-intuitive.
* Grrrr. Add definition for DC_WDOG_CTLWREN. I made this change yesterdaywpaul2000-08-021-0/+1
| | | | but stupidly only commited to if_dc.c.
* Apply patch supplied by John Hood <jhood@sitaranetworks.com> to fix problemswpaul2000-08-011-2/+13
| | | | | | | with LEDs on some cards being stomped on when clearing the "jabber disable" bit. Using DC_SETBIT() has an unwanted side effect of setting a write enable bit in the watchdog timer register which we really want to be cleared when we do a write.
* Part of major rewrite for core version 2.0- clarification ofmjacob2000-08-011-99/+106
| | | | | mdvec structure, removal of printf/CFGPRINTF in place of isp_prt calls. Parameterization of RQUEST_QUEUE_LEN/RESULT_QUEUE_LEN.
* "Fix" cast qualifier warnings using the uintptr_t intermediate trick.peter2000-07-281-3/+6
|
* Document the 0x12258086 PCI id.asmodai2000-07-271-1/+1
| | | | | | | This is in fact an Intel Orion chipset (82454KX/GX) which has been used in HP NetServer's LS4 range. HP Probably relabeled the DID. That's the only explanation I can find plausible to this `mystery'.
* Use a custom Tigon 2 firmware image, hopefully temporarily. This iswpaul2000-07-261-1683/+1728
| | | | | | | | | | | the 12.4.11 firmware with a few changes to the link handling code merged in from the 12.4.13 release. I'm doing this because the 12.4.13 firmware doesn't seem to handle 10/100 link settings properly on 1000baseT cards. Note that the revision codes still identify the firmware as 12.4.13 because both ti_fw2.h and ti_fw.h have to have the same revision values, and I wanted to keep the 12.4.13 firmware for Tigon 1 cards. It's nice to have firmware source.
OpenPOWER on IntegriCloud