[Kos-dev] [ATA] Alternate Status Register -> IRQ ?

kos-dev@enix.org kos-dev@enix.org
04 Feb 2002 10:05:20 +0100


salut,

ca commence a marcher de mieux en mieux. mais j'ai encore un
soucis. lorsque l'IRQ 14 est activee, est que je met le bit nIEN a 1
dans le Alternate Status Register, et bien je me choppe une
IRQ. Est-ce normal ?

Comment faire pour ne pas me chopper une IRQ ? J'ai essaye de mask
l'IRQ avant puis de la demasker apres l'ecriture, mais elle arrive
juste au moment ou je demaske (normal).

Comment faire ?

voici le bout de code

  printk("Trying primary\n");
  init_ide(0x1F0);

  printk("Trying secondary\n");
  init_ide(0x170);

  register_irq_handler(14, ide_handler);

  /* select drive */
  printk("Selecting drive\n");
  outb(ATA_D_IBM | device, 0x1F0 + ATA_DRIVE);
  usleep(1);

  printk("Writing status\n");
  outb(ATA_A_IDS | ATA_A_4BIT, 0x1F0 + ATA_ALTPORT);
  usleep(1);

  ==> ICI BLING IRQ 14 :( <==
  printk("Status for drive is : 0x%x\n", inb(0x1F0 + ATA_STATUS));

  printk("Sencind cmd\n");
  outb(ATA_C_ATA_IDENTIFY, 0x1F0 + ATA_CMD);

Est-ce normal ? Avez-vous une solution ?

Thomas
-- 
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