Subject: Re: Vaxstation Turbochannel
To: Blaz Antonic <blaz.antonic@siol.net>
From: Roger Ivie <rivie@ridgenet.net>
List: port-vax
Date: 11/14/2004 10:22:56
On Sun, 14 Nov 2004, Blaz Antonic wrote:
> My initial tinkering shows that Turbochannel adapter ROM (SWCTX-BX's
> ROM) is mapped to 0x36000000 and the option board (whatever one plugs
> into Turbochannel slot) is mapped to 0x30000000. Option board is mapped
> 1:1, meaning that offsets of various bits and pieces of option board are
> located in same manner as they are on Decstations.

There is a register somewhere on the motherboard that has a bit which
indicates whether the TC adapter is installed. If you access the adapter
address space while there is no adapter, the system will hang. This
might be important for probing the system at boot time.

> Memory accesses to
> this region (0x30000000 and onwards) access the option board directly,
> with lowest byte of each longword accessing the hardware, 2nd byte of
> each longword being address counter within given "subsystem" (in DEC's
> nomenclature "subsystem" is one integral component of each option board,
> say firmware ROM or NCR53C94 or RAMDAC, etc.) address range. Top two
> bytes contain 0xffff and are irrelevant.

I do not understand this paragraph; could you try again?

The TURBOchannel is a 32-bit bus, as is the VAX data bus. All bytes of
each longword come from the TURBOchannel option. Whatever the option
puts on the bus is what is delivered to the VAX. What you are describing
is probably the behavior of the option that you have installed, NOT
the behavior of the TURBOchannel adapter.

The TURBOchannel adapter has several address spaces:

- 3000.0000 - (I forget, but I think its 128MB) go to the option
- There's a CSR.
- There's some space for the ROM
- There's some space for the scatter/gather RAM
- There's some diagnostic space that allows checking of the various
  portions of the adapter; you can verify the scatter/gather map
  works, light off test DMAs, and put test patterns on the data bus
  all the way out the TURBOchannel connector.

When you access the TURBOchannel option, everything you see is what
is given to you by the option.

There are a number of quirks to supporting DMA:

- The adapter may have the scatter/gather map enabled or disabled,
  depending upon bits in the CSR. If the scatter/gather map is disabled,
  the address given to the VAX is exactly what is presented by the
  option. If the map is enabled, it needs to be properly loaded before
  the DMA is started.
- The VAX bus is protected by parity, but the appropriate parity differs
  depending upon whether the platform is the VAXstation 4000/60 or
  the /90 (and /96). The 4000/60 wants odd parity on odd bytes and
  even parity on even bytes while the /90 and /96 want odd parity on
  all bytes. The parity generated for each byte is controlled by bits
  in the CSR.
- DMA should not be performed on the VAXstation 4000/60. There are not
  enough write buffers in the S-chip on the motherboard and it will hang
  if there are simultaneous outstanding writes by the CPU, the
  motherboard SCSI, the Ethernet, AND the TURBOchannel option.

There is also a quirk to supporting interrupts:

- TURBOchannel interrupts are level-sensitive, but on the 4000/90 and
  /96 they are edge-triggered. Fielding an interrupt on those platforms
  requires that the interrupts be disabled and re-enabled before the
  ISR exits to ensure the motherboard hardware sees an edge if the
  option is (for some reason) requesting another interrupt.

I'm sorry to say that I don't have any documentation on the option
anymore. However, I designed the thing so I know basically how it
works; it's been many years, though, so I don't recall all the details.

-- 
Roger Ivie
rivie@ridgenet.net
http://anachronda.webhop.org/
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/P d- s:+++ a+ C++ UB--(++++) !P L- !E W++ N++ o-- K w O- M+ V+++ PS+
PE++ Y+ PGP t+ 5+ X-- R tv++ b++ DI+++ D+ G e++ h--- r+++ z+++
------END GEEK CODE BLOCK------