On Tue, May 06, 2003 at 03:02:21PM -0400, Adam Sulmicki wrote:
grumbe. This code should correct initalization as per ATA-3 specs. what hard disk is this?
It's a 20GB drive from Fujitsu.
I'm thinking to replace this with a 2.5" drive. Should I avoid Fujitsu next time? :)
heh. dunno. It would be interesting to see why it fails. Is that b/c the loop times out or is that b/c it does not confirm to ATA specs, or something else.
unfortunatelly I'm at the present time busy with other things nor I have the hardware to test.
I inserted a call to wait_for_notbusy prior to any tests, and it worked. :) I think this is what etherboot is doing (with appropreate timeout). In my case, the timeout is infinite, but even if I changed it to probe 4 devices, no visible delay was observed.
(this is not a diff, cvs server seems too busy to give me a diff...)
// Disable interrupts outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+ // Wait for device to spin up + ata_wait_for_notbusy(iobase1);
// Look for device outb(iobase1+ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0); outb(iobase1+ATA_CB_SC, 0x55);
-- Takeshi