[Kos-dev] IDE Eclairage :)

Thomas Petazzoni thomas.petazzoni at enix.org
Thu Apr 28 19:10:40 CEST 2005


Salut,

Laurent a écrit :

> Salut a tous, j'ai pas mal regarde vos sources et plus particulierement
> la partie IDE qui m'interesse vraiment.

Très bien ! ;-)

> Pourquoi est on oblige de passer par la partie 1?
> Pourquoi ne pas "reseter" directement le controleur
> et regarder le status des devices?

Finalement, je ne pense pas qu'on soit obligé de passer par la partie 1.
En fait, la partie 1 est théoriquement suffisante pour savoir si les
devices sont présents, ce sont des petites recherches dans le code IDE
de FreeBSD qui m'ont fait ajouté la partie 2. Il est possible que tout
ça fonctionne très bien sans la partie 1, tu peux tester.

Le problème avec IDE, c'est que le fait que ça marche sur une machine
(avec un contrôleur IDE donné) n'implique pas que ça marchera sur toutes
les machines. Par exemple, le code actuel ne détectait pas correctement
les devices sur feu mon portable.

> /* send reset */
> outb(ATA_A_nIEN | ATA_A_RESET, ctrl->ioaddr + ATA_DEVICE_CONTROL);
> udelay(1);
> outb(ATA_A_nIEN, ctrl->ioaddr + ATA_DEVICE_CONTROL);
> udelay(1);
> 
> Quel interet de desactiver 2 fois a la suite les interruptions?

La première commande effectue un RESET du contrôleur (qui va peut être
modifier la configuration de celui-ci pour en remettre une par défaut).
La deuxième reconfigure le contrôleur pour qu'il n'utilise pas les
interruptions.

> outb(ATA_A_nIEN, ctrl->ioaddr + ATA_DEVICE_CONTROL);
> udelay(1);
> inb(ctrl->ioaddr + ATA_ERROR);
> 
> Quel est l'interet de ce inb? vu qu'on ne recupere aucune valeur?

Bonne question ;-) Peut-être le contrôleur veut-il absolument que ce
registre soit lu pour fonctionner correctement. Ou alors, c'est celui
qui a écrit le code qui est stupide (moi !).

> A remplacer par ctrl->devices[IDE_SLAVE].type = IDE_DEV_ATA;

Très juste ! Là c'est clairement le développeur (encore moi !) qui a
fait du paté.

N'hésites pas à proposer un patch pour le pilote IDE avec tes
corrections ou améliorations !

Bonne soirée,

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni at enix.org
http://thomas.enix.org - Jabber: thomas.petazzoni at jabber.dk
KOS: http://kos.enix.org/ - SOS: http://sos.enix.org
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
Url : http://the-doors.enix.org/pipermail/kos-dev/attachments/20050428/cd804570/signature.pgp


More information about the Kos-dev mailing list