I've just done some investigating, possibly duplicating work,
and dug into the IDE spinup issue.  My conclusion, the Linux kernel is
buggy.

IDE spinup is trivial.  From my testing all you have to do
is wait until the ide busy bit is clear, and then send
commands.  IDE drives do all of the hard work for you.  

The tricky part with IDE is to get a reliable drive detection
routine, as this was not an initial design requirement.

I believe I have accomplished that as well.  What I do.  After the
busy bit is clear send the IDE channel a software reset.  Then I read
the signature bytes from each drive, and if the signature is correct
I have found an IDE drive.  I confirm this by read/writing some
registers and veirfying the contents stick.  This will require wider
testing to confirm it really is reliable.

After you know where you have drives running
IDENTIFY_DEVICE/IDENTIFY_PACKET_DEVICE where appropriate is still
needed to get the drive into a usable state.  But having confirmed
already that the drive exists this is much easier.

Anyway after I do a little more code cleanup I will check this code
into the LinuxBIOS tree.

What I do know.  My code handles IDE drive spinup when the kernel
fails, and the kernel doesn't have any trouble after my code has run.

Eric

Reply via email to