Interfaz de Programación del
Controlador MCA
Alan Cox
[email protected]
David Weinehall
Chris Beauregard
Interfaz de Programación del Controlador MCA
por Alan Cox, David Weinehall, y Chris Beauregard
Copyright © 2000 por Alan CoxDavid WeinehallChris Beauregard
Esta documentación es software libre; puedes redistrubuirla y/o modificarla bajo los términos de la GNU General Public License tal como ha sido
publicada por la Free Software Foundation; por la versión 2 de la licencia, o (a tu elección) por cualquier versión posterior.
Este programa es distribuido con la esperanza de que sea útil, pero SIN NINGUNA GARANTIA; sin incluso la garantía implicada de
COMERCIABILIDAD o ADECUACCION PARA UN PROPOSITO PARTICULAR. Para más detalles refiérase a la GNU General Public
License.
Debería de haber recibido una copia de la GNU General Public License con este programa; si no es así, escriba a la Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Para más detalles véase el archivo COPYING en la distribución fuente de Linux.
Tabla de contenidos
1. Introducción ...........................................................................................................................................1
2. Bugs Conocidos Y Suposiciones ...........................................................................................................2
3. Funciones Públicas Suministradas.......................................................................................................3
mca_find_adapter ...............................................................................................................................3
mca_find_unused_adapter..................................................................................................................3
mca_read_stored_pos.........................................................................................................................4
mca_read_pos.....................................................................................................................................5
mca_write_pos ...................................................................................................................................5
mca_set_adapter_name ......................................................................................................................6
mca_set_adapter_procfn ....................................................................................................................7
mca_is_adapter_used .........................................................................................................................8
mca_mark_as_used ............................................................................................................................9
mca_mark_as_unused ........................................................................................................................9
mca_get_adapter_name....................................................................................................................10
mca_isadapter...................................................................................................................................11
mca_isenabled..................................................................................................................................11
4. Funciones DMA Suministradas..........................................................................................................13
mca_enable_dma..............................................................................................................................13
mca_disable_dma.............................................................................................................................13
mca_set_dma_addr...........................................................................................................................14
mca_get_dma_addr ..........................................................................................................................14
mca_set_dma_count.........................................................................................................................15
mca_get_dma_residue......................................................................................................................16
mca_set_dma_io...............................................................................................................................16
mca_set_dma_mode.........................................................................................................................17
5. Sobre la Traducción.............................................................................................................................19
iii
Capítulo 1. Introducción
Las funciones del bus MCA suministran una interfaz generalizada para encontrar tarjetas del bus MCA,
pedirles un controlador, y para leer y manipular los registros POS sin ser conscientes de los entresijos de
la placa madre o de cierta magia profunda específica de los dispositivos de la placa.
La interfaz básica de los dispositivos del bus MCA es el slot. Cada slot está numerado y los números de
slots virtuales son asignados a los dispositivos internos. Realmente el usar pci_dev como con otros buses
no tiene sentido en los contextos MCA, ya que los recursos del bus MCA requieren una interpretación
específica de la tarjeta.
Finalmente, las funciones del bus MCA suministran un conjunto paralelo de funciones DMA parecidas a
las funciones DMA del bus ISA, tan cerradamente como es posible, aunque también soportan las
funcionalidades adicionales DMA en las controladoras del bus MCA.
1
Capítulo 2. Bugs Conocidos Y Suposiciones
Ninguno.
2
Capítulo 3. Funciones Públicas Suministradas
mca_find_adapter
Nombre
mca_find_adapter — busca adaptadores
Sinopsis
int mca_find_adapter (int id, int start);
Argumentos
Identificación del bus MCA en el que buscar
id
start
slot de comienzo
Descripción
Busca en la configuración del MCA adaptadores que se correspondan con la identificación de 16 bits. La
primera vez debería de ser llamado para que empiece en cero, y entonces las llamadas posteriores que se
harán pasando el valor de retorno de la llamada previa hasta que sea retornado MCA_NOTFOUND.
Los adaptadores deshabilitados no son reportados.
mca_find_unused_adapter
Nombre
mca_find_unused_adapter — busca adaptadores sin usar
3
Sinopsis
int mca_find_unused_adapter (int id, int start);
Capítulo 3. Funciones Públicas Suministradas
Argumentos
Identificación del bus MCA en el que buscar
id
start
slot de comienzo
Descripción
Busca en la configuración del MCA adaptadores que se correspondan con la identificación de 16 bits. La
primera vez debería de ser llamado para que empiece en cero, y entonces las llamadas posteriores que se
harán pasando el valor de retorno de la llamada previa hasta que sea retornado MCA_NOTFOUND.
Los adaptadores que han sido reclamados por controladores o que están deshabilitados no son reportados.
Esta función permite a un controlador buscar tarjetas adicionales cuando quizás alguien ya las controle.
mca_read_stored_pos
Nombre
mca_read_stored_pos — lee los registros POS de los datos de arranque
Sinopsis
unsigned char mca_read_stored_pos (int slot, int reg);
Argumentos
slot
número de slot desde donde leer
4
Capítulo 3. Funciones Públicas Suministradas
reg
registro desde donde leer
Descripción
Obtiene un valor POS que fue almacenado en tiempo de arranque por el núcleo cuando este buscó en el
espacio del MCA. Es retornado el valor del registro. Registros perdidos o inválidos devuelven un 0.
mca_read_pos
Nombre
mca_read_pos — lee el registro POS de la tarjeta
Sinopsis
unsigned char mca_read_pos (int slot, int reg);
Argumentos
número de slot desde donde leer
slot
reg
registro de donde leer
Descripción
Obtiene un valor POS directamente del hardware para obtener el valor actual. Esto es mucho más lento
que mca_read_stored_pos y quizás no sea llamado desde el contexto de interrupciones. Maneja la magia
profunda requerida para los dispositivos en la placa de forma transparente.
5
mca_write_pos
Capítulo 3. Funciones Públicas Suministradas
Nombre
mca_write_pos — lee el registro POS de la tarjeta
Sinopsis
void mca_write_pos (int slot, int reg, unsigned char byte);
slot
reg
byte
Argumentos
número de slot desde donde leer
registro de donde leer
byte a escrigir en los registros POS
Descripción
Almacena un valor POS directamente al hardware. Normalmente no necesitarías usar esta función y
deberías de tener un muy buen conocimiento del bus MCA antes de hacerlo. Realizando esto de forma
incorrecta puedes dañar el hardware.
Esta función quizás no sea usada desde un contexto de interrupciones.
Nota que esto es técnicamente Algo Malo, como dice el equipo técnico de IBM, sólo deberías de
establecer valores POS a través de sus utilidades. En todo caso, algunos dispositivos como el 3c523
recomiendan que les escribas algunos datos para asegurarte de que la configuración es consistente. Yo
diría que IBM está en lo cierto, pero me gusta que mis controladores funcionen.
Esta función no puede chequear para ver si múltiples dispositivos están con los mismos recursos, por lo
tanto quizás veas humo mágico si alguien se lía.
6
mca_set_adapter_name
Capítulo 3. Funciones Públicas Suministradas
Nombre
mca_set_adapter_name — Establece la descripción de la tarjeta
Sinopsis
void mca_set_adapter_name (int slot, char* name);
Argumentos
slot a nombrar
slot
name
cadena de texto para el nombre
Descripción
Esta función establece el nombre reportado a través de /proc para este slot adaptador. Esto es únicamente
para información de usuario. Estableciendo un nombre borra cualquier nombre previo.
mca_set_adapter_procfn
Nombre
mca_set_adapter_procfn — Establece la retrollamada /proc
Sinopsis
void mca_set_adapter_procfn (int slot,
Comentarios de: doc manual linux controlador mca (0)
No hay comentarios