Home | History | Annotate | Download | only in pci
History log of /src/sys/arch/i386/pci/geode.c
RevisionDateAuthorComments
 1.17  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.16  24-Apr-2021  thorpej branches: 1.16.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.15  01-Jul-2011  dyoung branches: 1.15.68;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.14  19-Oct-2009  rmind Drop 3rd and 4th clauses from David Young's license.
Reviewed and approved by dyoung@ (copyright holder).
 1.13  10-May-2008  jmcneill branches: 1.13.12;
Use aprint_naive, cleanup error printing.
 1.12  05-May-2008  xtraeme branches: 1.12.2;
device_t/softc split and other related cosmetic changes.
 1.11  28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.10  04-Apr-2008  cegger branches: 1.10.2; 1.10.4;
use aprint_*_dev and device_xname
OK joerg
 1.9  03-Jan-2008  dyoung branches: 1.9.6;
Support detachment of geodegcb(4) and its children, geodecntr(4)
and geodewdog(4). Support detachment of gscpcib0 and its child,
gpio0.
 1.8  16-Nov-2006  christos branches: 1.8.28; 1.8.34; 1.8.42;
__unused removal on arguments; approved by core.
 1.7  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.6  07-Jun-2006  kardel branches: 1.6.4; 1.6.8; 1.6.10;
convert to timecounters (from branch simonb-timecounters)
 1.5  08-Mar-2006  dyoung branches: 1.5.4; 1.5.6;
Move my bit-twiddling macros to libkern.h from my drivers, where
I had duplicated them. Improve the macros' names. Simplify their
implementation.

A brief description of each macro is below.

BIT(n): Return a bitmask with bit m set, where the least
significant bit is bit 0.

BITS(m, n): Return a bitmask with bits m through n, inclusive,
set. It does not matter whether m>n or m<=n.
The least significant bit is bit 0.

A "bitfield" is a span of consecutive bits defined by a
bitmask, where 1s select the bits in the bitfield. SHIFTIN,
SHIFTOUT, and SHIFTOUT_MASK help read and write bitfields
from device registers.

SHIFTIN(v, mask): Left-shift bits `v' into the bitfield
defined by `mask', and return them. No
side-effects.

SHIFTOUT(v, mask): Extract and return the bitfield selected
by `mask' from `v', right-shifting the
bits so that the rightmost selected bit
is at bit 0. No side-effects.

SHIFTOUT_MASK(mask): Right-shift the bits in `mask' so that
the rightmost non-zero bit is at bit
0. This is useful for finding the
greatest unsigned value that a bitfield
can hold. No side-effects. Note that
SHIFTOUT_MASK(m) = SHIFTOUT(m, m).

Examples:

/*
* Register definitions taken from the RFMD RF3000 manual.
*/
#define RF3000_GAINCTL 0x11 /* TX variable gain control */
#define RF3000_GAINCTL_TXVGC_MASK BITS(7, 2)
#define RF3000_GAINCTL_SCRAMBLER BIT(1)

/*
* Shift the transmit power into the transmit-power field of the
* gain-control register and write it to the baseband processor.
*/
atw_rf3000_write(sc, RF3000_GAINCTL,
SHIFTIN(txpower, RF3000_GAINCTL_TXVGC_MASK));


/*
* Register definitions taken from the ADMtek ADM8211 manual.
*
*/
#define ATW_RXSTAT_OWN BIT(31) /* 1: NIC may fill descriptor */
/* ... */
#define ATW_RXSTAT_DA1 BIT(17) /* DA bit 1, admin'd address */
#define ATW_RXSTAT_DA0 BIT(16) /* DA bit 0, group address */
#define ATW_RXSTAT_RXDR_MASK BITS(15,12) /* RX data rate */
#define ATW_RXSTAT_FL_MASK BITS(11,0) /* RX frame length, last
* descriptor only
*/

/* Extract the frame length from the Rx descriptor's
* status field.
*/
len = SHIFTOUT(rxstat, ATW_RXSTAT_FL_MASK);
 1.4  19-Feb-2006  thorpej branches: 1.4.2; 1.4.4;
Use aprint_*().
 1.3  11-Dec-2005  christos branches: 1.3.2; 1.3.4; 1.3.6;
merge ktrace-lwp.
 1.2  22-Sep-2005  dyoung branches: 1.2.6;
Suppress false 'WARNING: LAST RESET DUE TO WATCHDOG EXPIRATION!'
indications by clearing the WDOVF status flag for real. The way
to do that is by writing 1, not 0.
 1.1  22-Sep-2005  dyoung Add a driver for the watchdog timer on the AMD Geode SC1100.
 1.2.6.2  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.2.6.1  22-Sep-2005  skrll file geode.c was added on branch ktrace-lwp on 2005-11-10 13:56:53 +0000
 1.3.6.2  22-Apr-2006  simonb Sync with head.
 1.3.6.1  28-Feb-2006  kardel Move watchdog timer support code out of geode.c in to its
own file, leaving geode.c to just set up GDB mappings.
Add support for CGB high resolution counter as a time counter.
 1.3.4.1  09-Sep-2006  rpaulo sync with head
 1.3.2.1  01-Mar-2006  yamt sync with head.
 1.4.4.1  19-Apr-2006  elad sync with head - hopefully this will work
 1.4.2.2  26-Jun-2006  yamt sync with head.
 1.4.2.1  13-Mar-2006  yamt sync with head.
 1.5.6.3  20-May-2006  tron Pull up following revision(s) (requested by riz in ticket #1333):
sys/arch/i386/pci/geode.c: revision 1.2
Suppress false 'WARNING: LAST RESET DUE TO WATCHDOG EXPIRATION!'
indications by clearing the WDOVF status flag for real. The way
to do that is by writing 1, not 0.
 1.5.6.2  20-May-2006  tron Pull up following revision(s) (requested by riz in ticket #1331):
sys/arch/i386/conf/GENERIC: revision 1.701
sys/arch/i386/pci/geodereg.h: revision 1.1
sys/arch/i386/conf/files.i386: revision 1.270
sys/arch/i386/pci/geode.c: revision 1.1
Add a driver for the watchdog timer on the AMD Geode SC1100.
 1.5.6.1  08-Mar-2006  tron file geode.c was added on branch netbsd-3 on 2006-05-20 12:25:40 +0000
 1.5.4.1  19-Jun-2006  chap Sync with head.
 1.6.10.2  10-Dec-2006  yamt sync with head.
 1.6.10.1  22-Oct-2006  yamt sync with head
 1.6.8.1  18-Nov-2006  ad Sync with head.
 1.6.4.4  21-Jan-2008  yamt sync with head
 1.6.4.3  30-Dec-2006  yamt sync with head.
 1.6.4.2  21-Jun-2006  yamt sync with head.
 1.6.4.1  07-Jun-2006  yamt file geode.c was added on branch yamt-lazymbuf on 2006-06-21 14:52:30 +0000
 1.8.42.1  08-Jan-2008  bouyer Sync with HEAD
 1.8.34.1  18-Feb-2008  mjf Sync with HEAD.
 1.8.28.1  09-Jan-2008  matt sync with HEAD
 1.9.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.10.4.2  11-Mar-2010  yamt sync with head
 1.10.4.1  16-May-2008  yamt sync with head.
 1.10.2.1  18-May-2008  yamt sync with head.
 1.12.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.13.12.2  27-Aug-2011  jym Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.
 1.13.12.1  01-Nov-2009  jym Sync with HEAD.
 1.15.68.1  21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.16.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed