Commit Graph

302 Commits

Author SHA1 Message Date
gehenna 77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
martin a9cd647f4d Adapt to recent sbusvar.h changes.
Use a slightly less conservative timing configuration.
2002-09-04 16:17:52 +00:00
martin e7856d0f2a Adapt to sbusvar.h changes. 2002-09-04 16:12:23 +00:00
thorpej 90817e313c Use the structures defined in bsd_openprom.h for "reg", "range",
and "intr" properties, rather than having identical-except-for-names
sbus_* and iommu_* versions.
2002-08-23 02:53:10 +00:00
soren 5db905460e CG3 on at least the Classic doesn't have a "model" name, so fake one. 2002-08-03 00:59:00 +00:00
mrg ec69f2b1fd fix a bug introduced in rev 1.19:
- finish bus_space-ification of cs4231_sbus_trigger_input().

this stops recording on the sbus cs4231 from crashing.
2002-07-16 11:48:45 +00:00
lukem 06de426449 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
2002-06-01 23:50:52 +00:00
wiz f7d76b1062 bcmp -> memcmp. 2002-05-22 16:03:14 +00:00
mjacob 7aac86133e Pointy hat to me on the last delta. 2002-05-18 00:48:11 +00:00
mjacob a14da6673f Replicate change that Matt Thomas made in isp_pci- if we get ENOMEM/EAGAIN
in bus_dmamap_load, return CMD_EAGAIN rather than just make the command dead.
2002-05-17 19:06:24 +00:00
pk 082991d03a cs4231_sbus_regdump(): add missing ')' 2002-03-27 16:03:52 +00:00
darrenr 9074b14439 Merge in the patch (PR kern/15963) to provide unaccelerated 24bit support
for the S24.
2002-03-27 10:14:17 +00:00
martin 642b1a7163 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.
2002-03-25 09:02:54 +00:00
eeh 85c03d9775 Properly bus_space_*=ify this so it uses accessors. 2002-03-21 00:25:41 +00:00
eeh 943373dde4 Use bus_space_vaddr(). 2002-03-21 00:18:36 +00:00
eeh 86ff330657 Fixup attachment code to use sbus_promaddr_to_handle() and not specify
BUS_SPACE_MAP_LINEAR.
2002-03-21 00:16:15 +00:00
eeh 87eac0acc3 Use bus_space_vaddr(). 2002-03-20 20:41:35 +00:00
eeh 686c857e16 Get rid of unnecessary BUS_SPACE_MAP_LINEAR. 2002-03-20 20:39:15 +00:00
eeh fbce8217dd Oops. Missing semicolon. 2002-03-20 19:32:42 +00:00
eeh 8ccad96d54 Add sbus_promaddr_to_handle() to convert a prom address to a bus_space_handle_t. 2002-03-20 18:39:44 +00:00
eeh 8ea2c88ec2 Clean up bus space a bit. XXX is sc_buffer ever actually used after it's
mapped in?
2002-03-20 17:59:16 +00:00
eeh ddbdd7fa41 Don't use BUS_SPACE_MAP_LINEAR if you don't need to. 2002-03-20 17:57:33 +00:00
eeh ef4ff79f61 Use bus_space_vaddr() correctly. (XXX do we really need this?) 2002-03-20 17:52:41 +00:00
eeh e0866470d8 Use bus_space_vaddr() correctly. Ugh. 2002-03-20 17:34:23 +00:00
atatat 31144d9976 Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command".  ERESTART is -1, which can lead to
confusion.  ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4.  No ioctl code should now return -1 anywhere.  The
ioctl() system call is now properly restartable.
2002-03-17 19:40:26 +00:00
eeh 5f84db4b34 Get rid of bus_type_t. 2002-03-15 07:00:34 +00:00
uwe a05702eaac Rework the driver to add EBus DMA support and improve APC DMA support.
Audio-related stuff is left almost intact.

* support audiocs at ebus playback and capture
    tested on krups and u5 (thanks, martin)
* make first attempt at supporting audiocs at sbus capture
* nb: full-duplex is not tested
* while here, fix CSAUDIO_MONITOR_MUTE to be of CSAUDIO_MONITOR_CLASS
    i.e. outputs.monitor.mute -> monitor.monitor.mute

Ok by pk, eeh.
2002-03-12 04:48:28 +00:00
pk f61bdee8e7 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.
2002-03-11 16:00:55 +00:00
martin e41836739f Remove another old debug message.
Return the real mapping size in *_mem_map and *_io_map.
Minor cleanup.
2002-03-10 16:18:44 +00:00
martin dfbd0bc7b8 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.
2002-03-08 21:33:43 +00:00
frueauf 089f361f5b Make this work after it got broken a year ago in r1.15 (pasto?):
In qeattach() sc->sc_rb.rb_dmabase needs to be set after the buffer got
loaded via bus_dmamem_map(), not before.

Fixes my own pr kern/15817.
2002-03-06 19:10:58 +00:00
simonb 64c7743a05 Don't "extern int cold;" - this is in <sys/kernel.h>. 2002-03-04 02:19:07 +00:00
martin 42172d9f1c Try to configure timing correctly.
Get rid of some ad hoc debuging printfs.
2002-03-03 22:47:28 +00:00
martin ba6fe47ae9 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.
2002-03-01 10:02:38 +00:00
mjacob 91f80cf3fc Implement F/W crashdumps for 2200 && 2300 cards (kernel compile option).
Distinguish between 2312 and 2300 cards (they *are* different). Enable
RIO (Reduced Interrupt Operation) for the LVD cards (hey- I've seen
batched completions of the 30 commands at a time with this,....)...

If we get a Port Logout on local loop topologies, we have to force the
f/w to log back in. The easiest way (for us) to do this is to force
a LIP. This also will wake up the disk that probably just had a f/w crash.

Implement mailbox 'continuations'- this allows interrupts to re-drive
a mailbox command if it's one that just essentially repeats the previous
mailbox command (e.g., f/w download). This saves a boatload of sleep/wakeup
twitches.

If we're not a 2300 and we're about to return with a 'bogus interrupt'- check
the semaphore register to be non-zero at all and outgoing mailbox 0- this
seems to be where some of the lost ISP1080 commands came from.
2002-02-21 22:32:40 +00:00
darrenr 1ff5e232ba add missing #include for SUN4 options 2002-02-03 05:53:28 +00:00
pk 6c51c2d3f4 Support for the ` Magma 2+1HS Sp' (from mouse on port-sparc):
- add sbus node name field to board info structure
2002-01-22 17:00:47 +00:00
pk d29b3f6d0c Support for the ` Magma 2+1HS Sp' (from mouse on port-sparc):
- allow for sbus node name matching
	- get clock frequency from prom property.
2002-01-22 16:59:30 +00:00
tsutsui bcba62925f Call malloc(9) with M_ZERO flag instead of bzero() after malloc(). 2002-01-14 13:32:44 +00:00
soren 875bff0962 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.
2001-12-15 13:23:20 +00:00
mjacob 219d22404b Major restructuring for swizzling to the request queue and unswizzling from
the response queue. Instead of the ad hoc ISP_SWIZZLE_REQUEST, we now have
a complete set of inline functions in isp_inline.h. Each platform is
responsible for providing just one of a set of ISP_IOX_{GET,PUT}{8,16,32}
macros.

The reason this needs to be done is that we need to have a single set of
functions that will work correctly on multiple architectures for both little
and big endian machines. It also needs to work correctly in the case that
we have the request or response queues in memory that has to be treated
specially (e.g., have ddi_dma_sync called on it for Solaris after we update
it or before we read from it).

One thing that falls out of this is that we no longer build requests in the
request queue itself. Instead, we build the request locally (e.g., on the
stack) and then as part of the swizzling operation, copy it to the request
queue entry we've allocated. I thought long and hard about whether this was
too expensive a change to make as it in a lot of cases requires an extra
copy. On balance, the flexbility is worth it. With any luck, the entry that
we build locally stays in a processor writeback cache (after all, it's only
64 bytes) so that the cost of actually flushing it to the memory area that is
the shared queue with the PCI device is not all that expensive. We may examine
this again and try to get clever in the future to try and avoid copies.

Another change that falls out of this is that MEMORYBARRIER should be taken
a lot more seriously. The macro ISP_ADD_REQUEST does a MEMORYBARRIER on the
entry being added. But there had been many other places this had been missing.
It's now very important that it be done.

For NetBSD, it does a ddi_dmamap_sync as appropriate. This gets us out of
the explicit ddi_dmamap_sync on the whole response queue that we did for SBus
cards at each interrupt.

Set things up so that platforms that cannot have an SBus don't get a lot of
the SBus code checks (dead coded out).

Additional changes:

Fix a longstanding buglet of sorts. When we get an entry via isp_getrqentry,
the iptr value that gets returned is the value we intend to eventually plug
into the ISP registers as the entry *one past* the last one we've written-
*not* the current entry we're updating. All along we've been calling sync
functions on the wrong index value. Argh. The 'fix' here is to rename all
'iptr' variables as 'nxti' to remember that this is the 'next' pointer-
not the current pointer.

Devote a single bit to mboxbsy- and set aside bits for output mbox registers
that we need to pick up- we can have at least one command which does not
have any defined output registers (MBOX_EXECUTE_FIRMWARE).

Explicitly decode GetAllNext SNS Response back *as* a GetAllNext response.
Otherwise, we won't unswizzle it correctly.

Nuke some additional __P macros.
2001-12-14 00:13:44 +00:00
cyber d6671330e0 The prom doesn't setup the fb if its not set to console.
We shouldn't try to configure it in that case.
This will make serial console work.  completes fix to PR#14213
(Private email determined PR author was using serial console.)
2001-12-08 19:42:45 +00:00
soren a5812755ac Pass sbus addresses to sbus_bus_map(), not sbus_bus_addr()'d ones. 2001-12-08 05:36:31 +00:00
wiz b4371d47f5 Replace some misuses of "then" with "than". 2001-12-04 17:56:30 +00:00
lukem 2565646230 don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
lukem 7ba10b3532 add RCSIDs 2001-11-13 06:54:32 +00:00
thorpej 0d4d2293bb Minor tidying up of the HME driver attach:
- Print nicer-looking message.
- Use bus_space_subregion() when appropriate, rather than arithmetic
  on a bus_space_handle_t.
2001-10-05 17:49:43 +00:00
pooka 8d2fa0f7b6 add cast to u_long before cast to caddr_t make these compile on sparc64 2001-10-05 14:25:15 +00:00
mrg 0cfedcb2eb frontend driver for the 16 port serial card by aurora technologies. this
doesn't quite work yet -- interrupt acknowledgement is hosed (and thus the
device keeps interrupting).  uses the newly commited cd18xx backend.
2001-10-03 04:28:41 +00:00
eeh 98ecb5b215 getprop* -> PROM_getprop* 2001-09-26 20:53:05 +00:00
eeh 766a9b8c9c Change bus_space_mmap() signature to the official one. 2001-09-24 23:49:31 +00:00
eeh 0d30ddb30a Properly initialize sc->sc_bustag and sc->sc_dmatag; 2001-09-12 20:09:53 +00:00
eeh 317da99cfe Properly initialize sc->sc_bustag. 2001-09-12 19:35:35 +00:00
pk 88dc67b3e1 The `ESC' DMA chip must be reset before we can access the esp registers. 2001-09-11 10:50:52 +00:00
mjacob 6bb9f4a949 Add support for 2 Gigabit cards (2300/2312). This necessitated a change
in how interrupts are down- the 23XX has not only a different place to check
for an interrupt, but unlike all other QLogic cards, you have to read the
status as a 32 bit word- not 16 bit words. Rather than have device specific
functions as called from the core module (in isp_intr), it makes more sense
to have the platform/bus modules do the gruntwork of splitting out the
isr, semaphore register and the first outgoing mailbox register (if needed)
*prior* to calling isp_intr (if calling isp_intr is necessary at all).
2001-09-01 07:12:23 +00:00
mjacob 48e09f672e twiddle isp_xflist calculation to match more closes isp_pci.c 2001-07-06 16:09:38 +00:00
mrg c13e3a6693 use _KERNEL_OPT 2001-05-30 11:40:35 +00:00
scw 2963ff5c58 Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
2001-05-02 10:32:08 +00:00
bouyer 937a7a3ed9 Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
  ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
  to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
  peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
  recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
  scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
  (no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
  set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
  the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
  will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
2001-04-25 17:53:04 +00:00
mjacob f13ec50e47 Clean up bus dma code for request/response queues. 2001-04-12 21:40:56 +00:00
jdolecek 745ab257dc Put back all header files defining ioctls 2001-04-11 19:07:36 +00:00
jdolecek 372e5956ef Only install headers which are actually used by our userland. This
saves about 2.2MB under /usr/include/dev/. Discussed on tech-kern@
recently.

I HOPE to get the list right. The headers I left in are ones
used for MI tools and those whose usage I discovered by grep over tree sources.
Feel free to put needed includes back in if you encounter anything which
should not be removed from lists.
2001-04-11 07:42:31 +00:00
christos 95fda43dd5 make all debugging messages conditional on sc->sc_debug. 2001-03-30 17:30:18 +00:00
petrov b0605f71d5 fas support added 2001-03-29 02:58:38 +00:00
pk 4cefebdf8d Fix fall-out from previous change: the map's DMA address is valid only
after bus_dmamap_load().
2001-03-20 15:39:20 +00:00
mjacob 272082c697 ansify code 2001-03-14 06:58:25 +00:00
thorpej c8f050a7f1 Use bus_dmamap_load(), not bus_dmamap_load_raw(), and add
BUS_DMA_STREAMING to data transfer map loads.
2001-03-08 02:21:44 +00:00
thorpej 00ddf90164 Use bus_dmamap_load(), not bus_dmamap_load_raw(). 2001-03-08 02:20:39 +00:00
mrg 7fa2fd24b4 match SUNW,qfe; PR#12301 from Rob Quinn <rquinn@sprint.net> 2001-02-28 14:52:48 +00:00
mjacob 0adf4d13bb Oh, god, make the pain stop. "Fix" this one more time- but for the next
to last time.

It turns out that in fact, sparc64 was *not* working. There is a discussion
within the tech-kern@netbsd.org mail list as of just prior to this date
that contains the details.

Suffice to say that for sparc64 we have to add back in the usage
of BUS_DMA_COHERENT again to the call to bus_dmamap_load_raw. PK
added the usage of bus_dmamap_load_raw- which agrees with the
man page description of it- but now does not match what the
original BusDma author seems to think it's supposed to do.

While we're at it, do a specific set of steps for setting up and,
if necessary, tearing down, mailbox dma mappings.
2001-02-28 05:46:46 +00:00
mjacob 0dce6b45bc this was *still* wrong 2001-02-25 01:49:18 +00:00
mjacob 9d2a3fb24d More Kudos to Izumi: fix another argument to bus_dmamap_sync 2001-02-25 01:44:02 +00:00
mjacob d5f967e27f Now that the underlying code for bus_dmamap_sync appears to do the
right thing, don't use the illegal and "just worked by chance" addition
of BUS_DMA_COHERENT to bus_dmamap_load_raw. There still is a necessity
to add to the architecture to allow one to hint that this should be
a cache coherent mapping.

Fix offset argument to be zero for flushing data tranfers. Kudos to Izumi
for spotting this.
2001-02-24 23:30:01 +00:00
mjacob e8ae80a071 Add missing BUS_DMA_COHERENT to bus_dmamap_load_raw calls for request
and response queues- this makes this work on UltraSparc now.
2001-02-23 23:57:47 +00:00
mjacob 3744fa3f33 Implement bootverbose recognition. Move interrupt registry up a bit so we can
use interrupting mailbox commands for isp_init. Set default HBA role.
Rename request/response dma maps to be more consistent with PCI version.
Enable bus_dmamap_sync on request queue- we already do this for response
queue- better do it for the request queue as well.

Checked to be working against a Sparc10.
2001-02-23 17:28:58 +00:00
thorpej 372338915a Use splnet() to block network interrupts, not splimp(). 2001-01-14 17:37:41 +00:00
mrg c5802f9f90 avoid unused variables if not RASTERCONSOLE 2001-01-07 05:41:50 +00:00
wiz c8b0b91e7e Fix pathnames in comment. 2000-12-23 01:37:57 +00:00
thorpej a64a0f8137 ALTQ'ify. 2000-12-14 07:15:45 +00:00
martin d9d7c42e0c Remove esp specific function from ddb when esp @ sbus is not included
in the kernel config. Makes compiling sbus-less kernels possible again.
2000-12-08 17:29:12 +00:00
fvdl 245940b894 Clean up warnings in 32bit compile (bus_space_handle_t is 64bit wide
but will only contain 32bit values; casting via u_long is safe)
2000-12-04 20:17:10 +00:00
fvdl e58fff48bf Avoid compile warning on sparc64 32bit. sc_buffer doesn't seem to be
used at all, this line can probably be removed.
2000-12-04 20:12:55 +00:00
eeh 2a50931a1c Turn on TAG QUEUE support and add some debug stuff. 2000-12-03 23:31:13 +00:00
thorpej b84f740be0 Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach(). 2000-11-15 01:02:11 +00:00
eeh 507aaec04c Adapt to the new line discipline scheme. 2000-11-02 00:01:44 +00:00
eeh 55fd5a2fb0 Pass along the bus frequency too, for devices that need it. 2000-11-01 06:18:45 +00:00
eeh 34ed153955 Fix warning in a debug printf. 2000-11-01 06:17:32 +00:00
eeh f9a51c7b15 Clean up a #define that doesn't belong. Oops. That's what I get for
working this late.
2000-10-31 08:06:14 +00:00
eeh 37486bb837 Get the bpp driver to work properly. 2000-10-31 06:32:06 +00:00
mjacob 0a481d850d fix SBus bursting *correctly* this time 2000-10-22 03:04:50 +00:00
mrg 0c6aa8d3ed ensure DMA mappings are not mapped streamable. fixes ethernet problems on
ultrasparc sbus class machines.  from eeh.
2000-10-20 06:08:02 +00:00
mrg 3af567c485 rework to use bus_dmamem_map() then bus_dmamem_load(), rather than
bus_dmamem_load_raw() then bus_dmamem_map().

tested on SS2 and SS5 and sbus cards.
2000-10-20 05:57:50 +00:00
mjacob cecccb23b2 quiet chatty boot messages 2000-10-17 17:39:10 +00:00
mjacob 7cc31292b3 Turn on 32 byte bursting for ISP 2000-10-16 05:13:13 +00:00
pk aa6df7169b yank error. 2000-09-12 19:13:30 +00:00
pk 17e5f7b17c Declare drivers moved here from arch/sparc. 2000-08-22 21:31:16 +00:00
pk d29f2ce630 Get tcxreg.h from the correct location. 2000-08-22 21:18:57 +00:00
pk 124d256269 Move these SBus drivers here from arch/sparc. 2000-08-20 22:27:07 +00:00
pk 5a308cf392 Split & move cgthree sbus attachment from arch/sparc. 2000-08-20 19:59:46 +00:00
pk 7857ad0b81 Move cgsix and bwtwo Sbus attach code here from arch/sparc. 2000-08-20 14:33:25 +00:00