NAME
fga
—
SPARC Force FGA5000 VME/SBus bridge
driver
SYNOPSIS
fga0 at iommu0
fvme* at fga0
DESCRIPTION
The fga
driver provides a bridge between
SBus and VME interfaces. It has support for accessing VME address and data
spaces as if they were SBus address ranges, and mapping of VME interrupt
levels to SBus interrupts. The fga
also provides a
set of semaphores and mailboxes which are accessible from user programs via
ioctl(2).
VME devices are attached to the fvme
pseudo-devices, which provide an interface for drivers to establish VME
level/vectored interrupts and map address ranges. By default the following
address ranges are established:
Size | SBus Slot | SBus Offset | VME Space | VME Offset |
256MB | 1 | 0x0000000 | A32/D32 | 0xf0000000 |
256MB | 4 | 0x0000000 | A32/D16 | 0xf0000000 |
16MB | 5 | 0xe000000 | A24/D16 | 0x000000 |
64KB | 5 | 0xffc0000 | A16/D8 | 0x0000 |
64KB | 5 | 0xffd0000 | A16/D16 | 0x0000 |
64KB | 5 | 0xffe0000 | A16/D32 | 0x0000 |
The abort switch on the FORCE CPU boards is also controlled by the
fga
, and is enabled if the eeprom variable
abort-ena? is set to true.
Toggling the switch when enabled stops the kernel and starts the kernel
debugger ddb(4).
IOCTLS
The fga
device responds to the following
ioctl(2) calls defined in
⟨machine/fgaio.h⟩:
FGAIOCSEM
- (
struct fga_sem
) Clear (release) the semaphore fgasem_num. The argument structure is defined as follows:struct fga_sem { u_int8_t fgasem_num; /* semaphore number */ u_int8_t fgasem_val; /* semaphore value */ };
FGAIOSSEM
- (
struct fga_sem
) Set (attempt to get) the semaphore fgasem_num. If successful, fgasem_val will have a value of 1, otherwise it will have a value of 0. FGAIOCMBX
- (
struct fga_sem
) Clear (release) the mailbox fgasem_num. FGAIOSMBX
- (
struct fga_sem
) Set (attempt to get) the mailbox fgasem_num. If successful, fgasem_val will have a value of 1, otherwise it will have a value of 0.
SEE ALSO
HISTORY
OpenBSD support for the
fga
first appeared in OpenBSD
2.6.
AUTHORS
The driver for the fga
was written by
Jason L. Wright ⟨jason@thought.net⟩
under contract with RTMX Incorporated.
BUGS
There are several features provided by the FGA5000 that are not implemented in the driver. Most notably, VME slave ranges are not mapped and the DMA engine is not used. Also, several VME interrupts are not handled: SYSFAIL and ACFAIL.