[Kos-dev] encore une IRQ (2) !

Christophe kos-dev@enix.org
Mon, 4 Feb 2002 13:09:47 +0100


Je penses que compte tenu de son expérience, il a sans aucun doute raison.
Car moi-même n'ayant pas eu à avoir à jongler avec le bit nIEN, je n'ai donc
pas eu ce genre de problème. Il se peut effectivement que le fait de toucher
à ce registre ait cette conséquence néfaste de te générer un INTRQ
indésirable. Dans ce cas il faut effectivement intercepter cet IRQ et
l'ignorer (quoique je me dis qu'il devrait y avoir un moyen de lui tordre le
cou). Je note que tu mets un usleep(1), soit environ 1µS d'attente alors que
le temps minimum exigé est de 400ns, tu devrais éviter ça.

Bon, dernier essai, masque l'interruption avant et enlève usleep(1) après
l'écriture sur le registre Device Control et fais une boucle de lecture dans
le registre Status jusqu'à ce que le contrôleur soit prêt puis démasque
l'interruption : as-t-on toujours la génération de l'IRQ ?


Donc, il faut effectivement sélectionner d'abord le device

----- Original Message -----
From: <thomas.petazzoni@enix.org>
To: <kos-dev@enix.org>
Sent: Monday, February 04, 2002 12:39 PM
Subject: [Kos-dev] encore une IRQ (2) !


> salut,
>
> au fait, en meme temps j'etudie le driver ATA de FreeBSD, et je suis
> en contact avec son auteur. Et lui m'indique que c'est tout a fait
> normal de se chopper des IRQs comme ca.
>
> Ce qu'il a fait c'est que son controlleur peut etre dans plusieurs
> etats, dont ATA_IDLE. Dans ce cas, le handler d'IRQ ne fait rien. Par
> contre si on a l'etat ATA_READ ou ATA_WRITE par exemple, alors en cas
> d'IRQ le handler fera quelque chose.
>
> Donc d'apres lui cette generation d'IRQ c'est normal. Extrait du mail
> :
>
> MOI :
> > That's strange because what I want to do by setting nIEN to 1 is to
> > disactivate the generation of IRQ on command completion. So why does
> > this write generate an IRQ ?
>
> LUI :
> Well, this is normal for some controllers, and that is why you
> need to have code in the interrupt function to dicard such
> interrupts. This is part of why I have the ATA_IDLE etc states
> in my driver, so I can ignore "unwanted" interrupts.
>
>
> Qu'en penses-tu ?
> --
> PETAZZONI Thomas - thomas.petazzoni@enix.org - UIN : 34937744
> (Perso)      http://www.enix.org/~thomas/
> (KOS)        http://kos.enix.org/
> (Club LinUT) http://club-linut.enix.org
>
> _______________________________________________
> Kos-dev mailing list
> Kos-dev@doors.enix.org
> http://the-doors.enix.org/cgi-bin/mailman/listinfo/kos-dev
>