[Kos-dev] contrôleurs ATA tertiaire et quaternaire

Thomas Petazzoni kos-dev@enix.org
26 Feb 2002 13:37:07 +0100


"Christophe" <christophe.avoinne@laposte.net> writes:

> Il se trouve que je poss=E8de une carte Promise UltraDMA 100 de Matro=
x : =E7a me
> permet d'avoir en tout pour tout jusq'=E0 8 p=E9riph=E9rique ATA/ATAP=
I au lieu de
> 4. Je pourrais soit ajouter du code pour g=E9rer cette carte ou cr=E9=
er un autre
> module compatible avec l'ide existant. Qu'en penses-tu Thomas ?

Je suis tout a fait d'accord pour integrer de nouvelles choses dans le
driver IDE, mais pour le moment j'aimerais continuer a assurer son
developpement. En effet, il reste pas mal de choses a voir que
j'aimerais bien faire moi meme ;)

> Une petite option =E0 ajouter dans l'ide.c serait la possibilit=E9 de=
 d=E9finir un
> callback avec un cookie lors d'un transfert =E0 partir ou vers le con=
tr=F4leur.
> Si ce callback est nul, alors on utilise le transfert habituel du sec=
teur ou
> du groupe de secteur, sinon on appelle ce callback pour qu'il g=E8re =
lui-m=EAme
> ce transfert. Je vois =E7a juste comme une option.

Je comprends pas bien ton histoire de callback. Peut etre que cela a
avoir avec l'utilisation des IRQ.

Pour le IDE je vois trois modes de fonctionnement :

- polled mode : on envoie la commande, puis on fait une attente (plus
  ou moins active) tant que le bit BSY est a 1. Une fois qu'il est a
  0, on peut lire les donnees (en verifiant DRQ et ERROR bien sur)
- IRQ mode : on envoie la commande. la fonction retourne. on peut
  alors faire autre chose. et quand l'IRQ arrive on peut lire les
  donnees (mais la c'est toujours du inw/outw).
- DMA mode : on envoie la commande, et le DMA place ce qu'il faut la
  ou il faut dans la memoire (sans avoir besoin du proc)

Pour le moment c'est le premier mode qui est utilise (le plus
simple). Je suis en train de reflechir a un syst=E8me de requetes (a
base de wait queues) pour pouvoir utiliser la deuxieme
possibilite. Peut etre c'est de ca que tu veux parler ?

Thomas
--=20
PETAZZONI Thomas - thomas.petazzoni@enix.org - UIN : 34937744
(Perso)      http://www.enix.org/~thomas/
(KOS)        http://kos.enix.org/=20
(Club LinUT) http://club-linut.enix.org