WIP FPC-III support
[linux/fpc-iii.git] / sound / pci / aw2 / aw2-saa7146.h
blobb5c5a71c0ac3884f98a4b6a5636beb5ad43876f0
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*****************************************************************************
4 * Copyright (C) 2008 Cedric Bregardis <cedric.bregardis@free.fr> and
5 * Jean-Christian Hassler <jhassler@free.fr>
7 * This file is part of the Audiowerk2 ALSA driver
9 *****************************************************************************/
11 #ifndef AW2_SAA7146_H
12 #define AW2_SAA7146_H
14 #define NB_STREAM_PLAYBACK 2
15 #define NB_STREAM_CAPTURE 1
17 #define NUM_STREAM_PLAYBACK_ANA 0
18 #define NUM_STREAM_PLAYBACK_DIG 1
20 #define NUM_STREAM_CAPTURE_ANA 0
22 typedef void (*snd_aw2_saa7146_it_cb) (void *);
24 struct snd_aw2_saa7146_cb_param {
25 snd_aw2_saa7146_it_cb p_it_callback;
26 void *p_callback_param;
29 /* definition of the chip-specific record */
31 struct snd_aw2_saa7146 {
32 void __iomem *base_addr;
35 extern void snd_aw2_saa7146_setup(struct snd_aw2_saa7146 *chip,
36 void __iomem *pci_base_addr);
37 extern int snd_aw2_saa7146_free(struct snd_aw2_saa7146 *chip);
39 extern void snd_aw2_saa7146_pcm_init_playback(struct snd_aw2_saa7146 *chip,
40 int stream_number,
41 unsigned long dma_addr,
42 unsigned long period_size,
43 unsigned long buffer_size);
44 extern void snd_aw2_saa7146_pcm_init_capture(struct snd_aw2_saa7146 *chip,
45 int stream_number,
46 unsigned long dma_addr,
47 unsigned long period_size,
48 unsigned long buffer_size);
49 extern void snd_aw2_saa7146_define_it_playback_callback(unsigned int
50 stream_number,
51 snd_aw2_saa7146_it_cb
52 p_it_callback,
53 void *p_callback_param);
54 extern void snd_aw2_saa7146_define_it_capture_callback(unsigned int
55 stream_number,
56 snd_aw2_saa7146_it_cb
57 p_it_callback,
58 void *p_callback_param);
59 extern void snd_aw2_saa7146_pcm_trigger_start_capture(struct snd_aw2_saa7146
60 *chip, int stream_number);
61 extern void snd_aw2_saa7146_pcm_trigger_stop_capture(struct snd_aw2_saa7146
62 *chip, int stream_number);
64 extern void snd_aw2_saa7146_pcm_trigger_start_playback(struct snd_aw2_saa7146
65 *chip,
66 int stream_number);
67 extern void snd_aw2_saa7146_pcm_trigger_stop_playback(struct snd_aw2_saa7146
68 *chip, int stream_number);
70 extern irqreturn_t snd_aw2_saa7146_interrupt(int irq, void *dev_id);
71 extern unsigned int snd_aw2_saa7146_get_hw_ptr_playback(struct snd_aw2_saa7146
72 *chip,
73 int stream_number,
74 unsigned char
75 *start_addr,
76 unsigned int
77 buffer_size);
78 extern unsigned int snd_aw2_saa7146_get_hw_ptr_capture(struct snd_aw2_saa7146
79 *chip,
80 int stream_number,
81 unsigned char
82 *start_addr,
83 unsigned int
84 buffer_size);
86 extern void snd_aw2_saa7146_use_digital_input(struct snd_aw2_saa7146 *chip,
87 int use_digital);
89 extern int snd_aw2_saa7146_is_using_digital_input(struct snd_aw2_saa7146
90 *chip);
92 #endif