Home | History | Annotate | Download | only in sbus
History log of /src/sys/dev/sbus/stp4020.c
RevisionDateAuthorComments
 1.73  24-Dec-2022  andvar s/reqest/request/, s/requst/request/ and s/reuqest/request/ in comments.
 1.72  04-May-2022  andvar fix various typos in comments and log messages.
 1.71  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.70  24-Apr-2021  thorpej branches: 1.70.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.69  01-Dec-2015  martin branches: 1.69.34;
Remove some diagnostic/debug messages.
 1.68  04-Oct-2015  joerg Drop unused (inline) function.
 1.67  27-Oct-2012  chs branches: 1.67.14;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.66  26-Jul-2011  dyoung branches: 1.66.2; 1.66.12;
Don't set the iobase and iosize members of pcmciabus_attach_args because
they're not used in any meaningful way.
 1.65  18-Jul-2011  mrg convert the remaining dev/sbus drivers to CFATTACH_DECL_NEW, cfdata_t
and device_t, including the pci frontend and backend for en(4).
 1.64  19-Sep-2009  tsutsui u_intNN_t -> uintNN_t
 1.63  18-Sep-2009  tsutsui - use device_private(), proper types and variables for device_t/softc
- remove unnecessary casts against void pointer

XXX: many inconsistent use of aprint_*(9) and printf(9)
 1.62  17-Sep-2009  tsutsui Remove struct sbusdev and related functions sbus_establish() and sbusreset().
They are derived from 4.4BSD/sparc and have been there since initial import
of NetBSD/sparc in 1993, but the struct sbusdev is almost unused for years,
nothing calls sbusreset(), and all (*sd->sd_reset)() functions look bogus.

Suggested by mrg@ and martin@, and tested on SS1+ and SS20.
 1.61  12-May-2009  cegger struct device * -> device_t, no functional changes intended.
 1.60  12-May-2009  cegger struct cfdata * -> cfdata_t, no functional changes intended.
 1.59  16-Mar-2009  dsl ANSIfy functions with function-pointer arguments
 1.58  14-Mar-2009  dsl ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.
 1.57  14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.56  16-Dec-2008  christos branches: 1.56.2;
replace bitmask_snprintf(9) with snprintb(3)
 1.55  28-Apr-2008  martin branches: 1.55.8;
Remove clause 3 and 4 from TNF licenses
 1.54  05-Apr-2008  cegger branches: 1.54.2; 1.54.4;
use aprint_*_dev and device_xname
 1.53  06-Jan-2008  martin branches: 1.53.6;
With the new IPL world, things are easier for us: if we can get the
nell hardware interrupt handler run at IPL_VM, we can call the socket
drivers interrupt handler directly.
This is always possible on sparc64, but on sparc we might have to fall
back to the old softint bounce. Since this uses arbitrary IPLs, we
can not use the new softint_* for this - we'll have to use the old
sparc_softintr_* functions.
 1.52  19-Oct-2007  ad branches: 1.52.2; 1.52.8;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.51  08-Oct-2007  ad branches: 1.51.2;
Use the softint API.
 1.50  09-Jul-2007  ad branches: 1.50.6; 1.50.8; 1.50.10;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.49  11-Dec-2006  jdc branches: 1.49.6; 1.49.8;
Add an explicit NULL for the card_detect function (that we don't have/need)
in struct pcmcia_chip_functions {}.
This now compiles again (adding -Wextra exposed this).

OK martin@.
 1.48  29-Mar-2006  thorpej branches: 1.48.8; 1.48.10; 1.48.12;
Use device_cfdata().
 1.47  24-Dec-2005  perry branches: 1.47.4; 1.47.6; 1.47.8; 1.47.10; 1.47.12;
__inline__ -> inline
 1.46  10-Nov-2005  martin Use mstohz() for timeout calculations.
Avoid local stack addresses as tsleep identifiers.
 1.45  05-Nov-2005  martin Rename the wait channels (one was a copy&pasto, the other much too long)
 1.44  01-Jun-2005  jdc branches: 1.44.2;
Rename "delay" variable to avoid shadowing the "delay" from param.h.
 1.43  27-Feb-2005  perry nuke trailing whitespace
 1.42  04-Feb-2005  perry de-__P
 1.41  11-Aug-2004  mycroft branches: 1.41.4; 1.41.6;
Clear IOIE in settype(), too. Not that we currently change modes without
powering down the socket, but...
 1.40  11-Aug-2004  mycroft Clear some more ICR0 bits on socket enable/disable.
 1.39  11-Aug-2004  mycroft Add a settype() function.
XXX Note that I haven't even compiled this, but any problems are likely to be
more straightforward than crashing with a null pointer dereference.
 1.38  05-Jul-2004  pk Use bus_space_tag_alloc(). Remove unused `sc_bustag' from softc.
 1.37  05-Jul-2004  martin Adapt to new (non optional) bus space on sparc.
 1.36  18-May-2004  martin Handle STP4020_ISR0_SCINT (status change interrupt posted) - by ignoring
it.
 1.35  23-Dec-2003  martin branches: 1.35.2;
Only ACK pending interrupts (instead of all possible). Log interrupts we
probably should have handled but didn't. Minor cleanup.
 1.34  07-Jan-2003  martin branches: 1.34.2;
Add SUN4U magic to make nell work without things like WI_AT_BIGENDIAN_HACK.

XXX - need to move this (as well as the equivalent sparc stuff added
recently) outa here into sbus_machdep or something. We should not need
to know details of the actual bus_space implementation here.
 1.33  03-Jan-2003  martin Separate the sbus bus_space_tag_t used for access to nell hardware from
the self constructed little endian pcmcia bus_space_tag_t used for the
client drivers.
 1.32  03-Jan-2003  mrg part one of bus_space(9) fixes to enable bus spaces to override the
bus_space_{read,write}_[1248]() functions, which will allow 16-bit
PCMCIA support to work without additional hacks in MI drivers.
this option is not enabled yet.
 1.31  02-Jan-2003  martin Call interrupt handlers from a soft interrupt to decouple them from the
(sometimes excessive) SPL assigned by the firmware to the sbus interrupt.
Protect access to hardware by splhigh().
 1.30  01-Jan-2003  thorpej Use aprint_normal() in cfprint routines.
 1.29  10-Dec-2002  pk Remove the `flags' argument from bus_intr_establish().
 1.28  10-Oct-2002  martin Only use one interrupt handler for both status changes and pcmcia IO
intterupts. No more races between the two interrupt handlers, without any
locking, and the driver becomes a bit simpler too.

Use the last bit of the config flags to select between the first and the
second sbus interrupt level the firmware has assigned to us.
 1.27  02-Oct-2002  thorpej Add trailing ; to CFATTACH_DECL.
 1.26  30-Sep-2002  thorpej Use CFATTACH_DECL().
 1.25  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.24  04-Sep-2002  martin Adapt to recent sbusvar.h changes.

Use a slightly less conservative timing configuration.
 1.23  01-Jun-2002  lukem SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups
 1.22  25-Mar-2002  martin branches: 1.22.2; 1.22.4;
Remove dummy_splraise() - it is not needed according to Paul Kranenburg.
We may revisit this once a general interrupt queuing mechanism is
available and we can avoid calling the pcmcia cards interrupt handler at
an exsessive IPL.
 1.21  20-Mar-2002  eeh Get rid of unnecessary BUS_SPACE_MAP_LINEAR.
 1.20  11-Mar-2002  pk Get rid of `bus_type_t' and use BUS_ADDR() (in sbus_bus_map()) to construct
a `bus_addr_t' to pass on to bus_space_map().

Drop `va' argument from sbus_bus_map(); it should not be used by MI Sbus
drivers.
 1.19  10-Mar-2002  martin Remove another old debug message.
Return the real mapping size in *_mem_map and *_io_map.
Minor cleanup.
 1.18  08-Mar-2002  martin branches: 1.18.2;
Shuffle around some initialization code a bit.
Configure power supply on VPP1 at 5V when powering up a socket.
Get rid of stray interrupts.
Make the driver quiet for normal operation when not in debugging mode.

This makes ray0 at nell0 actually work when compiled with RAY_USE_AMEM=1.
 1.17  04-Mar-2002  simonb Don't "extern int cold;" - this is in <sys/kernel.h>.
 1.16  03-Mar-2002  martin Try to configure timing correctly.
Get rid of some ad hoc debuging printfs.
 1.15  01-Mar-2002  martin Simplify the way the hardware windows are mapped and adapt the pcmcia
chipset functions acordingly. Initialize timing registers (for now to
the slowest possible setting).

Add some debug output. XXX - clean this up.

This is not ready for prime time, but I can attach ray0 and wi0 now in my
LX.
 1.14  15-Dec-2001  soren To make dev/pcmcia work on platforms with 64-bit bus_addr_t and
32-bit bus_size_t (sparc), change the pcmcia_mem_map(9) offsetp
argument to bus_size_t as it is used as a bus_space offset.
 1.13  15-Nov-2001  lukem don't need <sys/types.h> when including <sys/param.h>
 1.12  13-Nov-2001  lukem add RCSIDs
 1.11  09-Jul-2000  pk branches: 1.11.2; 1.11.4;
Add a `device class' interrupt level argument (from machine/intr.h)
to bus_interrupt_establish().

It's currently only used in sparc64/dev/psycho.c to assign a CPU interrupt
level to devices in PCI slots.
 1.10  22-Feb-2000  pk branches: 1.10.4;
Simplify the attach routine a bit.
 1.9  22-Feb-2000  pk Fix some off-by-one errors; patch from Jonathan O'Brien.
 1.8  13-Jan-2000  joda (stp4020_chip_mem_map): explicitly don't handle 8-bit memory
 1.7  21-Nov-1999  pk Check presence of Sbus interrupt properties before using them.
Only one case is known to trigger this omission: a Sparc Classic
configured as X terminal.
 1.6  05-Nov-1999  pk Fix some diagnostic output with a patch from Jonathan O'Brien.
 1.5  06-Jul-1999  thorpej branches: 1.5.2; 1.5.4; 1.5.8;
Make the kthread API a bit more friendly to loadable kernel modules.
 1.4  29-Mar-1999  pk branches: 1.4.4;
Initialize automatics in stp4020print(); noticed by Jonathan O'Brien.
 1.3  27-Feb-1999  pk Fix the bus print function.
 1.2  27-Feb-1999  pk Our device name differs from the PROMs node name.
 1.1  22-Nov-1998  pk The beginnings of a driver for the Sbus <=> PCMCIA bridge chipset STP4020.
 1.4.4.1  02-Aug-1999  thorpej Update from trunk.
 1.5.8.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.5.4.1  15-Nov-1999  fvdl Sync with -current
 1.5.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.10.4.1  19-Jul-2000  mrg pull up sparc/sparc64 bus_intr_establish() changes, necessary for sparc64
(originally done by pk, approved by thorpej):

>Add a `device class' interrupt level argument (from machine/intr.h)
>to bus_interrupt_establish().
>
>It's currently only used in sparc64/dev/psycho.c to assign a CPU interrupt
>level to devices in PCI slots.
 1.11.4.4  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.11.4.3  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.11.4.2  16-Mar-2002  jdolecek Catch up with -current.
 1.11.4.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.11.2.10  07-Jan-2003  martin Catch up to -current.
 1.11.2.9  03-Jan-2003  thorpej Sync with HEAD (again).
 1.11.2.8  03-Jan-2003  thorpej Sync with HEAD.
 1.11.2.7  11-Dec-2002  thorpej Sync with HEAD.
 1.11.2.6  18-Oct-2002  nathanw Catch up to -current.
 1.11.2.5  17-Sep-2002  nathanw Catch up to -current.
 1.11.2.4  20-Jun-2002  nathanw Catch up to -current.
 1.11.2.3  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.11.2.2  08-Jan-2002  nathanw Catch up to -current.
 1.11.2.1  14-Nov-2001  nathanw Catch up to -current.
 1.18.2.1  17-Mar-2002  thorpej IPL_IMP -> IPL_VM
 1.22.4.1  19-Jun-2003  msaitoh Apply patch (requested by martin in ticket #1319):
Make it compilable.
 1.22.2.1  20-Jun-2002  gehenna catch up with -current.
 1.34.2.8  11-Dec-2005  christos Sync with head.
 1.34.2.7  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.34.2.6  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.34.2.5  04-Feb-2005  skrll Sync with HEAD.
 1.34.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.34.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.34.2.2  12-Aug-2004  skrll Sync with HEAD.
 1.34.2.1  03-Aug-2004  skrll Sync with HEAD
 1.35.2.1  20-May-2004  tron Pull up revision 1.36 (requested by martin in ticket #352):
Handle STP4020_ISR0_SCINT (status change interrupt posted) - by ignoring
it.
 1.41.6.2  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.41.6.1  12-Feb-2005  yamt sync with head.
 1.41.4.1  29-Apr-2005  kent sync with -current
 1.44.2.5  21-Jan-2008  yamt sync with head
 1.44.2.4  27-Oct-2007  yamt sync with head.
 1.44.2.3  03-Sep-2007  yamt sync with head.
 1.44.2.2  30-Dec-2006  yamt sync with head.
 1.44.2.1  21-Jun-2006  yamt sync with head.
 1.47.12.1  31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.47.10.1  19-Apr-2006  elad sync with head.
 1.47.8.1  01-Apr-2006  yamt sync with head.
 1.47.6.1  22-Apr-2006  simonb Sync with head.
 1.47.4.1  09-Sep-2006  rpaulo sync with head
 1.48.12.1  12-Dec-2006  tron Pull up following revision(s) (requested by jdc in ticket #270):
sys/dev/sbus/stp4020.c: revision 1.49
Add an explicit NULL for the card_detect function (that we don't have/need)
in struct pcmcia_chip_functions {}.
This now compiles again (adding -Wextra exposed this).
OK martin@.
 1.48.10.1  18-Dec-2006  yamt sync with head.
 1.48.8.1  12-Jan-2007  ad Sync with head.
 1.49.8.1  11-Jul-2007  mjf Sync with head.
 1.49.6.5  23-Oct-2007  ad Sync with head.
 1.49.6.4  15-Jul-2007  ad Sync with head.
 1.49.6.3  15-Jul-2007  ad Sync with head.
 1.49.6.2  17-Jun-2007  ad - Increase the number of thread priorities from 128 to 256. How the space
is set up is to be revisited.
- Implement soft interrupts as kernel threads. A generic implementation
is provided, with hooks for fast-path MD code that can run the interrupt
threads over the top of other threads executing in the kernel.
- Split vnode::v_flag into three fields, depending on how the flag is
locked (by the interlock, by the vnode lock, by the file system).
- Miscellaneous locking fixes and improvements.
 1.49.6.1  13-May-2007  ad - Pass the error number and residual count to biodone(), and let it handle
setting error indicators. Prepare to eliminate B_ERROR.
- Add a flag argument to brelse() to be set into the buf's flags, instead
of doing it directly. Typically used to set B_INVAL.
- Add a "struct cpu_info *" argument to kthread_create(), to be used to
create bound threads. Change "bool mpsafe" to "int flags".
- Allow exit of LWPs in the IDL state when (l != curlwp).
- More locking fixes & conversion to the new API.
 1.50.10.1  14-Oct-2007  yamt sync with head.
 1.50.8.2  09-Jan-2008  matt sync with HEAD
 1.50.8.1  06-Nov-2007  matt sync with HEAD
 1.50.6.1  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.51.2.1  25-Oct-2007  bouyer Sync with HEAD.
 1.52.8.1  08-Jan-2008  bouyer Sync with HEAD
 1.52.2.1  18-Feb-2008  mjf Sync with HEAD.
 1.53.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.53.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.54.4.4  11-Mar-2010  yamt sync with head
 1.54.4.3  16-May-2009  yamt sync with head
 1.54.4.2  04-May-2009  yamt sync with head.
 1.54.4.1  16-May-2008  yamt sync with head.
 1.54.2.1  18-May-2008  yamt sync with head.
 1.55.8.2  28-Apr-2009  skrll Sync with HEAD.
 1.55.8.1  19-Jan-2009  skrll Sync with HEAD.
 1.56.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.66.12.2  03-Dec-2017  jdolecek update from HEAD
 1.66.12.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.66.2.1  30-Oct-2012  yamt sync with head
 1.67.14.1  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.69.34.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.70.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed