  Gravis ULTRASOUND Plug n' Play Mini-Como
  J. F. Mammet, mammet@diva.univ-mlv.fr
  Traducido por Iaki Martnez Dez, imd@redestb.es
  Versin 0.01, 27 de Marzo de 1996

  Particularidades de configuracin de la Gravis ULTRASOUND Plug n' Play
  bajo Linux.

  1.  Introduccin

  Como fan de las tarjetas de sonido Gravis desde hace mucho tiempo, me
  alegr mucho cuando finalmente Gravis sac algo nuevo. Haba planeado
  comprar la nueva Ultrasound desde haca tiempo, y la compr con un
  mega de RAM tan pronto estuvo disponible aqu en Francia.

  La instal, y qu sorpresa, mi BIOS plug and play la detect, e
  incluso windows95 (lo siento, bromas estpidas sobre marketing95 hoy
  no). As que pens que la tarjeta funcionara en cualquier sitio ...

  Entonces arranqu Linux, no tuve problemas, la tarjeta fue detectada
  como una GUS rev 3.4, lo cual me pareci estar bien, pero no lo estaba
  ...

  Algn tiempo despus prob Quake, y no sonaba. Entonces le el manual
  del juego, y v que Quake estaba usando algn DMA no estndar que la
  GUS no poda proporcionar ...

  Pens que no era bueno para mi, tener tan buena tarjeta y no tener
  sonido en tan genial juego (la versin dos necesita la emulacin de
  sound blaster, y yo incluso prefiero sin sonido que eso).

  As que, Ahora qu? debera esperar hasta Mayo para un driver de GUS
  PnP?  Debera comprar una sound blaster (buag)? Que ocurrir en el
  prximo episodio de Expediente X?

  2.  GUS MAX?

  Entonces volv al dos, y jugu un poco con el programa iwinit, mir lo
  que el programa deca cuando usaba el modo verbose y vi algo como
  CODEC direccin 32c ...

  Qu? La GUS PnP tiene un Codec CS4231/CS1848 como la GUS MAX?

  Entonces mir en mis cintas de backup buscando los drivers de Gravis
  viejos, tom el ultrinit 2.31 de ellos y tecle:

       set ultrasnd=220,6,5,5,5
       set ultra16=32c,0,0,1,0
       set ultradir=c:\ultrapnp
       ultrinit

  y descubr que:  Ultrasound MAX detectada !!!

  Genial!, pens entonces, slo tengo que poner esto antes de cargar
  Linux y tendr soporte GUS MAX, y finalmente conseguir que el
  j****o Quake funcione con sonido!!

  No fue tan fcil 8(

  3.  Investigacin del Driver

  No soy un buen programador, pero se suficiente C para observar los
  fuentes de un driver y ver qu pasa (especialmente cuando est bien
  comentado).

  Mir el fichero gus_card.c, pero no encontr nada interesante.
  Entonces mir en gus_wave.c, y v esto:

         * Value 255 means pre-3.7 which don't have mixer.
         * Values 5 thru 9 mean v3.7 which has a ICS2101 mixer.
         * 10 and above is GUS MAX which has the CS4231 codec/mixer.

  que significa:

         * el Valor 255 se refiere a pre-3.7 la cual no tiene mixer.
         * los Valores 5 a 9 se refiere a v3.7 los cuales tienen un mixer ICS2101.
         * 10 y superior es GUS MAX la cual tiene el codec/mixer CS4231.

  Genial!, solo tengo que forzar el valor a 10, y funcionar ...  No!

  haciendo esto hara que el kernel pensase que se tiene una GUS MAX,
  pero no reconocer el chip Codec!

  Por lo que tena que forzar la deteccin del Codec tambin ...

  No fue tan fcil encontrar qu hacer, pero finalmente descubr una
  posisbilidad: En el fichero  gus_wave.c, haba una lnea:

       if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))

  lo que significaba que el kernel estaba intentando auto-detectar el
  chip AD1848, pens que no lo podra detectar con la GUS PnP, y estaba
  en lo cierto! Simplemente cambi la lnea a:

       if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))

  recompil el kernel, y hey, Quake funcion de maravilla!!!

  Por cierto hay una etiqueta gus_pnp_flag en gus_card.c, pero no he
  notado ninguna diferencia con ella activada o desactivada 8( (quizs
  hice algo mal)
  4.  Qu debera hacer exactamente?

  No olvidar que esto no funcionara si no hay RAM en la GUS ...

  Primero de todo no usar LILO nunca ms, ya que es necesario
  inicializar la GUS PnP antes de ejecutar Linux ... (hacer un fdisk
  /mbr bajo dos, ver otros COMOs para ms detalles en esto).

  En el autoexec.bat, poner:

       set interwave=c:\ultrapnp\iw.ini
       c:\ultrapnp\iwinit
       set ultrasnd=220,6,5,5,5 (o cualquiera que se quiera o necesite)
       set ultra16=32c,0,0,1,0
       set ultradir=c:\ultrapnp
       c:\ultrapnp\ultrinit

  Se puede encontrar ultrinit en el fichero gus00045.zip, en cualquier
  site de Gravis ...

  Bajo Linux, abrir el fichero gus_wave.c, en
  /usr/src/linux/drivers/sound (o en cualquier otro sitio).  Buscar la
  lnea:

       if (val == 255 || val < 5) (line 3049 in 3.5b7)

  y una lnea antes, aadir:

       val=10;

  Entonces buscar la lnea:

       if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) (line 3085)

  y cambiarla a:

       if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))

  recompilar el kernel con soporte de GUS y GUS MAX.
  Mi configuracin es:

       BASE = 220
       IRQ = 5
       DMA1 = 6
       DMA2 = 5
       DMABUF = 65536

  Disfruta del sonido!!!

  5.  Crditos

  Yo us el kernel 1.3.75 para modificar, pero debera funcionar en
  cualquier 1.3.70 y superior (por favor escribirme si hay algn
  problema)

  Este mini-COMO esta escrito por:

    e-mail : mammet@diva.univ-mlv.fr

    www    : http://diva.univ-mlv.fr/~mammet/

  Se puede conseguir la ltima versin de este documento de mi pgina
  WEB en
  http://diva.univ-mlv.fr/~mammet/linux.html (pronto disponible)

  No asumo ninguna responsabilidad si se pierden informaciones o
  cualquier error que pudiese ocurrir (incluso fastidiar win95).

  Si se encuentra algn error tipogrfico (o incluso errores tcnicos
  8-p), escribirme libremente, soy slo un pobre francs perdido en un
  mundo anglosajn, intentando hablar el idioma de forma comprensible.

  6.  Anexo: El INSFLUG

  El INSFLUG forma parte del grupo internacional Linux Documentation
  Project, encargndose de las traducciones al castellano de los Howtos
  (Comos), as como la produccin de documentos originales en aquellos
  casos en los que no existe anlogo en ingls.

  En el INSFLUG se orienta preferentemente a la traduccin de documentos
  breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
  :) ), etc.

  Dirjase a la sede del INSFLUG para ms informacin al respecto.

  En la sede del INSFLUG encontrar siempre las ltimas versiones de las
  traducciones:  www.insflug.org. Asegrese de comprobar cul es la
  ltima versin disponible en el Insflug antes de bajar un documento de
  un servidor rplica.

  Se proporciona tambin una lista de los servidores rplica (mirror)
  del Insflug ms cercanos a Vd., e informacin relativa a otros
  recursos en castellano.

  Francisco Jos Montilla, pacopepe@insflug.org.

