Commit Graph

136 Commits

Author SHA1 Message Date
marcel
2e6099f494 Fix interrupt handling. It started off broken and grew worse over time.
The rewrite of the interrupt handler includes:
o   loop until all pending interrupts are handled. This closes a
    race condition.
o   count the number of interrupt sources we handled so that we can
    properly return FILTER_HANDLED or FILTER_STRAY when we break out
    of the loop.
o   When matching the interrupt source to the devices that have that
    source pending, check only from the set of devices we found to
    have a pending interrupt.

PR:		kern/140947
MFC after:	3 days
2009-12-11 03:08:07 +00:00
marcel
c61e7af92e Add support for the NetMos NM9865 family of Serial/Parallel ports.
Obtained from:	NetMos MCS9865 v1.0.0.1 driver
MFC after:	3 days
2009-12-07 20:05:02 +00:00
np
5bbf1e2151 Make puc(4) aware of this 2 port serial card based on NetMos 9835:
puc0@pci0:4:1:0:       class=0x070002 card=0x00021000 chip=0x98359710 rev=0x01 hdr=0x00

Reviewed by:	marcel@
Approved by:	gnn (mentor)
2009-06-20 00:04:48 +00:00
rwatson
d6cef153cd Add support for the four PUC serial interfaces found on IBM SurePOS 300
series POS terminals.

MFC after:	3 days
Submitted by:	Marc Balmer <marc at msys.ch>
2009-06-02 09:58:17 +00:00
imp
7cf1a35509 remove now-redunant cardbus attachment lines. 2009-03-09 13:25:34 +00:00
jhb
dc03a05b16 Add support for the single-port NetMos NM9835 serial adapter. The puc(4)
entry is a specific entry to override the generic NetMos entry so that
puc(4) will leave this device alone and let uart(4) claim it.

Submitted by:	Navdeep Parhar  nparhar @ gmail
Reviewed by:	marcel
MFC after:	1 week
2009-03-05 16:43:33 +00:00
kevlo
b600a85653 Add support for the Sunix SUN1889-based dual parallel port card.
PR: kern/128219
Submitted by: Thinker K.F. Li <thinker at branda dot to>
2009-02-12 10:39:19 +00:00
stas
5b66cc0d53 - Add support for Moxa Technologies CP-168EL/PCIe card.
Submitted by:	dmarck
MFC after:	1 week
2009-01-27 09:38:44 +00:00
rik
042c879619 Add support for the Oxford OX16PCI958-based card.
Note, that the patch provided with this card for the Linux states that
the card uses DEFAULT_RCLK * 2, while in fact it is '* 10'.  So probably
we should also use the subdevice/subvendord here. For now just ignore
that fact.

PR:		kern/129665
Submitted by:	bsam
Obtained from:	united efforst with bsam
2008-12-27 15:22:22 +00:00
des
47259920d5 Add an entry for the "SIIG Cyber 4 PCI 16550", which is a four-port card
based on the OX16PCI954 chip with a non-standard clock.

MFC after:	3 days
2008-10-25 10:55:49 +00:00
des
b0c31e1c93 Revert r179409; it breaks all OX16PCI954-based cards except the SIIG 4.
MFC after:	3 days
2008-10-13 12:28:33 +00:00
thompsa
87939ee394 Add the Decision Computer Inc, PCCOM 8-port serial card.
PR:		kern/69730
Submitted by:	Darrin Smith
2008-08-22 00:13:17 +00:00
thompsa
9bc6bc58a2 Add the VScom PCI-100L card.
PR:		kern/72352
Submitted by:	Thomas Nystrom
2008-08-22 00:12:08 +00:00
thompsa
a6ffa54b6f Add the Avlab Technology PCI IO 4S-850 4 port serial card.
PR:		kern/110797
Submitted by:	Trevor Roydhouse
2008-08-21 23:22:32 +00:00
mckusick
2ef107420e The SIIG 4 port serial card based on the Oxford OX16PCI954 is
clocked at 10x normal speed. That is, when you set it for 9600
baud, it actually does 96000 baud. In order to make it plug and
play with other serial ports, it has to have its clock rate
reduced by a factor of 10.

Discussed with: Marcel Moolenaar
MFC after:	2 weeks
2008-05-29 07:15:52 +00:00
marcel
0e99128934 Fix RID calculation. The RID is really the BAR for PCI cards,
so the index needs to be translated into an offset. While we
did add the offset (0x10), we forgot to account for the width.

Tested by: Thomas Vogt
MFC after: 3 days
2008-05-16 14:57:48 +00:00
maxim
455ab3c71b o Add Moxa Technologies CP-104EL PCI Express 4 port Serial card.
PR:		kern/119515
Submitted by:	Gavin Stone-Tolcher
MFC after:	1 month
2008-01-12 19:14:29 +00:00
des
62062f6473 Rewrite puc_pci_match() to handle non-trivial cases correctly.
MFC after:	1 week
2007-10-13 12:14:20 +00:00
peter
33fc7010cd Calculate the correct PCI BAR for the Timedia based serial cards. The
Linux equivalent gives BAR offsets relative to the implied base of 0x10.
Our PUC_CFG_GET_RID functions have to add the base offset themselves.
2007-06-07 06:28:48 +00:00
piso
a500547688 -axe p_ih from struct puc_port cause it was useless
-correctly check for filter only handler

Reviewed by: marcel
Tested by: marcel
2007-06-06 22:17:01 +00:00
piso
6a2ffa86e5 o break newbus api: add a new argument of type driver_filter_t to
bus_setup_intr()

o add an int return code to all fast handlers

o retire INTR_FAST/IH_FAST

For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current

Reviewed by: many
Approved by: re@
2007-02-23 12:19:07 +00:00
marcel
b288558c95 Add SIIG 4 port serial card based on the Oxford OX16PCI954. 2006-09-04 18:27:14 +00:00
obrien
e8d45535f3 Fix building with GCC 4.2: ensure types are defined before refering to them. 2006-06-29 16:27:19 +00:00
imp
6e19662308 Need machine/bus.h here too 2006-06-12 19:22:44 +00:00
marcel
193a6144b9 Rewrite of puc(4). Significant changes are:
o  Properly use rman(9) to manage resources. This eliminates the
   need to puc-specific hacks to rman. It also allows devinfo(8)
   to be used to find out the specific assignment of resources to
   serial/parallel ports.
o  Compress the PCI device "database" by optimizing for the common
   case and to use a procedural interface to handle the exceptions.
   The procedural interface also generalizes the need to setup the
   hardware (program chipsets, program clock frequencies).
o  Eliminate the need for PUC_FASTINTR. Serdev devices are fast by
   default and non-serdev devices are handled by the bus.
o  Use the serdev I/F to collect interrupt status and to handle
   interrupts across ports in priority order.
o  Sync the PCI device configuration to include devices found in
   NetBSD and not yet merged to FreeBSD.
o  Add support for Quatech 2, 4 and 8 port UARTs.
o  Add support for a couple dozen Timedia serial cards as found
   in Linux.
2006-04-28 21:21:53 +00:00
marcel
54a1f381bf When we attach to either a SAB82532 or a Z8530, print a notice
saying that scc(4) should be configured into the kernel. This
helps people to migrate away from puc(4) for these devices.
2006-03-30 18:43:03 +00:00
marcel
1e73c990f4 MFp4:
Return BUS_PROBE_LOW_PRIORITY for a successful probe. This is in
preparation of the introduction of scc(4), which is going to handle
SCCs in the near future.
2006-02-24 02:06:57 +00:00
jhb
d4a7c7535c Use bus_setup_intr() rather than invoking BUS_SETUP_INTR() directly so that
puc still prints out [FAST] on Peter's box.
2006-02-22 17:19:10 +00:00
imp
db662ee84c Careful measurement of the ST Labs card shows that the pulse width of
transmitted bits was between 8.6180us and 8.6200us when we used a RCLK
of 16.500MHz.  This is a little low (should be 8.6805us).  This error
is exactly the error one would expect if it actually had a 16.384MHz
watch oscillator (as suggested by garrett) instead of using the PCI
RCLK.  Assume that the pci clock therefore wasn't really used, but
instead the cheap 16.384MH watch quartz oscillator.  This gives bits
in the 8.6800us to 8.6810us ranage, which matches theoretical.

Submitted by: garrett
2005-12-08 22:29:42 +00:00
imp
bf26ea2474 The Oxford 16C950 based CardBus Serial device that I was given some
time ago appears to be based not on the typical 1.8432MHz clock, or
the other more typical multiple of 8 of this (14.7456MHz), but instead
it appears to be 1/2 the PCI clock rate or 16.50000MHz.  I'm not 100%
sure that this is right, but since I did the original entry, I'm going
to go ahead and modify it.  With the 14.7456MHz value, I was getting
bits that were ~7.3us instead of ~8.6us like they are supposed to be.

My measuring gear for today is a stupid handheld scope with two
signficant digits.  So I don't know if it is 33.000000/2 MHz or some
other value close to 16.5MHz, but 16.5MHz works well enough for me to
use a couple of different devices at 115200 baud, and is a nice even
multiple of a well known clock frequency...
2005-12-05 23:30:28 +00:00
jhb
80adaaedab Don't enable PUC_FASTINTR by default in the source. Instead, enable it
via the DEFAULTS kernel configs.  This allows folks to turn it that option
off in the kernel configs if desired without having to hack the source.
This is especially useful since PUC_FASTINTR hangs the kernel boot on my
ultra60 which has two uart(4) devices hung off of a puc(4) device.

I did not enable PUC_FASTINTR by default on powerpc since powerpc does not
currently allow sharing of INTR_FAST with non-INTR_FAST like the other
archs.
2005-11-21 20:22:35 +00:00
rodrigc
02881cfb02 Eliminate tinderbox errors. 2005-11-07 13:10:45 +00:00
phk
f245873d1b Avoid trouble with PUC_FASTINTR if it is already defined. 2005-11-06 15:55:45 +00:00
phk
29221b42d9 Now that fast interrupts can be shared we can use them in puc. 2005-11-05 21:04:53 +00:00
phk
2dcc1881bd Add yet another entry to the list. 2005-11-05 21:04:26 +00:00
phk
48a3daa37c puc(4) does strange things to resources in order to fool the
subdrivers to hook up.

It should probably be rewritten to implement a simple bus to which
the sub drivers attach using some kind of hint.

Until then, provide a couple of crutch functions with big warning
signs so it can survive the recent changes to struct resource.
2005-09-28 18:06:25 +00:00
phk
1a9cbea53c __RMAN_RESOURCE_VISIBLE not needed. 2005-09-25 20:21:14 +00:00
marius
5b05eff84f Recognize the SAB82532 in USIII machines. 2005-08-07 13:37:25 +00:00
marius
ba798e730c Account for ebus(4) defaulting to SYS_RES_MEMORY for memory resources
since ebus.c rev. 1.22.
2005-06-04 20:29:28 +00:00
imp
620c981ecd Sort Oxford Semi entires. Add entry for OXCB950, a PCI/CardBus
16C950.  Adding it here doesn't unlock any of the cool 16C950 features
(like the 128 byte fifo, the different prescalor, etc), but it does
seem to get it working for me in light testing.

Card Provided by: Ihsan Dogan
2005-04-22 07:49:35 +00:00
imp
01223e02a3 Use BUS_PROBE_DEFAULT for pci probe return value 2005-03-05 18:10:49 +00:00
marius
d730e7dc0a - sparc64/fhc/fhc.c:
Change fhc(4) to use IRQ numbers instead of RIDs for allocating the
  IRQs of children. This works similar to e.g. sbus(4), i.e. add the
  IRQ resources as fully specified to the resource lists of the children,
  allocate them like normal. When establishing the interrupt search the
  interrupt maps of the children for a matching INO to determine which
  map we need to write the fully specified interrupt number to and to
  enable the mapping (before the RID was used to indicate which interrupt
  map to use).

- dev/puc/puc.c:
  Revert rev. 1.38, with the above change fhc(4) no longer needs special
  treatment for allocating IRQs.

Thanks to:	joerg for providing access to an E3500
2005-03-04 22:23:21 +00:00
marius
69bd6acc42 Declare the sbus(4) front-end of puc(4) also for fhc(4), allowing
uart(4) to support the Zilog 8530 SCCs which hang off of a FireHose
bus on Sun E4000/E5000 class machines.
Beside the fact that a puc_fhc.c would just be a copy of puc_sbus.c
with s,sbus,fhc,g the reason why the declaration for fhc(4) was
sticked into puc_sbus.c is that both of these front-ends for puc(4)
will go away once there is a scc(4).

Discussed with:	marcel
Tested by:	hrs, kris
MFC after:	3 days
2005-02-26 00:25:43 +00:00
marius
5a761ed766 Add a stopgap allowing puc(4) to allocate IRQs on fhc(4). Given that
both a scc(4) is under way and fhc(4) will be change to use INOs this
shouldn't stay in HEAD for too long but we need a MFC-able solution
for FreeBSD 5.4.

Discussed with:	marcel
Tested by:	hrs, kris
MFC after:	3 days
2005-02-26 00:22:52 +00:00
marius
603e5e6d66 Remove duplicate FBSDID. 2005-02-26 00:21:25 +00:00
sam
02a0a96859 fail gracefully rather than using an invalid array index if unable
to allocate a bar; it's unclear whether this can happen in practice

Noticed by:	Coverity Prevent analysis tool
Discussed with:	marcel
2005-02-25 19:47:18 +00:00
wilko
df740a4ac6 add support for NetMos NM9805 1284 Printer port
Submitted by: Willy Offermans <W.K.Offermans@TUe.nl>

MFC after: 2 weeks
2005-02-09 18:38:28 +00:00
marcel
05611a581a Revert rev. 1.5.
It should be safe to attach to all Z8530 controllers again. In fact,
the keyboard works on Ultra 2 machines.

MFC after: 5 days
2005-01-31 04:25:48 +00:00
bms
7a7771f4fb Add PCI ID for Dell RAC IV/ERA Virtual UART (PowerEdge 1850).
Trim name of existing Dell RAC devices. Trim comments.

With help from:	dpk at dpk dot net
MFC after:	1 week
2005-01-27 01:17:32 +00:00
bms
6b74ea5df0 Add device description for the Dell Remote Access Card (DRAC) III and IV
virtual COM port. This makes the use of the Dell OpenManage tools on FreeBSD
considerably easier, and is based on Chuck Cranor's original patch for 4.6.

Reviewed by:	imp
Tested by:	dpk at dpk dot net
MFC after:	1 week
2005-01-20 15:40:50 +00:00