Un controlador OSS/Lite para la familia de tarjetas ESS Maestro Zach Brown, Diciembre 1999 Estado y disponibilidad del controlador --------------------------------------- La versión más reciente del controlador estará disponible en la siguiente dirección: http://people.redhat.com/zab/maestro/ Probaré y mantendré la versión estable más reciente del controlador en las dos líneas del núcleo, la estable y la inestable. Familia del Chip ESS Maestro ---------------------------- Hay 3 variantes principales del chip de sonido ESS Maestro PCI. La primera es la Maestro 1. Fue producida originalmente por Platform Tech como el 'AGOGO'. Puede ser reconocido por la identificación PCI 0x1285 de Platform Tech con 0x0100 como Identificación de dispositivo. Fue puesta en algunas tarjetas de sonido y en algunos portátiles. ESS compró el diseño y lo relanzó como el Maestro 2. Este empieza su marcaje con la identificación de ESS 0x125D y la identificación del 'año' del dispositivo. El Maestro 2 muestra 0x1968 mientras que el Maestro 2e tiene 0x1978. Las diferentes familias del Maestro son generalmente idénticas en cuanto compete al controlador. No toca las partes del DSP que difieren (Aunque podría para síntesis FM). Comportamiento del controlador OSS ---------------------------------- Este controlador OSS exporta /dev/mixer y /dev/dsp a las aplicaciones, y respeta mayormente la especificación OSS. Este controlador no se registra en /dev/sndstat, por lo que no espere que aparezca información ahí. El dispositivo /dev/dsp exportado se comporta casi como se espera. La reproducción está soportada en todos los formatos. 8/16bit estéreo/mono desde 8khz a 48khz, y usa mmap() para la reproducción. La Captura/Grabación está limitada debido a las rarezas del hardware Maestro. Sólo se puede grabar en 16 bits estéreo. Para la grabación el maestro usa memoria intermedia estéreo no entrelazada por lo que un mmap() de la entrada de datos no acaba en una memoria intermedia de datos LRLR(izquierda/derecha/izquierda/derecha). Por lo tanto no se permite hacer un mmap() de la memoria intermedia de lectura hata que esta se limpie. /dev/mixer es un interfaz al códec AC'97 en el Maestro. Es recomendable anotar que hay una gran variedad de AC'97s que pueden estar soldados al Maestro. Cuál se ha usado corresponde sólamente al implementador del hardware. Esto sólo debe ser visible al usuario por la presencia, o falta de, los selectores de 'Bajos' y 'Agudos' en el mezclador. No todos los AC'97s los tienen. El controlador no soporta reproducción MIDI o FM por el momento. Típicamente el Maestro está soldado a un chip MPU MIDI, pero algunas implementaciones hardware no lo están. Necesitamos una lista blanca de implementaciones hardware que tengan el MIDI soldado antes de que podamos soportarlo de forma segura. Compilar e Instalar ------------------- Con la inclusión de los controladores en el núcleo, la compilación y la instalación es parecida a la de la mayoría de los controladores de sonido modulares OSS/Lite. La compilación del controlador de activa desde la variable CONFIG_SOUND_MAESTRO en el sistema de configuración. Puede ser modular o enlazado estáticamente. Si es modular debe ser instalado en el sistema con el resto de los módulos del núcleo. Normalmente estos estarán en algún sitio en /lib/modules/. Si está usando el sonido modular OSS/Lite y quiere usar por defecto el chip maestro debería también añadir 'alias sound maestro' al fichero de configuración de módulos. (Normalmente /etc/conf.modules) Como este es un dispositivo PCI, el módulo no necesita ser informado de ningún recurso de E/S o IRQ a usar. Él lo coge del sistema. A veces, en PCs malos, la BIOS falla en reservar los recursos para el maestro. Esto generará un mensaje del núcleo como este: maestro: PCI subsystem reports IRQ 0, this might not be correct. Si esto pasa seguramente el chip de sonido no funcionará correctamente. Para resolver esto tiene que bucear en su BIOS (normalmente pulsando la "tecla caliente" en el arranque) y figurarse la magia requerida para que la BIOS recompense al maestro con una IRQ libre. Esta operación es increiblemente específica de cada sistema, por lo que esta sólo en esto. A veces la magia está en configuraciones como 'Sistema Operativo PNP'. Hay muy pocas opciones en el controlador. Una es 'debug' que le dirá al controlador que imprima información mínima de depuración cuando se ejecute. Esta se puede recoger con dmesg o a través del demonio klogd. La otra opción, más interesante, es 'dsps_order'. Normalmente en la carga del controlador se registrará sólo un dispositivo /dev/dsp. El parámetro 'dsps_order' permite que se asignen más dispositivos, en potencias de dos. Se pueden registrar hasta 4 dispositivos (dsps_order=2). Estos dispositivos actúan como unidades completamente distintas y usan canales separados en el maestro. .. más detalles .. ------------------ drivers/sound/maestro.c contiene comentarios y espero que expliquen la implementación del maestro. "Traducido para el proyecto NuLies por Gorka Olaizola Sánchez "