Blame view

include/sound/emu8000_reg.h 9.54 KB
1a59d1b8e   Thomas Gleixner   treewide: Replace...
1
  /* SPDX-License-Identifier: GPL-2.0-or-later */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
4
5
6
7
8
9
  #ifndef __SOUND_EMU8000_REG_H
  #define __SOUND_EMU8000_REG_H
  /*
   *  Register operations for the EMU8000
   *
   *  Copyright (C) 1999 Steve Ratcliffe
   *
   *  Based on awe_wave.c by Takashi Iwai
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
   */
  
  /*
   * Data port addresses relative to the EMU base.
   */
  #define EMU8000_DATA0(e)    ((e)->port1)
  #define EMU8000_DATA1(e)    ((e)->port2)
  #define EMU8000_DATA2(e)    ((e)->port2+2)
  #define EMU8000_DATA3(e)    ((e)->port3)
  #define EMU8000_PTR(e)      ((e)->port3+2)
  
  /*
   * Make a command from a register and channel.
   */
  #define EMU8000_CMD(reg, chan) ((reg)<<5 | (chan))
  
  /*
   * Commands to read and write the EMU8000 registers.
   * These macros should be used for all register accesses.
   */
  #define EMU8000_CPF_READ(emu, chan) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(0, (chan)))
  #define EMU8000_PTRX_READ(emu, chan) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(1, (chan)))
  #define EMU8000_CVCF_READ(emu, chan) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(2, (chan)))
  #define EMU8000_VTFT_READ(emu, chan) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(3, (chan)))
  #define EMU8000_PSST_READ(emu, chan) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(6, (chan)))
  #define EMU8000_CSL_READ(emu, chan) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(7, (chan)))
  #define EMU8000_CCCA_READ(emu, chan) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(0, (chan)))
  #define EMU8000_HWCF4_READ(emu) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 9))
  #define EMU8000_HWCF5_READ(emu) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 10))
  #define EMU8000_HWCF6_READ(emu) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 13))
  #define EMU8000_SMALR_READ(emu) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 20))
  #define EMU8000_SMARR_READ(emu) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 21))
  #define EMU8000_SMALW_READ(emu) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 22))
  #define EMU8000_SMARW_READ(emu) \
  	snd_emu8000_peek_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 23))
  #define EMU8000_SMLD_READ(emu) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 26))
  #define EMU8000_SMRD_READ(emu) \
  	snd_emu8000_peek((emu), EMU8000_DATA2(emu), EMU8000_CMD(1, 26))
  #define EMU8000_WC_READ(emu) \
  	snd_emu8000_peek((emu), EMU8000_DATA2(emu), EMU8000_CMD(1, 27))
  #define EMU8000_HWCF1_READ(emu) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 29))
  #define EMU8000_HWCF2_READ(emu) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 30))
  #define EMU8000_HWCF3_READ(emu) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 31))
  #define EMU8000_INIT1_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(2, (chan)))
  #define EMU8000_INIT2_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA2(emu), EMU8000_CMD(2, (chan)))
  #define EMU8000_INIT3_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(3, (chan)))
  #define EMU8000_INIT4_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA2(emu), EMU8000_CMD(3, (chan)))
  #define EMU8000_ENVVOL_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(4, (chan)))
  #define EMU8000_DCYSUSV_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(5, (chan)))
  #define EMU8000_ENVVAL_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(6, (chan)))
  #define EMU8000_DCYSUS_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA1(emu), EMU8000_CMD(7, (chan)))
  #define EMU8000_ATKHLDV_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA2(emu), EMU8000_CMD(4, (chan)))
  #define EMU8000_LFO1VAL_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA2(emu), EMU8000_CMD(5, (chan)))
  #define EMU8000_ATKHLD_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA2(emu), EMU8000_CMD(6, (chan)))
  #define EMU8000_LFO2VAL_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA2(emu), EMU8000_CMD(7, (chan)))
  #define EMU8000_IP_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA3(emu), EMU8000_CMD(0, (chan)))
  #define EMU8000_IFATN_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA3(emu), EMU8000_CMD(1, (chan)))
  #define EMU8000_PEFE_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA3(emu), EMU8000_CMD(2, (chan)))
  #define EMU8000_FMMOD_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA3(emu), EMU8000_CMD(3, (chan)))
  #define EMU8000_TREMFRQ_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA3(emu), EMU8000_CMD(4, (chan)))
  #define EMU8000_FM2FRQ2_READ(emu, chan) \
  	snd_emu8000_peek((emu), EMU8000_DATA3(emu), EMU8000_CMD(5, (chan)))
  
  
  #define EMU8000_CPF_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(0, (chan)), (val))
  #define EMU8000_PTRX_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(1, (chan)), (val))
  #define EMU8000_CVCF_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(2, (chan)), (val))
  #define EMU8000_VTFT_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(3, (chan)), (val))
  #define EMU8000_PSST_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(6, (chan)), (val))
  #define EMU8000_CSL_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(7, (chan)), (val))
  #define EMU8000_CCCA_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(0, (chan)), (val))
  #define EMU8000_HWCF4_WRITE(emu, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 9), (val))
  #define EMU8000_HWCF5_WRITE(emu, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 10), (val))
  #define EMU8000_HWCF6_WRITE(emu, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 13), (val))
  /* this register is not documented */
  #define EMU8000_HWCF7_WRITE(emu, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 14), (val))
  #define EMU8000_SMALR_WRITE(emu, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 20), (val))
  #define EMU8000_SMARR_WRITE(emu, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 21), (val))
  #define EMU8000_SMALW_WRITE(emu, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 22), (val))
  #define EMU8000_SMARW_WRITE(emu, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 23), (val))
  #define EMU8000_SMLD_WRITE(emu, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 26), (val))
  #define EMU8000_SMRD_WRITE(emu, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA2(emu), EMU8000_CMD(1, 26), (val))
  #define EMU8000_WC_WRITE(emu, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA2(emu), EMU8000_CMD(1, 27), (val))
  #define EMU8000_HWCF1_WRITE(emu, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 29), (val))
  #define EMU8000_HWCF2_WRITE(emu, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 30), (val))
  #define EMU8000_HWCF3_WRITE(emu, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(1, 31), (val))
  #define EMU8000_INIT1_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(2, (chan)), (val))
  #define EMU8000_INIT2_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA2(emu), EMU8000_CMD(2, (chan)), (val))
  #define EMU8000_INIT3_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(3, (chan)), (val))
  #define EMU8000_INIT4_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA2(emu), EMU8000_CMD(3, (chan)), (val))
  #define EMU8000_ENVVOL_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(4, (chan)), (val))
  #define EMU8000_DCYSUSV_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(5, (chan)), (val))
  #define EMU8000_ENVVAL_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(6, (chan)), (val))
  #define EMU8000_DCYSUS_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA1(emu), EMU8000_CMD(7, (chan)), (val))
  #define EMU8000_ATKHLDV_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA2(emu), EMU8000_CMD(4, (chan)), (val))
  #define EMU8000_LFO1VAL_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA2(emu), EMU8000_CMD(5, (chan)), (val))
  #define EMU8000_ATKHLD_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA2(emu), EMU8000_CMD(6, (chan)), (val))
  #define EMU8000_LFO2VAL_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA2(emu), EMU8000_CMD(7, (chan)), (val))
  #define EMU8000_IP_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA3(emu), EMU8000_CMD(0, (chan)), (val))
  #define EMU8000_IFATN_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA3(emu), EMU8000_CMD(1, (chan)), (val))
  #define EMU8000_PEFE_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA3(emu), EMU8000_CMD(2, (chan)), (val))
  #define EMU8000_FMMOD_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA3(emu), EMU8000_CMD(3, (chan)), (val))
  #define EMU8000_TREMFRQ_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA3(emu), EMU8000_CMD(4, (chan)), (val))
  #define EMU8000_FM2FRQ2_WRITE(emu, chan, val) \
  	snd_emu8000_poke((emu), EMU8000_DATA3(emu), EMU8000_CMD(5, (chan)), (val))
  
  #define EMU8000_0080_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(4, (chan)), (val))
  #define EMU8000_00A0_WRITE(emu, chan, val) \
  	snd_emu8000_poke_dw((emu), EMU8000_DATA0(emu), EMU8000_CMD(5, (chan)), (val))
  
  #endif /* __SOUND_EMU8000_REG_H */