linux/sound/pci/cs46xx/cs46xx_dsp_scb_types.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *  The driver for the Cirrus Logic's Sound Fusion CS46XX based soundcards
 *  Copyright (c) by Jaroslav Kysela <[email protected]>
 *
 * NOTE: comments are copy/paste from cwcemb80.lst 
 * provided by Tom Woller at Cirrus (my only
 * documentation about the SP OS running inside
 * the DSP) 
 */

#ifndef __CS46XX_DSP_SCB_TYPES_H__
#define __CS46XX_DSP_SCB_TYPES_H__

#include <asm/byteorder.h>

#ifndef ___DSP_DUAL_16BIT_ALLOC
#if   defined(__LITTLE_ENDIAN)
#define ___DSP_DUAL_16BIT_ALLOC(a,b)
#elif defined(__BIG_ENDIAN)
#define ___DSP_DUAL_16BIT_ALLOC
#else
#error Not __LITTLE_ENDIAN and not __BIG_ENDIAN, then what ???
#endif
#endif

/* This structs are used internally by the SP */

struct dsp_basic_dma_req {};

struct dsp_scatter_gather_ext {};

struct dsp_volume_control {};

/* Generic stream control block (SCB) structure definition */
struct dsp_generic_scb {};


struct dsp_spos_control_block {};

/* SPB for MIX_TO_OSTREAM algorithm family */
struct dsp_mix2_ostream_spb
{};

/* SCB for Timing master algorithm */
struct dsp_timing_master_scb {};

/* SCB for CODEC output algorithm */
struct dsp_codec_output_scb {};

/* SCB for CODEC input algorithm */
struct dsp_codec_input_scb {};


struct dsp_pcm_serial_input_scb {};

struct dsp_src_task_scb {};

struct dsp_decimate_by_pow2_scb {};

struct dsp_vari_decimate_scb {};


/* SCB for MIX_TO_OSTREAM algorithm family */
struct dsp_mix2_ostream_scb {};


/* SCB for S16_MIX algorithm */
struct dsp_mix_only_scb {};

/* SCB for the async. CODEC input algorithm */
struct dsp_async_codec_input_scb {};


/* SCB for the SP/DIF CODEC input and output */
struct dsp_spdifiscb {};


/* SCB for the SP/DIF CODEC input and output  */
struct dsp_spdifoscb {};


struct dsp_asynch_fg_rx_scb {};


struct dsp_asynch_fg_tx_scb {};


struct dsp_output_snoop_scb {};

struct dsp_spio_write_scb {};

struct dsp_magic_snoop_task {};


struct dsp_filter_scb {};
#endif /* __DSP_SCB_TYPES_H__ */