On Tue, Oct 28, 2003 at 11:14:24AM -0600, Richard Smith wrote: > > >I thought ERROR bit checking (reading status port) acts like a delay, > >so I added a 400ns delay after pio_set_registers of the new driver. > >The new driver finally worked. > > > >It works when once Linux is booted then reboot into FILO. > > > >Maybe I have to re-enable some commands in the initialization procedure.
I got it work just now, both for cold boot and warm boot cases. The missing command was INITIALIZE PARAMETERS. I wasted many hours to realize that I had done it wrong. :) > >But I've made too many modifications to the new driver, I'm not sure > >which is really needed. This work is to be done. I'll release 0.4.1 (bugfix-only release) when it's done. > The fact that you can boot linux and then reboot into FILO and it > works really suggests to me that you are working with a some sort of > flaky IDE interface. So don't expect anything to be logical. I've > worked with lots of embedded type devices that exhibit this symptom. > They just take a while to come out of a cold boot or even from a warm > reset. I suspected everything and did whatever I could do. In this case, after all, it was me that was flaky, not the drive or IF. One thing I'll have to examine is the delay I had to insert between issuing command and reading status. It might be requirement of ATA spec. > Hard drives have a special problem in that they must calibrate for both > mechanical head drift and ambient temperature before they access the > disk _and_ its got to be pretty precise. I'm always amazed at the > precision required by a HD. > > What happens if you just do a 5 second delay on cold boot before you > access the drive? My guess is that it will work. If so then you just > need to find out what the minimum delay is before you can access the drive. Did it. I access to the drive from the command prompt, so I can make any delay before hitting Enter key. Once I waited for the drive to become quiet completely, but it still failed, so I decided some initialization was missing. > You might lark onto a special init sequence that works but I suspect it > will be drive specific. Your best bet to come up with a universial > solution is probally a user configurable delay for drives that don't > handle the BSY flag properly. Eric had already added the delay option (#ifdef) to (the ancestor of) the driver, though it is hardcoded 31 sec (following ATA spec). -- Takeshi _______________________________________________ Linuxbios mailing list [EMAIL PROTECTED] http://www.clustermatic.org/mailman/listinfo/linuxbios

