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 third ioctl(2) argument must be a pointer to a struct dsp56k_upload, where the .bin member points to a DSP56001 binary program and the .len member 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.h
  • linux/drivers/char/dsp56k.c
  • http://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
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms