Commit Graph

43 Commits

Author SHA1 Message Date
thorpej e9bb880aaf The ADMtek AN985 "ghosts" the single built-in PHY at every MII address.
Work around this by having a custom media init routine that limits the
search to MII address 1.
2001-01-08 21:40:29 +00:00
onoe 644aa13a51 Fixed the value of TULIPF_DBO; which was accidentaly shared with the same
value of TULIPF_BLE.  Pointed out by Enami-san.
2000-10-23 04:05:21 +00:00
onoe fcde56c9ba Add flags to indicate that tlp_init() should set some more BUSMODE bits.
TULIPF_BLE	/* data is big endian */
	TULIPF_DBO	/* descriptor is big endian */
These setting is required for Big-endian bus front-end (such as APbus for
newsmips) to work with tulip.  Also,
	sc_maxburst
member is added to the tulip_softc to limit the maximum burst length.
This member defaults to zero which means no restriction for burst length.
2000-10-11 14:59:52 +00:00
enami db6fba6bdf Move inclusion of rnd.h and sys/rnd.h from tulip.c to tulipvar.h. 2000-10-09 14:31:01 +00:00
enami ca88e2b6bd Make tulip a random source. 2000-10-09 12:54:28 +00:00
thorpej 7edd5d54bc Add support for the ADMtek AN983 and AN985. 2000-10-03 04:32:00 +00:00
castor b6dd28b4ce Support some differences in the Macronix 98715AEC-C and E chips from the other
98715* series.

The MX98715AEC-[C,E] use a different location in the serial eerom for
LED control, and programming it with the original location's values
caused unpredictable behavior.

Also, start integrating fixes where media changes on an adapter
under load may fail.  There's more work to be done here, but I need
to sort out our internal changes a little more carefully.
2000-08-03 03:07:30 +00:00
thorpej 8a3725612d Add support for the Davicom DM9102 and DM9102A 10/100 Ethernet chips.
Partially based on diffs submitted by Matthew Orgass <darkstar@pgh.net>
and IWAMOTO Toshihiro <iwamoto@sat.t.u-tokyo.ac.jp>.
2000-05-26 16:38:13 +00:00
thorpej f4a3f5ea48 So, while the DEC chips and other clones want no FS|LS in the
setup descriptor, apparently the Xircom X3201-3 requires it.
2000-05-25 18:46:07 +00:00
thorpej 215a635a5b Truncate receive buffers to 4-byte boundary. Slightly modified
from kern/10198, from Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>.
2000-05-25 16:47:18 +00:00
thorpej 5a41b5bf56 - if_tlp_cardbus.c: Use the `pmreg' pointer passed by by
cardbus_get_capability() [mirror change already made to if_tlp_pci.c]
- if_tlp_cardbus.c: If we don't find an ISV SROM, try to grab the
  Ethernet address from the CIS.
- if_tlp_cardbus.c: set CardBus cards to store-and-forward mode from
  the get-go.
- Put the TxThresh tables in tulipvar.h, and use them in the CardBus
  and PCI front-ends to go to store-and-forward mode.
- Document the Xircom X3201-3 clone a little more.
2000-04-04 19:22:50 +00:00
thorpej fc96443d15 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 07:01:25 +00:00
thorpej 92c19e5ff7 Add suspend/resume hooks to ensure that the chip doesn't scramble memory
after an APM suspend and is unsnoozed after an APM resume.
2000-03-19 21:45:23 +00:00
thorpej c38405d33d Add power management support to the `tlp' driver. The battery on my
laptop lasts a whole lot longer now.
2000-03-15 18:39:50 +00:00
mycroft 5eee9ca94c Determine the size of the SROM by probing the chip using the standard Microwire
protocol.  Eliminates the need for srom_quirks and some other trash.
2000-03-07 00:39:17 +00:00
thorpej 001748dc57 First cut at detach support; doens't fully work yet. 2000-02-01 22:54:47 +00:00
thorpej a72f993570 When possible, use ring mode for descriptors. Not only is this slightly
more efficient on genuine DEC chips, but some clones apparently Lose Badly
if you use chain mode.  To further complicate things, some clones *only*
do chain mode, so make this whole mess conditional.
2000-01-28 23:23:49 +00:00
thorpej 59fbdbb7cb Just use a regular Tx descriptor for the setup packet; don't bother with
a separate one.
2000-01-28 22:23:58 +00:00
thorpej 62fb37ba49 Some changes for the Xircom X3201-3 in 21143 emulation mode:
- The Xircom doesn't bring itself out of reset; we have to do it.
- The Xircom requires transmit buffers to be aligned to 4 bytes, too.

Partially from Rafal Boni (though the Tx buffer alignment issue is
handled much differently in this version).
2000-01-25 22:11:12 +00:00
thorpej 6aca67041c Add a chip type for the Xircom X3201-3, and centralize the declaration
of the chip names array.
2000-01-25 19:29:17 +00:00
thorpej a661b4e5dc Oops, forgot to byte-swap the receive descriptors. 1999-12-12 02:41:51 +00:00
thorpej caae0e1aa1 - Don't try to run the chip in big-endian mode. Not all chips support
this consistently, and it doesn't always work even when the chip
  supports it.
- Make sure things DMA'd to the chip that the chip interprets are in
  little-endian mode.
1999-12-11 00:32:59 +00:00
thorpej 9ed17102f4 - Use the common MII bit-bang module.
- Add support other than 128-byte SROMs.
- Add support for the 21142/21143 MII.
1999-11-19 18:22:42 +00:00
thorpej e3f20e8ff1 Use Memory Read Line and Memory Read Multiple on the 21140, 21140A,
21142, and 21143, if the PCI bus says its okay.
1999-11-04 01:20:55 +00:00
thorpej e017601bd3 More or less completely rewrite the way DECchip media is handled, and
add support for the DECchip 21142/21143 SIA/SYM media.  Make the Macronix
98713 behave like a 21140A, and the 98713A and later behave like a 21143.
Nuke all of the Macronix-specific Nway code, as it will be identical to
the 21143 Nway code once it is written.
1999-11-03 22:25:08 +00:00
thorpej 2492ffef4c Changes to get the Lite-On/Macronix 82C115 working:
- 82C115 has a 128-bit multicast hash table, not 512-bit.
- Correct the way the MAC address is read from the SROM, after re-reading
  the MX98715A Application Note.

Other semi-related changes:
- Differentiate between MX98715 and MX98715A.
- Improve the Macronix link-up/link-down detection.
1999-09-30 17:48:24 +00:00
thorpej 9d911ccd55 Add some optional stats gathering, and fix tx stats counting; use the last
descriptor in the packet, not the first.
1999-09-29 23:11:36 +00:00
thorpej e3398d3647 - Get a little closer on the Macronix chips. Still some more work to do.
- Add some basic support for the ADMtek AL981 clone (which, unfortunately,
  I can't test until my sample boards arrive).
1999-09-29 18:52:19 +00:00
enami ee587c6c18 s/#define /#define<TAB>/. 1999-09-28 15:10:20 +00:00
thorpej 848d8b7080 Add a media name pointer to the tulip_2114x_media structure, and define
a table for converting SROM media block type codes to ifmedia subtypes.
1999-09-27 19:03:59 +00:00
thorpej 4fa51ba8bd Make tlp_read_srom() work on big-endian systems.
From a patch supplied by Luoqi Chen <luoqi@chekov.watermarkgroup.com>.
1999-09-26 03:39:01 +00:00
thorpej c999e3ca1a Add support for the DECchip 21140[A]. This currently only works with
boards which use MII for media attachment.

ISV SROM format information lifted from Matt Thomas's `de' driver.

Thanks to Dave Sainty for experimenting w/ his 21140A MII boards, and
for supplying a fix to the MII bit-bang code (PR #8382).
1999-09-25 00:27:00 +00:00
thorpej 664d8da4f5 Add support for the DECchip 21041. This also adds some preliminary
support for the ISV SROM format used in the 2114{1,1A,2,3}.  Note, like
the 21040, auto-sense is not yet supported for the 21041.

Add a "pre-init" hook, which will be used for the 2114x and PNIC (currently)
which allows chip-specific code to set up and write OPMODE before the
chip is reset.  This is necessary in order for the chip's internal
pathways to get initialized properly for MII/SYM/PCS/SIA media attachments.

Thanks to Dave Sainty for the hint from the `de' driver that inspired the
pre-init hook.
1999-09-20 19:26:54 +00:00
thorpej 70997fd3d5 Move the PCI device number to the base Tulip softc; it will be needed to
decode the SROM on 21041 and 2114x multi-port boards.
1999-09-14 23:33:04 +00:00
thorpej 5c34356d4c First crack at shared ROM/shared interrupts on 21040 multi-port boards,
plus quirk identification for non-multiple-port boards.
1999-09-14 22:25:48 +00:00
thorpej 12c167b5ca Change the semantics of `sc_regshift'; it is now the shift required to
make a CSR index number into a CSR offset.  Introduce a couple of macros
to handle CSR name -> offset conversion.
1999-09-14 05:52:21 +00:00
thorpej a03bd733ca - More PNIC NWAY stuff. Still more work to do, here.
- Fix the SROM checksum routine.
- Add code to parse the old DEC Address ROM SROM format.
- Rearrange the statchg routines a bit, to make them consistent with one
  another.
- Add support for the DECchip 21040.  XXX No support for media autosense
  yet, and no support for any of the multi-port boards yet.
1999-09-14 00:55:38 +00:00
thorpej 057798e505 Snapshot of work-in-progress to support the internal NWay block on
the Lite-On PNIC chips.  Not finished yet; some other infrastructure
work left to do.
1999-09-09 21:48:18 +00:00
thorpej a10045109d Add chip types for several more Tulip clones (ASIX, ADMtex, PNIC II, Davicom),
and match the Compex RL100-ATX; it uses the Winbond 89C840F (RL100-TX is
a Macronix 98713).
1999-09-08 22:29:46 +00:00
thorpej 8386184524 Deal with some more Winbond differences, after a more-thorough-than-before
reading of its manual.
1999-09-02 23:25:28 +00:00
thorpej cfbc8a82fb Make Tulip-style filter setup interrupt-driven. 1999-09-01 20:56:15 +00:00
thorpej 5d7f25011b Some of the Tulip clone chips (like the Winbond and ASIX) want the
IC bit set in the *first* descriptor of the outgoing packet.  Appease
them.
1999-09-01 05:07:03 +00:00
thorpej e293024ffa This is the long-awaited "new Tulip driver", a complete, from-scratch
rewrite of the driver for the DECchip 21x4x Ethernet chips, and a variety
of clones.

Currently, the driver supports the Winbond 89C840F (this works pretty
well), and the Lite-On PNIC (e.g. NetGear PCI boards), however Lite-On
support may be broken [I may simply have a busted test board].

Eventually, support for the Macronix and ASIX chips will filter into
this driver, and then, slowly, support for the genuine DEC chips,
and maybe even the DE-425 EISA model.
1999-09-01 00:32:41 +00:00