OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [sound/] [Opti] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
Support for the OPTi 82C931 chip
2
--------------------------------
3
Note: parts of this README file apply also to other
4
cards that use the mad16 driver.
5
 
6
Some items in this README file are based on features
7
added to the sound driver after Linux-2.1.91 was out.
8
By the time of writing this I do not know which official
9
kernel release will include these features.
10
Please do not report inconsistencies on older Linux
11
kernels.
12
 
13
The OPTi 82C931 is supported in its non-PnP mode.
14
Usually you do not need to set jumpers, etc. The sound driver
15
will check the card status and if it is required it will
16
force the card into a mode in which it can be programmed.
17
 
18
If you have another OS installed on your computer it is recommended
19
that Linux and the other OS use the same resources.
20
 
21
Also, it is recommended that resources specified in /etc/modules.conf
22
and resources specified in /etc/isapnp.conf agree.
23
 
24
Compiling the sound driver
25
--------------------------
26
I highly recommend that you build a modularized sound driver.
27
This document does not cover a sound-driver which is built in
28
the kernel.
29
 
30
Sound card support should be enabled as a module (chose m).
31
Answer 'm' for  these items:
32
  Generic OPL2/OPL3 FM synthesizer support              (CONFIG_SOUND_ADLIB)
33
  Microsoft Sound System support                        (CONFIG_SOUND_MSS)
34
  Support for OPTi MAD16 and/or Mozart based cards      (CONFIG_SOUND_MAD16)
35
  FM synthesizer (YM3812/OPL-3) support                 (CONFIG_SOUND_YM3812)
36
 
37
The configuration menu may ask for addresses, IRQ lines or DMA
38
channels. If the card is used as a module the module loading
39
options will override these values.
40
 
41
For the OPTi 931 you can answer 'n' to:
42
  Support MIDI in older MAD16 based cards (requires SB) (CONFIG_SOUND_MAD16_OLDCARD)
43
If you do need MIDI support in a Mozart or C928 based card you
44
need to answer 'm' to the above question. In that case you will
45
also need to answer 'm' to:
46
  '100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support' (CONFIG_SOUND_SB)
47
 
48
Go on and compile your kernel and modules. Install the modules. Run depmod -a.
49
 
50
Using isapnptools
51
-----------------
52
In most systems with a PnP BIOS you do not need to use isapnp. The
53
initialization provided by the BIOS is sufficient for the driver
54
to pick up the card and continue initialization.
55
 
56
If that fails, or if you have other PnP cards, you need to use isapnp
57
to initialize the card.
58
This was tested with isapnptools-1.11 but I recommend that you use
59
isapnptools-1.13 (or newer). Run pnpdump to dump the information
60
about your PnP cards. Then edit the resulting file and select
61
the options of your choice. This file is normally installed as
62
/etc/isapnp.conf.
63
 
64
The driver has one limitation with respect to I/O port resources:
65
IO3 base must be 0x0E0C.  Although isapnp allows other ports, this
66
address is hard-coded into the driver.
67
 
68
Using kmod and autoloading the sound driver
69
-------------------------------------------
70
Comment: as of linux-2.1.90 kmod is replacing kerneld.
71
The config file '/etc/modules.conf' is used as before.
72
 
73
This is the sound part of my /etc/modules.conf file.
74
Following that I will explain each line.
75
 
76
alias mixer0 mad16
77
alias audio0 mad16
78
alias midi0  mad16
79
alias synth0 opl3
80
options sb mad16=1
81
options mad16 irq=10 dma=0 dma16=1 io=0x530 joystick=1 cdtype=0
82
options opl3 io=0x388
83
post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6
84
 
85
If you have an MPU daughtercard or onboard MPU you will want to add to the
86
"options mad16" line - eg
87
 
88
options mad16 irq=5 dma=0 dma16=3 io=0x530 mpu_io=0x330 mpu_irq=9
89
 
90
To set the I/O and IRQ of the MPU.
91
 
92
 
93
Explain:
94
 
95
alias mixer0 mad16
96
alias audio0 mad16
97
alias midi0  mad16
98
alias synth0 opl3
99
 
100
When any sound device is opened the kernel requests auto-loading
101
of char-major-14. There is a built-in alias that translates this
102
request to loading the main sound module.
103
 
104
The sound module in its turn will request loading of a sub-driver
105
for mixer, audio, midi or synthesizer device. The first 3 are
106
supported by the mad16 driver. The synth device is supported
107
by the opl3 driver.
108
 
109
There is currently no way to autoload the sound device driver
110
if more than one card is installed.
111
 
112
options sb mad16=1
113
 
114
This is left for historical reasons. If you enable the
115
config option 'Support MIDI in older MAD16 based cards (requires SB)'
116
or if you use an older mad16 driver it will force loading of the
117
SoundBlaster driver. This option tells the SB driver not to look
118
for a SB card but to wait for the mad16 driver.
119
 
120
options mad16 irq=10 dma=0 dma16=1 io=0x530 joystick=1 cdtype=0
121
options opl3 io=0x388
122
 
123
post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6
124
 
125
This sets resources and options for the mad16 and opl3 drivers.
126
I use two DMA channels (only one is required) to enable full duplex.
127
joystick=1 enables the joystick port. cdtype=0 disables the cd port.
128
You can also set mpu_io and mpu_irq in the mad16 options for the
129
uart401 driver.
130
 
131
This tells modprobe to run /sbin/ad1848_mixer_reroute after
132
mad16 is successfully loaded and initialized. The source
133
for ad1848_mixer_reroute is appended to the end of this readme
134
file. It is impossible for the sound driver to know the actual
135
connections to the mixer. The 3 inputs intended for cd, synth
136
and line-in are mapped to the generic inputs line1, line2 and
137
line3. This program reroutes these mixer channels to their
138
right names (note the right mapping depends on the actual sound
139
card that you use).
140
The numeric parameters mean:
141
 14=line1 8=cd    - reroute line1 to the CD input.
142
 15=line2 3=synth - reroute line2 to the synthesizer input.
143
 16=line3 6=line  - reroute line3 to the line input.
144
For reference on other input names look at the file
145
/usr/include/linux/soundcard.h.
146
 
147
Using a joystick
148
-----------------
149
You must enable a joystick in the mad16 options. (also
150
in /etc/isapnp.conf if you use it).
151
Tested with regular analog joysticks.
152
 
153
A CDROM drive connected to the sound card
154
-----------------------------------------
155
The 82C931 chip has support only for secondary ATAPI cdrom.
156
(cdtype=8). Loading the mad16 driver resets the C931 chip
157
and if a cdrom was already mounted it may cause a complete
158
system hang. Do not use the sound card if you have an alternative.
159
If you do use the sound card it is important that you load
160
the mad16 driver (use "modprobe mad16" to prevent auto-unloading)
161
before the cdrom is accessed the first time.
162
 
163
Using the sound driver built-in to the kernel may help here, but...
164
Most new systems have a PnP BIOS and also two IDE controllers.
165
The IDE controller on the sound card may be needed only on older
166
systems (which have only one IDE controller) but these systems
167
also do not have a PnP BIOS - requiring isapnptools and a modularized
168
driver.
169
 
170
Known problems
171
--------------
172
1. See the section on "A CDROM drive connected to the sound card".
173
 
174
2. On my system the codec cannot capture companded sound samples.
175
   (eg., recording from /dev/audio). When any companded capture is
176
   requested I get stereo-16 bit samples instead. Playback of
177
   companded samples works well. Apparently this problem is not common
178
   to all C931 based cards. I do not know how to identify cards that
179
   have this problem.
180
 
181
Source for ad1848_mixer_reroute.c
182
---------------------------------
183
#include 
184
#include 
185
#include 
186
 
187
static char *mixer_names[SOUND_MIXER_NRDEVICES] =
188
        SOUND_DEVICE_LABELS;
189
 
190
int
191
main(int argc, char **argv) {
192
        int val, from, to;
193
        int i, fd;
194
 
195
        fd = open("/dev/mixer", O_RDWR);
196
        if(fd < 0) {
197
                perror("/dev/mixer");
198
                return 1;
199
        }
200
 
201
        for(i = 2; i < argc; i += 2) {
202
                from = atoi(argv[i-1]);
203
                to = atoi(argv[i]);
204
 
205
                if(to == SOUND_MIXER_NONE)
206
                        fprintf(stderr, "%s: turning off mixer %s\n",
207
                                argv[0], mixer_names[to]);
208
                else
209
                        fprintf(stderr, "%s: rerouting mixer %s to %s\n",
210
                                argv[0], mixer_names[from], mixer_names[to]);
211
 
212
                val = from << 8 | to;
213
 
214
                if(ioctl(fd, SOUND_MIXER_PRIVATE2, &val)) {
215
                        perror("AD1848 mixer reroute");
216
                        return 1;
217
                }
218
        }
219
 
220
        return 0;
221
}
222
 

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.