cvs commit: src/sys/dev/disk/ata ata-all.c ata-disk.c

Matthew Dillon dillon at
Sun Dec 28 19:43:05 PST 2003

dillon      2003/12/28 19:42:43 PST

DragonFly src repository

  Modified files:
    sys/dev/disk/ata     ata-all.c ata-disk.c 
  FreeBSD-5.x removed the 'read interrupt arrived early' check code, for
  undocumented reasons.  As far as I can tell, only the ATA_S_READY bit needs
  to be set when a read interrupt arrives for a PIO read operation so reduce
  the test from ATA_S_READY|ATA_S_DSC|ATA_S_DRQ to just ATA_S_READY.
  Change the ATA RESET timing.  Instead of polling up to 310000 times in 100uS
  intervals poll 3100 times in 10000uS intervals.  Note that 5.x polls 310
  times in 100ms intervals, which is silly (an unnecessarily long polling
  Add a mandatory 50ms delay after all BUSY bits have been released.  Some
  ATA devices release BUSY before they are ready to accept commands.  Note
  that the ATA code waits 100ms after releasing RESET, before checking BUSY,
  which is probably overkill, but this does not cover the mandatory delay
  that must occur after BUSY is observed to have been released.
  (This patch primarily removes bogus 'read interrupt arrived early' warnings
  on the console for things like CF card IDE adapters and other badly designed
  IDE devices).
  Revision  Changes    Path
  1.10      +8 -3      src/sys/dev/disk/ata/ata-all.c
  1.9       +4 -3      src/sys/dev/disk/ata/ata-disk.c

More information about the Commits mailing list