cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sb16_csp.h (2100B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 *  Copyright (c) 1999 by Uros Bizjak <uros@kss-loka.si>
      4 *                        Takashi Iwai <tiwai@suse.de>
      5 *
      6 *  SB16ASP/AWE32 CSP control
      7 */
      8#ifndef __SOUND_SB16_CSP_H
      9#define __SOUND_SB16_CSP_H
     10
     11#include <sound/sb.h>
     12#include <sound/hwdep.h>
     13#include <linux/firmware.h>
     14#include <uapi/sound/sb16_csp.h>
     15
     16struct snd_sb_csp;
     17
     18/* indices for the known CSP programs */
     19enum {
     20	CSP_PROGRAM_MULAW,
     21	CSP_PROGRAM_ALAW,
     22	CSP_PROGRAM_ADPCM_INIT,
     23	CSP_PROGRAM_ADPCM_PLAYBACK,
     24	CSP_PROGRAM_ADPCM_CAPTURE,
     25
     26	CSP_PROGRAM_COUNT
     27};
     28
     29/*
     30 * CSP operators
     31 */
     32struct snd_sb_csp_ops {
     33	int (*csp_use) (struct snd_sb_csp * p);
     34	int (*csp_unuse) (struct snd_sb_csp * p);
     35	int (*csp_autoload) (struct snd_sb_csp * p, snd_pcm_format_t pcm_sfmt, int play_rec_mode);
     36	int (*csp_start) (struct snd_sb_csp * p, int sample_width, int channels);
     37	int (*csp_stop) (struct snd_sb_csp * p);
     38	int (*csp_qsound_transfer) (struct snd_sb_csp * p);
     39};
     40
     41/*
     42 * CSP private data
     43 */
     44struct snd_sb_csp {
     45	struct snd_sb *chip;		/* SB16 DSP */
     46	int used;		/* usage flag - exclusive */
     47	char codec_name[16];	/* name of codec */
     48	unsigned short func_nr;	/* function number */
     49	unsigned int acc_format;	/* accepted PCM formats */
     50	int acc_channels;	/* accepted channels */
     51	int acc_width;		/* accepted sample width */
     52	int acc_rates;		/* accepted sample rates */
     53	int mode;		/* MODE */
     54	int run_channels;	/* current CSP channels */
     55	int run_width;		/* current sample width */
     56	int version;		/* CSP version (0x10 - 0x1f) */
     57	int running;		/* running state */
     58
     59	struct snd_sb_csp_ops ops;	/* operators */
     60
     61	spinlock_t q_lock;	/* locking */
     62	int q_enabled;		/* enabled flag */
     63	int qpos_left;		/* left position */
     64	int qpos_right;		/* right position */
     65	int qpos_changed;	/* position changed flag */
     66
     67	struct snd_kcontrol *qsound_switch;
     68	struct snd_kcontrol *qsound_space;
     69
     70	struct mutex access_mutex;	/* locking */
     71
     72	const struct firmware *csp_programs[CSP_PROGRAM_COUNT];
     73};
     74
     75int snd_sb_csp_new(struct snd_sb *chip, int device, struct snd_hwdep ** rhwdep);
     76#endif /* __SOUND_SB16_CSP */