Diff markup
1 #ifndef __SOUND_AD1816A_H 1 #ifndef __SOUND_AD1816A_H
2 #define __SOUND_AD1816A_H 2 #define __SOUND_AD1816A_H
3 3
4 /* 4 /*
5 ad1816a.h - definitions for ADI SoundPort 5 ad1816a.h - definitions for ADI SoundPort AD1816A chip.
6 Copyright (C) 1999-2000 by Massimo Piccion 6 Copyright (C) 1999-2000 by Massimo Piccioni <dafastidio@libero.it>
7 7
8 This program is free software; you can red 8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Publ 9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either versi 10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version. 11 (at your option) any later version.
12 12
13 This program is distributed in the hope th 13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULA 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more detail 16 GNU General Public License for more details.
17 17
18 You should have received a copy of the GNU 18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to 19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place, Suite 3 20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */ 21 */
22 22
23 #include "control.h" 23 #include "control.h"
24 #include "pcm.h" 24 #include "pcm.h"
25 #include "timer.h" 25 #include "timer.h"
26 26
27 #define AD1816A_REG(r) (chip- 27 #define AD1816A_REG(r) (chip->port + r)
28 28
29 #define AD1816A_CHIP_STATUS 0x00 29 #define AD1816A_CHIP_STATUS 0x00
30 #define AD1816A_INDIR_ADDR 0x00 30 #define AD1816A_INDIR_ADDR 0x00
31 #define AD1816A_INTERRUPT_STATUS 0x01 31 #define AD1816A_INTERRUPT_STATUS 0x01
32 #define AD1816A_INDIR_DATA_LOW 0x02 32 #define AD1816A_INDIR_DATA_LOW 0x02
33 #define AD1816A_INDIR_DATA_HIGH 0x03 33 #define AD1816A_INDIR_DATA_HIGH 0x03
34 #define AD1816A_PIO_DEBUG 0x04 34 #define AD1816A_PIO_DEBUG 0x04
35 #define AD1816A_PIO_STATUS 0x05 35 #define AD1816A_PIO_STATUS 0x05
36 #define AD1816A_PIO_DATA 0x06 36 #define AD1816A_PIO_DATA 0x06
37 #define AD1816A_RESERVED_7 0x07 37 #define AD1816A_RESERVED_7 0x07
38 #define AD1816A_PLAYBACK_CONFIG 0x08 38 #define AD1816A_PLAYBACK_CONFIG 0x08
39 #define AD1816A_CAPTURE_CONFIG 0x09 39 #define AD1816A_CAPTURE_CONFIG 0x09
40 #define AD1816A_RESERVED_10 0x0a 40 #define AD1816A_RESERVED_10 0x0a
41 #define AD1816A_RESERVED_11 0x0b 41 #define AD1816A_RESERVED_11 0x0b
42 #define AD1816A_JOYSTICK_RAW_DATA 0x0c 42 #define AD1816A_JOYSTICK_RAW_DATA 0x0c
43 #define AD1816A_JOYSTICK_CTRL 0x0d 43 #define AD1816A_JOYSTICK_CTRL 0x0d
44 #define AD1816A_JOY_POS_DATA_LOW 0x0e 44 #define AD1816A_JOY_POS_DATA_LOW 0x0e
45 #define AD1816A_JOY_POS_DATA_HIGH 0x0f 45 #define AD1816A_JOY_POS_DATA_HIGH 0x0f
46 46
47 #define AD1816A_LOW_BYTE_TMP 0x00 47 #define AD1816A_LOW_BYTE_TMP 0x00
48 #define AD1816A_INTERRUPT_ENABLE 0x01 48 #define AD1816A_INTERRUPT_ENABLE 0x01
49 #define AD1816A_EXTERNAL_CTRL 0x01 49 #define AD1816A_EXTERNAL_CTRL 0x01
50 #define AD1816A_PLAYBACK_SAMPLE_RATE 0x02 50 #define AD1816A_PLAYBACK_SAMPLE_RATE 0x02
51 #define AD1816A_CAPTURE_SAMPLE_RATE 0x03 51 #define AD1816A_CAPTURE_SAMPLE_RATE 0x03
52 #define AD1816A_VOICE_ATT 0x04 52 #define AD1816A_VOICE_ATT 0x04
53 #define AD1816A_FM_ATT 0x05 53 #define AD1816A_FM_ATT 0x05
54 #define AD1816A_I2S_1_ATT 0x06 54 #define AD1816A_I2S_1_ATT 0x06
55 #define AD1816A_I2S_0_ATT 0x07 55 #define AD1816A_I2S_0_ATT 0x07
56 #define AD1816A_PLAYBACK_BASE_COUNT 0x08 56 #define AD1816A_PLAYBACK_BASE_COUNT 0x08
57 #define AD1816A_PLAYBACK_CURR_COUNT 0x09 57 #define AD1816A_PLAYBACK_CURR_COUNT 0x09
58 #define AD1816A_CAPTURE_BASE_COUNT 0x0a 58 #define AD1816A_CAPTURE_BASE_COUNT 0x0a
59 #define AD1816A_CAPTURE_CURR_COUNT 0x0b 59 #define AD1816A_CAPTURE_CURR_COUNT 0x0b
60 #define AD1816A_TIMER_BASE_COUNT 0x0c 60 #define AD1816A_TIMER_BASE_COUNT 0x0c
61 #define AD1816A_TIMER_CURR_COUNT 0x0d 61 #define AD1816A_TIMER_CURR_COUNT 0x0d
62 #define AD1816A_MASTER_ATT 0x0e 62 #define AD1816A_MASTER_ATT 0x0e
63 #define AD1816A_CD_GAIN_ATT 0x0f 63 #define AD1816A_CD_GAIN_ATT 0x0f
64 #define AD1816A_SYNTH_GAIN_ATT 0x10 64 #define AD1816A_SYNTH_GAIN_ATT 0x10
65 #define AD1816A_VID_GAIN_ATT 0x11 65 #define AD1816A_VID_GAIN_ATT 0x11
66 #define AD1816A_LINE_GAIN_ATT 0x12 66 #define AD1816A_LINE_GAIN_ATT 0x12
67 #define AD1816A_MIC_GAIN_ATT 0x13 67 #define AD1816A_MIC_GAIN_ATT 0x13
68 #define AD1816A_PHONE_IN_GAIN_ATT 0x13 68 #define AD1816A_PHONE_IN_GAIN_ATT 0x13
69 #define AD1816A_ADC_SOURCE_SEL 0x14 69 #define AD1816A_ADC_SOURCE_SEL 0x14
70 #define AD1816A_ADC_PGA 0x14 70 #define AD1816A_ADC_PGA 0x14
71 #define AD1816A_CHIP_CONFIG 0x20 71 #define AD1816A_CHIP_CONFIG 0x20
72 #define AD1816A_DSP_CONFIG 0x21 72 #define AD1816A_DSP_CONFIG 0x21
73 #define AD1816A_FM_SAMPLE_RATE 0x22 73 #define AD1816A_FM_SAMPLE_RATE 0x22
74 #define AD1816A_I2S_1_SAMPLE_RATE 0x23 74 #define AD1816A_I2S_1_SAMPLE_RATE 0x23
75 #define AD1816A_I2S_0_SAMPLE_RATE 0x24 75 #define AD1816A_I2S_0_SAMPLE_RATE 0x24
76 #define AD1816A_RESERVED_37 0x25 76 #define AD1816A_RESERVED_37 0x25
77 #define AD1816A_PROGRAM_CLOCK_RATE 0x26 77 #define AD1816A_PROGRAM_CLOCK_RATE 0x26
78 #define AD1816A_3D_PHAT_CTRL 0x27 78 #define AD1816A_3D_PHAT_CTRL 0x27
79 #define AD1816A_PHONE_OUT_ATT 0x27 79 #define AD1816A_PHONE_OUT_ATT 0x27
80 #define AD1816A_RESERVED_40 0x28 80 #define AD1816A_RESERVED_40 0x28
81 #define AD1816A_HW_VOL_BUT 0x29 81 #define AD1816A_HW_VOL_BUT 0x29
82 #define AD1816A_DSP_MAILBOX_0 0x2a 82 #define AD1816A_DSP_MAILBOX_0 0x2a
83 #define AD1816A_DSP_MAILBOX_1 0x2b 83 #define AD1816A_DSP_MAILBOX_1 0x2b
84 #define AD1816A_POWERDOWN_CTRL 0x2c 84 #define AD1816A_POWERDOWN_CTRL 0x2c
85 #define AD1816A_TIMER_CTRL 0x2c 85 #define AD1816A_TIMER_CTRL 0x2c
86 #define AD1816A_VERSION_ID 0x2d 86 #define AD1816A_VERSION_ID 0x2d
87 #define AD1816A_RESERVED_46 0x2e 87 #define AD1816A_RESERVED_46 0x2e
88 88
89 #define AD1816A_READY 0x80 89 #define AD1816A_READY 0x80
90 90
91 #define AD1816A_PLAYBACK_IRQ_PENDING 0x80 91 #define AD1816A_PLAYBACK_IRQ_PENDING 0x80
92 #define AD1816A_CAPTURE_IRQ_PENDING 0x40 92 #define AD1816A_CAPTURE_IRQ_PENDING 0x40
93 #define AD1816A_TIMER_IRQ_PENDING 0x20 93 #define AD1816A_TIMER_IRQ_PENDING 0x20
94 94
95 #define AD1816A_PLAYBACK_ENABLE 0x01 95 #define AD1816A_PLAYBACK_ENABLE 0x01
96 #define AD1816A_PLAYBACK_PIO 0x02 96 #define AD1816A_PLAYBACK_PIO 0x02
97 #define AD1816A_CAPTURE_ENABLE 0x01 97 #define AD1816A_CAPTURE_ENABLE 0x01
98 #define AD1816A_CAPTURE_PIO 0x02 98 #define AD1816A_CAPTURE_PIO 0x02
99 99
100 #define AD1816A_FMT_LINEAR_8 0x00 100 #define AD1816A_FMT_LINEAR_8 0x00
101 #define AD1816A_FMT_ULAW_8 0x08 101 #define AD1816A_FMT_ULAW_8 0x08
102 #define AD1816A_FMT_LINEAR_16_LIT 0x10 102 #define AD1816A_FMT_LINEAR_16_LIT 0x10
103 #define AD1816A_FMT_ALAW_8 0x18 103 #define AD1816A_FMT_ALAW_8 0x18
104 #define AD1816A_FMT_LINEAR_16_BIG 0x30 104 #define AD1816A_FMT_LINEAR_16_BIG 0x30
105 #define AD1816A_FMT_ALL 0x38 105 #define AD1816A_FMT_ALL 0x38
106 #define AD1816A_FMT_STEREO 0x04 106 #define AD1816A_FMT_STEREO 0x04
107 107
108 #define AD1816A_PLAYBACK_IRQ_ENABLE 0x8000 108 #define AD1816A_PLAYBACK_IRQ_ENABLE 0x8000
109 #define AD1816A_CAPTURE_IRQ_ENABLE 0x4000 109 #define AD1816A_CAPTURE_IRQ_ENABLE 0x4000
110 #define AD1816A_TIMER_IRQ_ENABLE 0x2000 110 #define AD1816A_TIMER_IRQ_ENABLE 0x2000
111 #define AD1816A_TIMER_ENABLE 0x0080 111 #define AD1816A_TIMER_ENABLE 0x0080
112 112
113 #define AD1816A_SRC_LINE 0x00 113 #define AD1816A_SRC_LINE 0x00
114 #define AD1816A_SRC_OUT 0x10 114 #define AD1816A_SRC_OUT 0x10
115 #define AD1816A_SRC_CD 0x20 115 #define AD1816A_SRC_CD 0x20
116 #define AD1816A_SRC_SYNTH 0x30 116 #define AD1816A_SRC_SYNTH 0x30
117 #define AD1816A_SRC_VIDEO 0x40 117 #define AD1816A_SRC_VIDEO 0x40
118 #define AD1816A_SRC_MIC 0x50 118 #define AD1816A_SRC_MIC 0x50
119 #define AD1816A_SRC_MONO 0x50 119 #define AD1816A_SRC_MONO 0x50
120 #define AD1816A_SRC_PHONE_IN 0x60 120 #define AD1816A_SRC_PHONE_IN 0x60
121 #define AD1816A_SRC_MASK 0x70 121 #define AD1816A_SRC_MASK 0x70
122 122
123 #define AD1816A_CAPTURE_NOT_EQUAL 0x1000 123 #define AD1816A_CAPTURE_NOT_EQUAL 0x1000
124 #define AD1816A_WSS_ENABLE 0x8000 124 #define AD1816A_WSS_ENABLE 0x8000
125 125
126 struct snd_ad1816a { !! 126 typedef struct _snd_ad1816a ad1816a_t;
>> 127
>> 128 struct _snd_ad1816a {
127 unsigned long port; 129 unsigned long port;
128 struct resource *res_port; 130 struct resource *res_port;
129 int irq; 131 int irq;
130 int dma1; 132 int dma1;
131 int dma2; 133 int dma2;
132 134
133 unsigned short hardware; 135 unsigned short hardware;
134 unsigned short version; 136 unsigned short version;
135 137
136 spinlock_t lock; 138 spinlock_t lock;
137 139
138 unsigned short mode; 140 unsigned short mode;
139 unsigned int clock_freq; <<
140 141
141 struct snd_card *card; !! 142 snd_card_t *card;
142 struct snd_pcm *pcm; !! 143 snd_pcm_t *pcm;
143 144
144 struct snd_pcm_substream *playback_sub !! 145 snd_pcm_substream_t *playback_substream;
145 struct snd_pcm_substream *capture_subs !! 146 snd_pcm_substream_t *capture_substream;
146 unsigned int p_dma_size; 147 unsigned int p_dma_size;
147 unsigned int c_dma_size; 148 unsigned int c_dma_size;
148 149
149 struct snd_timer *timer; !! 150 snd_timer_t *timer;
150 }; 151 };
151 152
152 153
153 #define AD1816A_HW_AUTO 0 154 #define AD1816A_HW_AUTO 0
154 #define AD1816A_HW_AD1816A 1 155 #define AD1816A_HW_AD1816A 1
155 #define AD1816A_HW_AD1815 2 156 #define AD1816A_HW_AD1815 2
156 #define AD1816A_HW_AD18MAX10 3 157 #define AD1816A_HW_AD18MAX10 3
157 158
158 #define AD1816A_MODE_PLAYBACK 0x01 159 #define AD1816A_MODE_PLAYBACK 0x01
159 #define AD1816A_MODE_CAPTURE 0x02 160 #define AD1816A_MODE_CAPTURE 0x02
160 #define AD1816A_MODE_TIMER 0x04 161 #define AD1816A_MODE_TIMER 0x04
161 #define AD1816A_MODE_OPEN (AD1816A_MODE_ 162 #define AD1816A_MODE_OPEN (AD1816A_MODE_PLAYBACK | \
162 AD1816A_MODE_C 163 AD1816A_MODE_CAPTURE | \
163 AD1816A_MODE_T 164 AD1816A_MODE_TIMER)
164 165
165 166
166 extern int snd_ad1816a_create(struct snd_card !! 167 extern int snd_ad1816a_create(snd_card_t *card, unsigned long port,
167 int irq, int dma 168 int irq, int dma1, int dma2,
168 struct snd_ad181 !! 169 ad1816a_t **chip);
169 170
170 extern int snd_ad1816a_pcm(struct snd_ad1816a !! 171 extern int snd_ad1816a_pcm(ad1816a_t *chip, int device, snd_pcm_t **rpcm);
171 extern int snd_ad1816a_mixer(struct snd_ad1816 !! 172 extern int snd_ad1816a_mixer(ad1816a_t *chip);
172 extern int snd_ad1816a_timer(struct snd_ad1816 <<
173 struct snd_timer <<
174 173
175 #endif /* __SOUND_AD1816A_H */ 174 #endif /* __SOUND_AD1816A_H */
176 175
|
This page was automatically generated by the
LXR engine.
|