OPL3-SA2
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:7k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. Documentation for the OPL3-SA2, SA3, and SAx driver (opl3sa2.o)
  2. ---------------------------------------------------------------
  3. Scott Murray, scott@spiteful.org
  4. January 7, 2001
  5. NOTE: All trade-marked terms mentioned below are properties of their
  6.       respective owners.
  7. Supported Devices
  8. -----------------
  9. This driver is for PnP soundcards based on the following Yamaha audio
  10. controller chipsets:
  11. YMF711 aka OPL3-SA2
  12. YMF715 and YMF719 aka OPL3-SA3
  13. Up until recently (December 2000), I'd thought the 719 to be a
  14. different chipset, the OPL3-SAx.  After an email exhange with
  15. Yamaha, however, it turns out that the 719 is just a re-badged
  16. 715, and the chipsets are identical.  The chipset detection code
  17. has been updated to reflect this.
  18. Anyways, all of these chipsets implement the following devices:
  19. OPL3 FM synthesizer
  20. Soundblaster Pro
  21. Microsoft/Windows Sound System
  22. MPU401 MIDI interface
  23. Note that this driver uses the MSS device, and to my knowledge these
  24. chipsets enforce an either/or situation with the Soundblaster Pro
  25. device and the MSS device.  Since the MSS device has better
  26. capabilities, I have implemented the driver to use it.
  27. Mixer Channels
  28. --------------
  29. Older versions of this driver (pre-December 2000) had two mixers,
  30. an OPL3-SA2 or SA3 mixer and a MSS mixer.  The OPL3-SA[23] mixer
  31. device contained a superset of mixer channels consisting of its own
  32. channels and all of the MSS mixer channels.  To simplify the driver
  33. considerably, and to partition functionality better, the OPL3-SA[23]
  34. mixer device now contains has its own specific mixer channels.  They
  35. are:
  36. Volume     - Hardware master volume control
  37. Bass       - SA3 only, now supports left and right channels
  38. Treble     - SA3 only, now supports left and right channels
  39. Microphone - Hardware microphone input volume control
  40. Digital1   - Yamaha 3D enhancement "Wide" mixer
  41. All other mixer channels (e.g. "PCM", "CD", etc.) now have to be
  42. controlled via the "MS Sound System (CS4231)" mixer.  To facilitate
  43. this, the mixer device creation order has been switched so that
  44. the MSS mixer is created first.  This allows accessing the majority
  45. of the useful mixer channels even via single mixer-aware tools
  46. such as "aumix".
  47. Plug 'n Play
  48. ------------
  49. In previous kernels (2.2.x), some configuration was required to
  50. get the driver to talk to the card.  Being the new millenium and
  51. all, the 2.4.x kernels now support auto-configuration if ISA PnP
  52. support is configured in.  Theoretically, the driver even supports
  53. having more than one card in this case.
  54. With the addition of PnP support to the driver, two new parameters
  55. have been added to control it:
  56. isapnp   - set to 0 to disable ISA PnP card detection
  57. multiple - set to 0 to disable multiple PnP card detection
  58. Optional Parameters
  59. -------------------
  60. Recent (December 2000) additions to the driver (based on a patch
  61. provided by Peter Englmaier) are two new parameters:
  62. ymode -    Set Yamaha 3D enhancement mode:
  63.            0 = Desktop/Normal  5-12 cm speakers
  64.            1 = Notebook PC (1) 3 cm speakers
  65.            2 = Notebook PC (2) 1.5 cm speakers
  66.            3 = Hi-Fi           16-38 cm speakers
  67. loopback - Set A/D input source. Useful for echo cancellation:
  68.            0 = Mic Right channel (default)
  69.            1 = Mono output loopback
  70. The ymode parameter has been tested and does work.  The loopback
  71. parameter, however, is untested.  Any feedback on its usefulness
  72. would be appreciated.
  73. Manual Configuration
  74. --------------------
  75. If for some reason you decide not to compile ISA PnP support into
  76. your kernel, or disabled the driver's usage of it by setting the
  77. isapnp parameter as discussed above, then you will need to do some
  78. manual configuration.  There are two ways of doing this.  The most
  79. common is to use the isapnptools package to initialize the card, and
  80. use the kernel module form of the sound subsystem and sound drivers.
  81. Alternatively, some BIOS's allow manual configuration of installed
  82. PnP devices in a BIOS menu, which should allow using the non-modular
  83. sound drivers, i.e. built into the kernel.
  84. I personally use isapnp and modules, and do not have access to a PnP
  85. BIOS machine to test.  If you have such a beast, configuring the
  86. driver to be built into the kernel should just work (thanks to work
  87. done by David Luyer <luyer@ucs.uwa.edu.au>).  You will still need
  88. to specify settings, which can be done by adding:
  89. opl3sa2=<io>,<irq>,<dma>,<dma2>,<mssio>,<mpuio>
  90. to the kernel command line.  For example:
  91. opl3sa2=0x370,5,0,1,0x530,0x330
  92. If you are instead using the isapnp tools (as most people have been
  93. before Linux 2.4.x), follow the directions in their documentation to
  94. produce a configuration file.  Here is the relevant excerpt I used to
  95. use for my SA3 card from my isapnp.conf:
  96. (CONFIGURE YMH0800/-1 (LD 0
  97. # NOTE: IO 0 is for the unused SoundBlaster part of the chipset.
  98. (IO 0 (BASE 0x0220))
  99. (IO 1 (BASE 0x0530))
  100. (IO 2 (BASE 0x0388))
  101. (IO 3 (BASE 0x0330))
  102. (IO 4 (BASE 0x0370))
  103. (INT 0 (IRQ 5 (MODE +E)))
  104. (DMA 0 (CHANNEL 0))
  105. (DMA 1 (CHANNEL 1))
  106. Here, note that:
  107. Port  Acceptable Range  Purpose
  108. ----  ----------------  -------
  109. IO 0  0x0220 - 0x0280   SB base address, unused.
  110. IO 1  0x0530 - 0x0F48   MSS base address
  111. IO 2  0x0388 - 0x03F8   OPL3 base address
  112. IO 3  0x0300 - 0x0334   MPU base address
  113. IO 4  0x0100 - 0x0FFE   card's own base address for its control I/O ports
  114. The IRQ and DMA values can be any that are considered acceptable for a
  115. MSS.  Assuming you've got isapnp all happy, then you should be able to
  116. do something like the following (which matches up with the isapnp
  117. configuration above):
  118. modprobe mpu401
  119. modprobe ad1848
  120. modprobe opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=5 dma=0 dma2=1
  121. modprobe opl3 io=0x388
  122. See the section "Automatic Module Loading" below for how to set up
  123. /etc/modules.conf to automate this.
  124. An important thing to remember that the opl3sa2 module's io argument is
  125. for it's own control port, which handles the card's master mixer for
  126. volume (on all cards), and bass and treble (on SA3 cards).
  127. Troubleshooting
  128. ---------------
  129. If all goes well and you see no error messages, you should be able to
  130. start using the sound capabilities of your system.  If you get an
  131. error message while trying to insert the opl3sa2 module, then make
  132. sure that the values of the various arguments match what you specified
  133. in your isapnp configuration file, and that there is no conflict with
  134. another device for an I/O port or interrupt.  Checking the contents of
  135. /proc/ioports and /proc/interrupts can be useful to see if you're
  136. butting heads with another device.
  137. If you still cannot get the module to load, look at the contents of
  138. your system log file, usually /var/log/messages.  If you see the
  139. message "opl3sa2: Unknown Yamaha audio controller version", then you
  140. have a different chipset version than I've encountered so far.  Look
  141. for all messages in the log file that start with "opl3sa2: " and see
  142. if they provide any clues.  If you do not see the chipset version
  143. message, and none of the other messages present in the system log are
  144. helpful, email me some details and I'll try my best to help.
  145. Automatic Module Loading
  146. ------------------------
  147. Lastly, if you're using modules and want to set up automatic module
  148. loading with kmod, the kernel module loader, here is the section I
  149. currently use in my modules.conf file:
  150. # Sound
  151. alias sound-slot-0 opl3sa2
  152. options opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=7 dma=0 dma2=3
  153. options opl3 io=0x388
  154. That's all it currently takes to get an OPL3-SA3 card working on my
  155. system.  Once again, if you have any other problems, email me at the
  156. address listed above.
  157. Scott