dcaga(7) —
NAME
dcaga − Desktop Computing AGA 1024 driver
DESCRIPTION
The Desktop Computing AGA 1024 kernel driver facilitates accessing the Desktop Computing AGA 1024 board. It is a regular character-based driver that manages one AGA 1024 board. It is used by programs that draw using the graphics modes of AGA 1024.
CONFIGURATION
The sdevice(4) file /etc/conf/sdevice.d/dcaga describes the memory addresses of the AGA 1024 board. Since the memory address of the AGA 1024 is not configurable, it should not be necessary to change the default sdevice file. The ninth and tenth fields in this file describe the starting and ending memory addresses. These fields are given in hexadecimal. The default sdevice file entry is:
dcaga Y 1 0 0 0 0 0 cf000 cffff
If you change the default sdevice entry, you will have to build a new kernel and boot it for these changes to become effective.
PROGRAMMING INTERFACE
The Desktop Computing AGA 1024 device is opened by a call to open. Currently, only minor device 0 is supported. If a non-zero minor device is specified, then an error will occur and errno will be set to ENOENT. A simple check is done to see if the AGA 1024 board is in the system. If it is not, an error will result and errno will be set to ENXIO. A memory address clash may also cause this error. Only one user is allowed to open the AGA 1024 board at a time, unless the subsequent user is the superuser. If a subsequent open is attempted by another user who is not the superuser, an error will result and errno will be set to EPERM.
Read and write interfaces are provided to access the memory of the Texas Instruments 34010 processor in the AGA 1024. Seek addresses are specified in bytes. Because addresses on a 34010 processor are given in bits, it is necessary to divide the bit address by 8 to get a byte address. The state of the 34010 is saved before each read and write, and restored when completed.
The ioctl calls allow a user program to access the AGA 1024 board directly.
DCAGA_GET_INFO
This ioctl returns a structure containing the addresses of the board described in the section “Configuration” above. The structure returned is:
typedef struct dcaga_info {
char*dcaga_addr;/* physical address */
char*dcaga_endaddr; /* physical address */
} dcaga_info_t;
This structure is filled in with information in the ninth through tenth fields of the sdevice file. It is stored at the location specified by the argument that is passed.
DCAGA_MAP_BOARD
This ioctl allows the process to have direct access to the AGA 1024 memory. The argument passed is the address of the memory to map to the AGA 1024 board. It must be page (4096 byte) aligned, and it must span a length specified by the sdevice file (which is also a multiple of 4096 bytes). The memory that had existed at the argument passed will be irretrievably deleted, and the current contents of the AGA 1024 memory will be placed at those locations. One way of allocating the virtual memory in the user’s address space that will be mapped to the AGA 1024 memory is to call malloc requesting (length + 4096) bytes. Then, using the address that malloc returns, round it up to the next page (4K) boundary and use the result as the argument to this ioctl.
DCAGA_UNMAP_BOARD
This ioctl call unmaps the direct access to the AGA 1024 memory. The map must have been set up with DCAGA_MAP_BOARD by the current process. The argument passed should be the same one given to DCAGA_MAP_BOARD. The memory where the AGA 1024 memory had been becomes zeros.
FILES
/dev/dcaga
SEE ALSO
Xdcaga(1).
sdevice(4) in the INTERACTIVE SDS Guide and Programmer’s Reference Manual.
\*U — Version 1.0