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

lx6464es.h (2396B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/* -*- linux-c -*- *
      3 *
      4 * ALSA driver for the digigram lx6464es interface
      5 *
      6 * Copyright (c) 2009 Tim Blechmann <tim@klingt.org>
      7 */
      8
      9#ifndef LX6464ES_H
     10#define LX6464ES_H
     11
     12#include <linux/spinlock.h>
     13#include <linux/atomic.h>
     14
     15#include <sound/core.h>
     16#include <sound/pcm.h>
     17
     18#include "lx_core.h"
     19
     20#define LXP "LX6464ES: "
     21
     22enum {
     23    ES_cmd_free         = 0,    /* no command executing */
     24    ES_cmd_processing   = 1,	/* execution of a read/write command */
     25    ES_read_pending     = 2,    /* a asynchron read command is pending */
     26    ES_read_finishing   = 3,    /* a read command has finished waiting (set by
     27				 * Interrupt or CancelIrp) */
     28};
     29
     30enum lx_stream_status {
     31	LX_STREAM_STATUS_FREE,
     32/* 	LX_STREAM_STATUS_OPEN, */
     33	LX_STREAM_STATUS_SCHEDULE_RUN,
     34/* 	LX_STREAM_STATUS_STARTED, */
     35	LX_STREAM_STATUS_RUNNING,
     36	LX_STREAM_STATUS_SCHEDULE_STOP,
     37/* 	LX_STREAM_STATUS_STOPPED, */
     38/* 	LX_STREAM_STATUS_PAUSED */
     39};
     40
     41
     42struct lx_stream {
     43	struct snd_pcm_substream  *stream;
     44	snd_pcm_uframes_t          frame_pos;
     45	enum lx_stream_status      status; /* free, open, running, draining
     46					    * pause */
     47	unsigned int               is_capture:1;
     48};
     49
     50
     51struct lx6464es {
     52	struct snd_card        *card;
     53	struct pci_dev         *pci;
     54	int			irq;
     55
     56	u8			mac_address[6];
     57
     58	struct mutex		lock;        /* interrupt lock */
     59	struct mutex            setup_mutex; /* mutex used in hw_params, open
     60					      * and close */
     61
     62	/* ports */
     63	unsigned long		port_plx;	   /* io port (size=256) */
     64	void __iomem           *port_plx_remapped; /* remapped plx port */
     65	void __iomem           *port_dsp_bar;      /* memory port (32-bit,
     66						    * non-prefetchable,
     67						    * size=8K) */
     68
     69	/* messaging */
     70	struct mutex		msg_lock;          /* message lock */
     71	struct lx_rmh           rmh;
     72	u32			irqsrc;
     73
     74	/* configuration */
     75	uint			freq_ratio : 2;
     76	uint                    playback_mute : 1;
     77	uint                    hardware_running[2];
     78	u32                     board_sample_rate; /* sample rate read from
     79						    * board */
     80	u16                     pcm_granularity;   /* board blocksize */
     81
     82	/* dma */
     83	struct snd_dma_buffer   capture_dma_buf;
     84	struct snd_dma_buffer   playback_dma_buf;
     85
     86	/* pcm */
     87	struct snd_pcm         *pcm;
     88
     89	/* streams */
     90	struct lx_stream        capture_stream;
     91	struct lx_stream        playback_stream;
     92};
     93
     94
     95#endif /* LX6464ES_H */