Commit Graph

29 Commits

Author SHA1 Message Date
Joerg Wunsch
ac0797c3d1 GPIB overhaul, part : make the tnt4882 driver work with the newer
TNT5004 IC.  This involved a major rewrite of a number of things, as
this chip no longer supports the NAT7210 legacy mode but requires the
host to use the (more modern) FIFO mode.

In theory, this also ought to work on the older TNT4882C chip.  I'll
probably add this as optional support (perhaps by a device.hints flag)
later on.  By now, FIFO mode is *only* activates iff a TNT5004 chip
has been detected (where the old code didn't work at all), while
everything else is supposed to use the old code.

MFC after:	2 weeks
2010-02-01 21:21:10 +00:00
Joerg Wunsch
ce3853023f Fix breakage introduced to the tnt4882 driver in r202870. This PCI
frontend uses the same uPD7210 backend as the pcii ISA frontend, so
the backend has to cope with both situations.

Also, hide the first printf in pcii_probe (address mismatch) behind
bootverbose as the ISA bus parent tries to probe all configured ISA
devices against each driver, so a the console has been cluttered with
this message for a bunch of unrelated driver probes.

MFC after:	3 days
2010-01-23 21:33:33 +00:00
Joerg Wunsch
72821110ac Overhaul of the pcii driver:
. Properly allocate all IO space resources.  These cards scatter their
  IO addresses over a range of 0x1600 bytes, and they require an
  additional address for "special interrupt handling".

. Implement the "special interrupt handling" per the GPIB-PCIIA
  Technical Reference Manual; this was apparently not declared for the
  clone card this driver has been originally implemented for, but it
  turned out to be needed for both, an original NI brand PCII/PCIIA
  card as well as the Axiom AX5488 clone.

. Add some diagnostic messages for various resource allocation etc.
  failures during probe.

. Add some comments about the structure of the IO address space that
  is used by these cards.

MFC after:	1 day
2010-01-23 07:54:06 +00:00
Roman Divacky
68c4dfdf0c Make isa_dma functions MPSAFE by introducing its own private lock. These
functions are selfcontained (ie. they touch only isa_dma.c static variables
and hardware) so a private lock is sufficient to prevent races. This changes
only i386/amd64 while there are also isa_dma functions for ia64/sparc64.
Sparc64 are ones empty stubs and ia64 ones are unused as ia64 does not
have isa (says marcel).

This patch removes explicit locking of Giant from a few drivers (there
are some that requires this but lack ones - this patch fixes this) and
also removes the need for implicit locking of Giant from attach routines
where it's provided by newbus.

Approved by:	ed (mentor, implicit)
Reviewed by:	jhb, attilio (glanced by)
Tested by:	Giovanni Trematerra <giovanni.trematerra gmail com>
IA64 clue:	marcel
2009-11-09 20:29:10 +00:00
Ed Schouten
06d425f92e Remove the distinction between device minor and unit numbers.
Even though we got rid of device major numbers some time ago, device
drivers still need to provide unique device minor numbers to make_dev().
These numbers are only used inside the kernel. They are not related to
device major and minor numbers which are visible in devfs. These are
actually based on the inode number of the device.

It would eventually be nice to remove minor numbers entirely, but we
don't want to be too agressive here.

Because the 8-15 bits of the device number field (si_drv0) are still
reserved for the major number, there is no 1:1 mapping of the device
minor and unit numbers. Because this is now unused, remove the
restrictions on these numbers.

The MAXMAJOR definition was actually used for two purposes. It was used
to convert both the userspace and kernelspace device numbers to their
major/minor pair, which is why it is now named UMINORMASK.

minor2unit() and unit2minor() have now become useless. Both minor() and
dev2unit() now serve the same purpose. We should eventually remove some
of them, at least turning them into macro's. If devfs would become
completely minor number unaware, we could consider using si_drv0 directly,
just like si_drv1 and si_drv2.

Approved by:	philip (mentor)
2008-05-29 12:50:46 +00:00
Kris Kennaway
c637bc9203 Replace callout_init(..., 1) with callout_init(..., CALLOUT_MPSAFE) for
better grep-compliance and to standardize with the rest of the kernel.

Reviewed by:	       jhb
MFC after:	       1 week
2008-04-16 16:47:14 +00:00
Warner Losh
21ab16bd5b Catchup with filters 2007-02-23 19:34:52 +00:00
Poul-Henning Kamp
65cdc7a7c4 Don't be noisy in case of shared interrupts. 2006-03-11 15:39:22 +00:00
Poul-Henning Kamp
99425c6e7a Make resources do the right thing by design instead of accident.
Found with:   Coverity Prevent(tm)
2006-01-14 09:46:27 +00:00
Poul-Henning Kamp
6b4a241211 Use new bus_space/resource convenience functions.
Pretend the 10-bit I/O ISA addressing is not our problem.
2005-09-24 20:44:55 +00:00
Poul-Henning Kamp
aed1189d1f First cut at a driver for National Instruments PCI-GPIB hardware.
Hardware donated by:	"Greg Maciejewski" <gregm@serverpit.com>
2005-09-15 13:27:16 +00:00
Poul-Henning Kamp
f6a157fb88 Allocate unit numbers with unr, implement detach function. 2005-09-15 13:07:38 +00:00
David E. O'Brien
c11ba30c9a Remove public declarations of variables that were forgotten when they were
made static.
2005-08-10 07:10:02 +00:00
Poul-Henning Kamp
a877d4a4e9 Don't leak mutex on open failure. 2005-04-04 17:37:35 +00:00
Poul-Henning Kamp
3b3f38ed7d Add placeholder mutex argument to new_unrhdr(). 2005-03-07 11:05:47 +00:00
Poul-Henning Kamp
22a9eb5334 Always go to standby efter each call. 2005-03-06 19:43:12 +00:00
Poul-Henning Kamp
4e51c02840 Don't disable interrupts on a stray interrupt. 2005-03-06 19:42:32 +00:00
Poul-Henning Kamp
6833149f4b Check handle types.
Implement more device functions.
Make DMA optional.
2005-02-12 23:52:44 +00:00
Poul-Henning Kamp
da0e67693d Add ibcntl as alias for ibcnt
Add ibsta and start to use it.
Rename the argument structure more sensibly.
Improve timeout and error handling
2005-02-12 21:07:09 +00:00
Poul-Henning Kamp
3ee4a2a426 Split the ibfoo API into its own file.
Implement ibdma() (only affects ibrd() mode)
Implement ibeot()
2005-02-12 17:39:50 +00:00
Poul-Henning Kamp
c434197487 Fix prototype for ibeot() 2005-02-12 15:49:50 +00:00
Poul-Henning Kamp
09dbf9afd3 Make sure the last command byte makes it onto the wire. 2005-02-11 22:24:02 +00:00
Poul-Henning Kamp
a3a7ba5989 Improve EOS handling. 2005-02-11 06:57:02 +00:00
Poul-Henning Kamp
923da43e9b Statification 2005-02-10 12:08:55 +00:00
Poul-Henning Kamp
954ad216af Constify. 2005-02-09 20:56:32 +00:00
Poul-Henning Kamp
a15fbb42c3 Allocate more space for softc. Amazing my machine survived this. 2005-02-06 22:45:12 +00:00
Poul-Henning Kamp
df05d0fb93 Further elaborate the GPIB driver. We now support a minimal subset of
the ibfoo() API.
2005-02-06 15:22:23 +00:00
Poul-Henning Kamp
deb27882e8 Forgot to mark the IRQ as MPSAFE. 2005-02-01 20:34:47 +00:00
Poul-Henning Kamp
83820457eb Add a IEEE488 driver for PCIIA compatible cards.
This driver implements "unaddressed listen only mode", which is what
printers and plotters commonly do on GP-IB busses.

This means that you can capture print/plot like output from your
instruments by configuring them as necessary (good luck!) and

	cat -u /dev/gpib0l > /tmp/somefile

Since there is no way to know when no more output is comming you
will have to ctrl-C the cat process when it is done (that is why
the -u is important).
2005-02-01 16:59:23 +00:00