Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

dsp56k(4) [redhat man page]

DSP56K(4)							   Special files							 DSP56K(4)

NAME
dsp56k - DSP56001 interface device SYNOPSIS
#include <asm/dsp56k.h> ssize_t read(int fd, void *data, size_t length); ssize_t write(int fd, void *data, size_t length); int ioctl(int fd, DSP56K_UPLOAD, struct dsp56k_upload *program); int ioctl(int fd, DSP56K_SET_TX_WSIZE, int wsize); int ioctl(int fd, DSP56K_SET_RX_WSIZE, int wsize); int ioctl(int fd, DSP56K_HOST_FLAGS, struct dsp56k_host_flags *flags); int ioctl(int fd, DSP56K_HOST_CMD, int cmd); CONFIGURATION
The dsp56k device is a character device with major number 55 and minor number 0. DESCRIPTION
The Motorola DSP56001 is a fully programmable 24-bit digital signal processor found in Atari Falcon030-compatible computers. The dsp56k special file is used to control the DSP56001, and to send and receive data using the bi-directional handshaked host port. To send a data stream to the signal processor, use write() to the device, and read() to receive processed data. The data can be sent or received in 8, 16, 24, or 32-bit quantities on the host side, but will always be seen as 24-bit quantities in the DSP56001. The following ioctl(2) calls are used to control the dsp56k device: DSP56K_UPLOAD resets the DSP56001 and uploads a program. The third ioctl() argument must be a pointer to a struct dsp56k_binary with members bin pointing to a DSP56001 binary program, and len set to the length of the program, counted in 24-bit words. DSP56K_SET_TX_WSIZE sets the transmit word size. Allowed values are in the range 1 to 4, and is the number of bytes that will be sent at a time to the DSP56001. These data quantities will either be padded with zero bytes, or truncated to fit the native 24-bit data format of the DSP56001. DSP56K_SET_RX_WSIZE sets the receive word size. Allowed values are in the range 1 to 4, and is the number of bytes that will be received at a time from the DSP56001. These data quantities will either truncated, or padded with a zero byte to fit the native 24-bit data format of the DSP56001. DSP56K_HOST_FLAGS read and write the host flags. The host flags are four general-purpose bits that can be read by both the hosting computer and the DSP56001. Bits 0 and 1 can be written by the host, and bits 2 and 3 can be written by the DSP56001. To access the host flags, the third ioctl() argument must be a pointer to a struct dsp56k_host_flags. If bit 0 or 1 is set in the dir member, the corresponding bit in out will be written to the host flags. The state of all host flags will be returned in the lower four bits of the status member. DSP56K_HOST_CMD sends a host command. Allowed values are in the range 0 to 31, and is a user-defined command handled by the program running in the DSP56001. FILES
/dev/dsp56k AUTHORS
Fredrik Noring <noring@nocrew.org>, lars brinkhoff <lars@nocrew.org>, Tomas Berndtsson <tomas@nocrew.org>. SEE ALSO
linux/include/asm-m68k/dsp56k.h, linux/drivers/char/dsp56k.c, http://dsp56k.nocrew.org/, DSP56000/DSP56001 Digital Signal Processor User's Manual Linux 2000-03-01 DSP56K(4)

Check Out this Related Man Page

ddi_model_convert_from(9F)				   Kernel Functions for Drivers 				ddi_model_convert_from(9F)

NAME
ddi_model_convert_from - determine data model type mismatch SYNOPSIS
#include <sys/ddi.h> #include <sys/sunddi.h> uint_tddi_model_convert_from(uint_t model); INTERFACE LEVEL
Solaris DDI specific (Solaris DDI). PARAMETERS
model The data model type of the current thread. DESCRIPTION
ddi_model_convert_from() is used to determine if the current thread uses a different C Language Type Model than the device driver. The 64-bit version of Solaris will require a 64-bit kernel to support both 64-bit and 32-bit user mode programs. The difference between a 32-bit program and a 64-bit program is in its C Language Type Model: a 32-bit program is ILP32 (integer, longs, and pointers are 32-bit) and a 64-bit program is LP64 (longs and pointers are 64-bit). There are a number of driver entry points such as ioctl(9E) and mmap(9E) where it is necessary to identify the C Language Type Model of the user-mode originator of an kernel event. For example any data which flows between programs and the device driver or vice versa need to be identical in format. A 64-bit device driver may need to modify the format of the data before sending it to a 32-bit application. ddi_model_convert_from() is used to determine if data that is passed between the device driver and the application requires reformatting to any non-native data model. RETURN VALUES
DDI_MODEL_ILP32 A conversion to/from ILP32 is necessary. DDI_MODEL_NONE No conversion is necessary. Current thread and driver use the same data model. CONTEXT
ddi_model_convert_from() can be called from any context. EXAMPLES
Example 1: : Using ddi_model_convert_from() in the ioctl() entry point to support both 32-bit and 64-bit applications. The following is an example how to use ddi_model_convert_from() in the ioctl() entry point to support both 32-bit and 64-bit applications. struct passargs32 { int len; caddr32_t addr; }; struct passargs { int len; caddr_t addr; }; xxioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp) { struct passargs pa; switch (ddi_model_convert_from(mode & FMODELS)) { case DDI_MODEL_ILP32: { struct passargs32 pa32; ddi_copyin(arg, &pa32, sizeof (struct passargs32), mode); pa.len = pa32.len; pa.address = pa32.address; break; } case DDI_MODEL_NONE: ddi_copyin(arg, &pa, sizeof (struct passargs), mode); break; } do_ioctl(&pa); .... } SEE ALSO
ioctl(9E), mmap(9E), ddi_mmap_get_model(9F) Writing Device Drivers SunOS 5.10 8 Feb 2001 ddi_model_convert_from(9F)
Man Page