brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · 1cfe10d Raw
96 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/* -*- linux-c -*- *3 *4 * ALSA driver for the digigram lx6464es interface5 *6 * Copyright (c) 2009 Tim Blechmann <tim@klingt.org>7 */8 9#ifndef LX6464ES_H10#define LX6464ES_H11 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 by27				 * 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, draining46					    * 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, open60					      * 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 from79						    * 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 */96