The sio
driver provides support for NS8250-,
NS16450-, NS16550 and NS16550A-based EIA RS-232C (CCITT
V.24) communications interfaces. Several multiport
cards are supported as well. See the sio(4)
manual page for detailed technical documentation.
Contributed by Andrew Webster
<awebster@dataradio.com>
.
26 August
1995.
Here is a config snippet from a machine with
digiboard PC/8 with 16550. It has 8 modems connected
to these 8 lines, and they work just great. Do not
forget to add options "COM_MULTIPORT"
or it
will not work very well!
device sio4 at isa? port 0x100 tty flags 0xb05
device sio5 at isa? port 0x108 tty flags 0xb05
device sio6 at isa? port 0x110 tty flags 0xb05
device sio7 at isa? port 0x118 tty flags 0xb05
device sio8 at isa? port 0x120 tty flags 0xb05
device sio9 at isa? port 0x128 tty flags 0xb05
device sio10 at isa? port 0x130 tty flags 0xb05
device sio11 at isa? port 0x138 tty flags 0xb05 irq 9 vector siointr
The trick in setting this up is that the MSB of the flags represent the last SIO port, in this case 11 so flags are 0xb05.
Contributed by Don Whiteside
<whiteside@acm.org>
.
26 August
1995.
The procedures to make a Boca 16 pord board with FreeBSD are pretty straighforward, but you will need a couple things to make it work:
One important note - the actual UART chips for the Boca 16 are in the connector box, not on the internal board itself. So if you have it unplugged, probes of those ports will fail. I have never tested booting with the box unplugged and plugging it back in, and I suggest you do not either.
If you do not already have a custom kernel configuration file set up, refer to Kernel Configuration for general procedurs. The following are the specifics for the Boca 16 board and assume you are using the kernel name MYKERNEL and editing with vi.
options "COM_MULTIPORT"
to the config file.
device sio
xxx
lines are, you will need to add
16 more devices. Only the last device
includes the interrupt vector for the
board. (See the sio(4)
manual page
for detail as to why.)
The following example is for a Boca Board with an
interrupt of 3, and a base IO address 100h. The
IO address for Each port is +8 hexidecimal from
the previous port, thus the 100h, 108h, 110h...
addresses.
device sio1 at isa? port 0x100 tty flags 0x1005
device sio2 at isa? port 0x108 tty flags 0x1005
device sio3 at isa? port 0x110 tty flags 0x1005
device sio4 at isa? port 0x118 tty flags 0x1005
[...]
device sio15 at isa? port 0x170 tty flags 0x1005
device sio16 at isa? port 0x178 tty flags 0x1005 irq 3 vector siointr
The flags entry must be changed from
this example unless you are using the exact same
sio assignments. Flags are set according to
0xMYY where M indicates the
minor number of the master port (the last port on
a Boca 16) and YY indicates if FIFO is
enabled or disabled(enabled), IRQ sharing is
used(yes) and if there is an AST/4 compatible IRQ
control register(no).
In this example,
flags 0x1005
indicates that the master port is sio16. If I
added another board and assigned sio17 through
sio28, the flags for all 16 ports on
that board would be 0x1C05, where 1C
indicates the minor number of the master port.
Do not change the 05 setting.
sio1 at 0x100-0x107 flags 0x1005 on isa
sio1: type 16550A (multiport)
sio2 at 0x108-0x10f flags 0x1005 on isa
sio2: type 16550A (multiport)
sio3 at 0x110-0x117 flags 0x1005 on isa
sio3: type 16550A (multiport)
sio4 at 0x118-0x11f flags 0x1005 on isa
sio4: type 16550A (multiport)
sio5 at 0x120-0x127 flags 0x1005 on isa
sio5: type 16550A (multiport)
sio6 at 0x128-0x12f flags 0x1005 on isa
sio6: type 16550A (multiport)
sio7 at 0x130-0x137 flags 0x1005 on isa
sio7: type 16550A (multiport)
sio8 at 0x138-0x13f flags 0x1005 on isa
sio8: type 16550A (multiport)
sio9 at 0x140-0x147 flags 0x1005 on isa
sio9: type 16550A (multiport)
sio10 at 0x148-0x14f flags 0x1005 on isa
sio10: type 16550A (multiport)
sio11 at 0x150-0x157 flags 0x1005 on isa
sio11: type 16550A (multiport)
sio12 at 0x158-0x15f flags 0x1005 on isa
sio12: type 16550A (multiport)
sio13 at 0x160-0x167 flags 0x1005 on isa
sio13: type 16550A (multiport)
sio14 at 0x168-0x16f flags 0x1005 on isa
sio14: type 16550A (multiport)
sio15 at 0x170-0x177 flags 0x1005 on isa
sio15: type 16550A (multiport)
sio16 at 0x178-0x17f irq 3 flags 0x1005 on isa
sio16: type 16550A (multiport master)
If the messages go by too fast to see, dmesg
> more
will show you the boot
messages.
/dev
for the devices
must be made using the /dev/MAKEDEV
script. After becoming root:
# cd /dev
# ./MAKEDEV tty1
# ./MAKEDEV cua1
(everything in between)
# ./MAKEDEV ttyg
# ./MAKEDEV cuag
If you do not want or need callout devices for some
reason, you can dispense with making the cua*
devices.
echo at
> ttyd*
for each device you have
made. You should see the RX lights flash
for each working port.