dsp56k(4)
β¨ NAME β¨
dsp56k β the DSP56001 interface device, aka ur lil backstage pass to a real actual signal processor π
π 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 π¦
okay so first things first, bestie: the dsp56k device is a character device, and its numbers are major number 55 and minor number 0. Those are its β¨government nameβ¨. No cap.
π DESCRIPTION π
So. The Motorola DSP56001 is a fully programmable 24-bit digital signal processor, and it lives inside Atari Falcon030-compatible computers. Yes literally. It's giving retro tech main character energy and we are obsessed. πΈ
The dsp56k special file is how you talk to that DSP56001 β you use it to control the chip, and to send and receive data through the bidirectional handshaked host port. It's giving pen pal but one of you is silicon. π«Ά
Wanna yeet a data stream at the signal processor? Use write(2) on the device. Wanna get the processed data back? That's read(2), bestie. And here's the cute part: on the host side your data can be sent or received in 8, 16, 24, or 32-bit quantities, but inside the DSP56001 it will always be seen as 24-bit quantities. The DSP does not care about ur byte-sized drama. π
The following ioctl(2) calls are how you actually control this dsp56k device:
DSP56K_UPLOADβ resets the DSP56001 and uploads a program. The thirdioctl(2)argument must be a pointer to astruct dsp56k_upload, where the.binmember points to a DSP56001 binary program and the.lenmember is set to the length of that program, counted in 24-bit words. It's giving "here's my mixtape, pls play it". π₯DSP56K_SET_TX_WSIZEβ sets the transmit word size. Allowed values are the range 1 to 4, and it's the number of bytes that get sent at a time to the DSP56001. Those quantities will either be padded with bytes containing zero, or truncated to fit the DSP56001's native 24-bit data format. Glow-up or chop, dealer's choice. βοΈDSP56K_SET_RX_WSIZEβ sets the receive word size. Allowed values are the range 1 to 4, and it's the number of bytes that get received at a time from the DSP56001. Those quantities get truncated, or padded with a null byte ('\0'), to fit the DSP56001's native 24-bit data format. Same energy, opposite direction. πDSP56K_HOST_FLAGSβ read and write the host flags. These are four general-purpose bits that both the hosting computer and the DSP56001 can read. Bits 0 and 1 can be written by the host, and bits 2 and 3 can be written by the DSP56001. It's a shared notes app and honestly? iconic. π
To access the host flags, the third ioctl(2) 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 the host flags comes back to you in the lower four bits of the .status member. Read the room, check the status. β¨
DSP56K_HOST_CMDβ sends a host command. Allowed values are the range 0 to 31, and it's a user-defined command that gets handled by the program running over in the DSP56001. You're not sending raw data, you're sending a vibe. π
π FILES π
/dev/dsp56k
π SEE ALSO π
linux/include/asm-m68k/dsp56k.hlinux/drivers/char/dsp56k.chttp://dsp56k.nocrew.org/DSP56000/DSP56001 Digital Signal Processor User's Manual
and that's the whole page, bestie, you ate it UP π β¨ this lil masterpiece came from Linux man-pages 6.20 and it's dated 2026-02-08 β go forth and handshake that host port, i believe in you ππ¦π
π¦ where this page comes from
- arch rolling: man-pages 6.20-1 Β· BSD-2-Clause AND BSD-3-Clause AND BSD-4.3TAHOE AND BSD-4-Clause-UC AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-linking-exception AND LGPL-3.0-or-later AND LicenseRef-Public-Domain AND LicenseRef-UltraPermissive AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-2-para AND Linux-man-pages-copyleft-var AND MIT AND Spencer-94
- nixpkgs unstable: man-pages 6.20
- π the page's license: GPL-2.0-or-later
- Copyright 2000, Lars Brinkhoff <lars@nocrew.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms