Getting a high-speed serial port working under Linux on a Dec alpha 21164

These are the steps I used to get the high-speed serial port of my SIIG, inc PCI i/o card to run at 230K, and get my external ISDN modem to use it. Only a few things are specific to the card, and as far as I can tell, none are specific to my flavor of Linux (customized Red Hat 6.0), so other people may find them useful. The SIIG website provided me with a starting point for the Linux install, but their directions had several errors, at least for me. I have not yet gotten the high speed parallel port to be recognized under Linux, but that's not what I bought the card for, so it has low priority . . . If you get it working, let me know.

  1. Need to run their dos utility in order to set the card to high-speed serial transfer. I couldn't run it under a dos window of i386 NT or a dos window of my x86 emulating alpha NT. So I temporarily installed the card in a i386, and booted with old dos boot floppy. I then put in their supplied disk, and went to the a:\dos directory. From there, I set it to use high speed by:
    cb20xpc /com3
    cb20xsu
    
  2. Rip card out of wintel box, install back in real machine, and boot to real OS. Open the /proc/pci file, and search for 131f as vendor ID. Write down the port number (eg, 0x8000) and IRQ. I had several listed port numbers for the card, and I successfully used the first.

  3. Use setserial to set the port up for high speed access, replacing my ttyS, port and irq numbers with yours (this is a long line, make sure you get it all; it ends with 4):
       setserial /dev/ttyS3 port 0x8000 irq 18 uart 16550A baud_base 921600 spd_cust divisor 4
    
  4. Now, at least with my 3Com Impact IQ external ISDN modem, you have to configure the modem to use the fast link. You need a program that can give you term access to your modem. I don't know dick about this kind of stuff, so I fell back on using dip -t -v, since I knew it from my old slackware/slip days of yore. The problem is that my version of dip can only handle speeds up to 115200, so as soon as I tell the modem to use 230400, dip and the modem stop communicating. If you've got a better solution, let me know, but what I did was essentially:
    dip -t -v
    port ttyS3
    speed 115200
    term
    at $b 230400
    
    Then, my modem stopped responding since dip & it were running at different speeds, so I ctrl-] out of term, and quit dip (I may have had to kill -9 the dip process from another window, can't really remember for sure). Since dip stops communicating with the modem after this command, I was unable to tell the modem to write this to memory, so my guess is I'll have to repeat this command every time I turn the modem off (not every time I turn the machine off, obviously).

  5. Now, all you gotta do is tell ppp to use the port. I'm not doing anything fancy with my PPP, so I use the old PPP-on/off scripts for connection. What I did was change my /usr/sbin/PPP-on script from:
    #!/bin/sh
    exec /usr/sbin/pppd /dev/ttyS1 115200
    
    to:
    #!/bin/sh
    /bin/setserial /dev/ttyS3 port 0x8000 irq 18 uart 16550A baud_base 921600 spd_cust divisor 4
    exec /usr/sbin/pppd /dev/ttyS3 230400
    
And that should do it.