The following serial patches were generated versus Linux 1.1.90. They should hopefully improve support for certain Multiport serial boards, including the AST Fourport and the Boca BB-1004, BB-1008, and BB-2016 boards. In order to apply these patches, cd to /usr/src/linux (or wherever the top level of your kernel sources are, and run "patch -p0 < patches.serial". Then, recompile the kernel. You will also need setserial version 2.12 or higher, which can be found in this directory. Compile it, and the modify your rc.serial file to configure the multiport information. Configuration of the multiport information ========================================== The basic idea of how the multiport support works is that up to four ports will be sampled by the interrupt service routine. When the value of all active ports is masked against a mask and compares equally to the match value, then the interrupt service routine will exit. Otherwise, it will continue polling the serial ports on the multiport serial board. There is a safety mechanism which prevents incorrect match values from hanging the system; however, incorrect values will significantly decrease system performance. If you have entered incorrect values, you will see kernel printks (either on your console or in your kernel syslog file) stating "rs_multi loop break". Here are some sample multiport configuration values for common boards: ---------------------------------------------------------------------- AST FourPort: The AST Fourport uses a status register located at the scratch register of the fourth port; the low order four bits represent the interrupt status of the four ports, with a '0' bit meaning that the port needs to be serviced, and a '1' bit meaning that the port does not need any servicing. At I/O port address 0x1A0: setserial /dev/cua4 set_multiport port1 0x1BF match1 0xf mask1 0xf At I/O port address 0x2A0: setserial /dev/cua4 set_multiport port1 0x2BF match1 0xf mask1 0xf ---------------------------------------------------------------------- Boca BB-1004, BB-1008, BB-2016 (at port address 0x100): The Bocaboards use a status register which can be found at the scratch register location of every port. A '1' bit means that the port needs to be serviced, and a '0' bit means that no service is necessary for that port. The first port uses the least significant bit (2^0), the second port uses the 2^1 bit, and so on. For the BB-2016, there are two status registered; the first one is located at the scratch registers for the first 8 ports, and the second one is located at the scratch register of the last 8 ports. BB-1004: (at port address 0x100) setserial /dev/cua16 set_multiport port1 0x107 match1 0xf match1 0 BB-1008: (at port address 0x100) setserial /dev/cua16 set_multiport port1 0x107 match1 0xff match1 0 Boca BB-2016: (at port address 0x100) setserial /dev/cua16 set_multiport port1 0x107 match1 0xff match1 0 \ port2 0x147 match2 0xff match2 0 ---------------------------------------------------------------------- Note: be sure to configure the IRQ and port information for all of the ports first, before configuring the multiport information. This is important! The multiport information is associated with an IRQ, not with a specific port; hence, if the IRQ information for the port is not set first, the multiport configuration may be registered against the wrong IRQ.