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

嵌入式Linux

开发平台:

Unix_Linux

  1.      An OSS/Free Driver for WaveFront soundcards
  2.        (Turtle Beach Maui, Tropez, Tropez Plus)
  3.      Paul Barton-Davis, July 1998
  4.   VERSION 0.2.5
  5. Driver Status
  6. -------------
  7. Requires: Kernel 2.1.106 or later (the driver is included with kernels
  8. 2.1.109 and above)
  9.   
  10. As of 7/22/1998, this driver is currently in *BETA* state. This means
  11. that it compiles and runs, and that I use it on my system (Linux
  12. 2.1.106) with some reasonably demanding applications and uses.  I
  13. believe the code is approaching an initial "finished" state that
  14. provides bug-free support for the Tropez Plus.
  15. Please note that to date, the driver has ONLY been tested on a Tropez
  16. Plus. I would very much like to hear (and help out) people with Tropez
  17. and Maui cards, since I think the driver can support those cards as
  18. well. 
  19. Finally, the driver has not been tested (or even compiled) as a static
  20. (non-modular) part of the kernel. Alan Cox's good work in modularizing
  21. OSS/Free for Linux makes this rather unnecessary.
  22. Some Questions
  23. --------------
  24. **********************************************************************
  25. 0) What does this driver do that the maui driver did not ?
  26. **********************************************************************
  27. * can fully initialize a WaveFront card from cold boot - no DOS 
  28.           utilities needed
  29. * working patch/sample/program loading and unloading (the maui
  30.       driver didn't document how to make this work, and assumed
  31.       user-level preparation of the patch data for writing
  32.       to the board. ick.)
  33. * full user-level access to all WaveFront commands
  34. * for the Tropez Plus, (primitive) control of the YSS225 FX processor
  35. * Virtual MIDI mode supported - 2 MIDI devices accessible via the
  36.           WaveFront's MPU401/UART emulation. One
  37.   accesses the WaveFront synth, the other accesses the
  38.   external MIDI connector. Full MIDI read/write semantics
  39.   for both devices.
  40. * OSS-compliant /dev/sequencer interface for the WaveFront synth,
  41.   including native and GUS-format patch downloading.
  42. * semi-intelligent patch management (prototypical at this point)
  43. **********************************************************************
  44. 1) What to do about MIDI interfaces ?
  45. **********************************************************************
  46. The Tropez Plus (and perhaps other WF cards) can in theory support up
  47. to 2 physical MIDI interfaces. One of these is connected to the
  48. ICS2115 chip (the WaveFront synth itself) and is controlled by
  49. MPU/UART-401 emulation code running as part of the WaveFront OS.  The
  50. other is controlled by the CS4232 chip present on the board. However,
  51. physical access to the CS4232 connector is difficult, and it is
  52. unlikely (though not impossible) that you will want to use it.
  53. An older version of this driver introduced an additional kernel config
  54. variable which controlled whether or not the CS4232 MIDI interface was
  55. configured. Because of Alan Cox's work on modularizing the sound
  56. drivers, and now backporting them to 2.0.34 kernels, there seems to be
  57. little reason to support "static" configuration variables, and so this
  58. has been abandoned in favor of *only* module parameters. Specifying
  59. "mpuio" and "mpuirq" for the cs4232 parameter will result in the
  60. CS4232 MIDI interface being configured; leaving them unspecified will
  61. leave it unconfigured (and thus unusable).
  62. BTW, I have heard from one Tropez+ user that the CS4232 interface is
  63. more reliable than the ICS2115 one. I have had no problems with the
  64. latter, and I don't have the right cable to test the former one
  65. out. Reports welcome.
  66. **********************************************************************
  67. 2) Why does line XXX of the code look like this .... ?
  68. **********************************************************************
  69. Either because its not finished yet, or because you're a better coder
  70. than I am, or because you don't understand some aspect of how the card
  71. or the code works. 
  72. I absolutely welcome comments, criticisms and suggestions about the
  73. design and implementation of the driver. 
  74. **********************************************************************
  75. 3) What files are included ?
  76. **********************************************************************
  77.    drivers/sound/README.wavefront       -- this file
  78.    drivers/sound/wavefront.patch -- patches for the 2.1.106 sound drivers
  79.    needed to make the rest of this work
  80.            DO NOT USE IF YOU'VE APPLIED THEM 
  81.    BEFORE, OR HAVE 2.1.109 OR ABOVE
  82.    drivers/sound/wavfront.c             -- the driver
  83.    drivers/sound/ys225.h                -- data declarations for FX config
  84.    drivers/sound/ys225.c                -- data definitions for FX config
  85.    drivers/sound/wf_midi.c              -- the "uart401" driver 
  86.                   to support virtual MIDI mode.
  87.    include/wavefront.h                  -- the header file
  88.    Documentation/sound/Tropez+          -- short docs on configuration
  89. **********************************************************************
  90. 4) How do I compile/install/use it ?
  91. **********************************************************************
  92. PART ONE: install the source code into your sound driver directory
  93.   cd <top-of-your-2.1.106-code-base-e.g.-/usr/src/linux>
  94.   tar -zxvf <where-you-put/wavefront.tar.gz>
  95. PART TWO: apply the patches
  96.      DO THIS ONLY IF YOU HAVE A KERNEL VERSION BELOW 2.1.109
  97.      AND HAVE NOT ALREADY INSTALLED THE PATCH(ES).
  98.   cd drivers/sound
  99.   patch < wavefront.patch
  100. PART THREE: configure your kernel
  101.   cd <top of your kernel tree>
  102.   make xconfig (or whichever config option you use)
  103.          - choose YES for Sound Support       
  104.          - choose MODULE (M) for OSS Sound Modules
  105.          - choose MODULE(M) to YM3812/OPL3 support
  106.  - choose MODULE(M) for WaveFront support
  107.  - choose MODULE(M) for CS4232 support
  108.  - choose "N" for everything else (unless you have other
  109.       soundcards you want support for)
  110.    make dep
  111.    make boot
  112.    .
  113.    .
  114.    .
  115.    <whatever you normally do for a kernel install>
  116.    make modules
  117.    .
  118.    .
  119.    .
  120.    make modules_install
  121. Here's my autoconf.h SOUND section:
  122. /*
  123.  * Sound
  124.  */
  125. #define CONFIG_SOUND 1
  126. #undef  CONFIG_SOUND_OSS
  127. #define CONFIG_SOUND_OSS_MODULE 1
  128. #undef  CONFIG_SOUND_PAS
  129. #undef  CONFIG_SOUND_SB
  130. #undef  CONFIG_SOUND_ADLIB
  131. #undef  CONFIG_SOUND_GUS
  132. #undef  CONFIG_SOUND_MPU401
  133. #undef  CONFIG_SOUND_PSS
  134. #undef  CONFIG_SOUND_MSS
  135. #undef  CONFIG_SOUND_SSCAPE
  136. #undef  CONFIG_SOUND_TRIX
  137. #undef  CONFIG_SOUND_MAD16
  138. #undef  CONFIG_SOUND_WAVEFRONT
  139. #define CONFIG_SOUND_WAVEFRONT_MODULE 1
  140. #undef  CONFIG_SOUND_CS4232
  141. #define CONFIG_SOUND_CS4232_MODULE 1
  142. #undef  CONFIG_SOUND_MAUI
  143. #undef  CONFIG_SOUND_SGALAXY
  144. #undef  CONFIG_SOUND_OPL3SA1
  145. #undef  CONFIG_SOUND_SOFTOSS
  146. #undef  CONFIG_SOUND_YM3812
  147. #define CONFIG_SOUND_YM3812_MODULE 1
  148. #undef  CONFIG_SOUND_VMIDI
  149. #undef  CONFIG_SOUND_UART6850
  150. /*
  151.  * Additional low level sound drivers
  152.  */
  153. #undef  CONFIG_LOWLEVEL_SOUND
  154. ************************************************************
  155. 6) How do I configure my card ?
  156. ************************************************************
  157. You need to edit /etc/modules.conf. Here's mine (edited to show the
  158. relevant details):
  159.   # Sound system
  160.   alias char-major-14 wavefront
  161.   alias synth0 wavefront
  162.   alias mixer0 cs4232
  163.   alias audio0 cs4232
  164.   pre-install wavefront modprobe "-k" "cs4232"
  165.   post-install wavefront modprobe "-k" "opl3"
  166.   options wavefront io=0x200 irq=9
  167.   options cs4232 synthirq=9 synthio=0x200 io=0x530 irq=5 dma=1 dma2=0
  168.   options opl3 io=0x388
  169. Things to note: 
  170.        the wavefront options "io" and "irq" ***MUST*** match the "synthio"
  171.        and "synthirq" cs4232 options.
  172.        you can do without the opl3 module if you don't
  173.        want to use the OPL/[34] FM synth on the soundcard
  174.        the opl3 io parameter is conventionally not adjustable.
  175.        In theory, any not-in-use IO port address would work, but
  176.        just use 0x388 and stick with the crowd.
  177. **********************************************************************
  178. 7) What about firmware ?
  179. **********************************************************************
  180. Turtle Beach have not given me permission to distribute their firmware
  181. for the ICS2115. However, if you have a WaveFront card, then you
  182. almost certainly have the firmware, and if not, its freely available
  183. on their website, at:
  184.    http://www.tbeach.com/tbs/downloads/scardsdown.htm#tropezplus 
  185. The file is called WFOS2001.MOT (for the Tropez+).
  186. This driver, however, doesn't use the pure firmware as distributed,
  187. but instead relies on a somewhat processed form of it. You can
  188. generate this very easily. Following an idea from Andrew Veliath's
  189. Pinnacle driver, the following flex program will generate the
  190. processed version:
  191. ---- cut here -------------------------
  192. %option main
  193. %%
  194. ^S[28].*r$ printf ("%c%.*s", yyleng-1,yyleng-1,yytext);
  195. <<EOF>> { fputc ('', stdout); return; }
  196. n {} 
  197. .  {}
  198. ---- cut here -------------------------
  199. To use it, put the above in file (say, ws.l) compile it like this:
  200.       shell> flex -ows.c ws.l
  201.       shell> cc -o ws ws.c
  202.       
  203. and then use it like this:
  204.     ws < my-copy-of-the-oswf.mot-file > /etc/sound/wavefront.os
  205. If you put it somewhere else, you'll always have to use the wf_ospath
  206. module parameter (see below) or alter the source code.
  207. **********************************************************************
  208. 7) How do I get it working ?
  209. **********************************************************************
  210. Optionally, you can reboot with the "new" kernel (even though the only
  211. changes have really been made to a module).
  212. Then, as root do:
  213.      modprobe wavefront
  214. You should get something like this in /var/log/messages:
  215.     WaveFront: firmware 1.20 already loaded.
  216. or 
  217.     WaveFront: no response to firmware probe, assume raw.
  218. then:
  219.     WaveFront: waiting for memory configuration ...
  220.     WaveFront: hardware version 1.64
  221.     WaveFront: available DRAM 8191k
  222.     WaveFront: 332 samples used (266 real, 13 aliases, 53 multi), 180 empty
  223.     WaveFront: 128 programs slots in use
  224.     WaveFront: 256 patch slots filled, 142 in use
  225. The whole process takes about 16 seconds, the longest waits being
  226. after reporting the hardware version (during the firmware download),
  227. and after reporting program status (during patch status inquiry).  Its
  228. shorter (about 10 secs) if the firmware is already loaded (i.e. only
  229. warm reboots since the last firmware load).
  230. The "available DRAM" line will vary depending on how much added RAM
  231. your card has. Mine has 8MB.
  232. To check basically functionality, use play(1) or splay(1) to send a
  233. .WAV or other audio file through the audio portion. Then use playmidi
  234. to play a General MIDI file. Try the "-D 0" to hear the
  235. difference between sending MIDI to the WaveFront and using the OPL/3,
  236. which is the default (I think ...). If you have an external synth(s)
  237. hooked to the soundcard, you can use "-e" to route to the
  238. external synth(s) (in theory, -D 1 should work as well, but I think
  239. there is a bug in playmidi which prevents this from doing what it
  240. should). 
  241. **********************************************************************
  242. 8) What are the module parameters ?
  243. **********************************************************************
  244. Its best to read wavefront.c for this, but here is a summary:
  245. integers: 
  246.   wf_raw  - if set, ignore apparent presence of firmware
  247.     loaded onto the ICS2115, reset the whole
  248.     board, and initialize it from scratch. (default = 0)
  249.           fx_raw  - if set, always initialize the YSS225 processor
  250.     on the Tropez plus. (default = 1)
  251.           < The next 4 are basically for kernel hackers to allow
  252.     tweaking the driver for testing purposes. >     
  253.           wait_usecs        -  loop timer used when waiting for
  254.        status conditions on the board. 
  255.        The default is 150.
  256.           debug_default    - debugging flags. See sound/wavefront.h
  257.      for WF_DEBUG_* values. Default is zero.
  258.      Setting this allows you to debug the
  259.      driver during module installation.
  260. strings:
  261.   ospath - path to get to the pre-processed OS firmware.
  262.     (default: /etc/sound/wavefront.os)
  263. **********************************************************************
  264. 9) Who should I contact if I have problems?
  265. **********************************************************************
  266. Just me: Paul Barton-Davis <pbd@op.net>