Problem with ATA driver on pc386
Angelo Fraietta
afraiett at bigpond.net.au
Tue Jul 6 23:54:20 UTC 2004
Eugeny S. Mints wrote:
> Hi Angelo!
>
> Ok, let start from the beginning. I developed the the code based on ATA
> spec revision mentioned in the header in ata.c file. The revision is
> quite old.
>
> First command executed for a IDE controller is DEVICE DIAGNOSTIC
> command. Return codes other then 0x81 or 0x01 are vendor specific and
> probably are not handled properly by the current ata.c driver. There is
> no special return code for "master (device 0) not present". THere is
> "device 0 failed" only. One potential is that your IDE controller uses
> some vendor specific code for "master not present". Other is that your
> IDE controller cann't handle "no master" case and doesn't set BSY bit
> properly and DIAGNOSTIC command never terminates.
>
> I would like to help you with the issue but I need more details on the
> failure. Could you please check first that:
>
I changed the conditionals on the 2 do - while loops to include
ata_process_request_on_init_phase(rtems_device_minor_number ctrl_minor,
ata_req_t *areq)
{
unsigned16 byte;/* emphasize that only 8 low bits is
meaningful */
<snip>
do {
ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
&byte);
printk("Start ide_controller_read_register 1 Byte = %x\r\n", byte);
} while (((byte & IDE_REGISTER_STATUS_BSY) ||
(!(byte & IDE_REGISTER_STATUS_DRDY))) && !(byte &
IDE_REGISTER_STATUS_DRDY));
<snip>
do {
ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
&byte);
printk("Start ide_controller_read_register 2 Byte = %x\r\n", byte);
} while ((byte & IDE_REGISTER_STATUS_BSY)&& !(byte &
IDE_REGISTER_STATUS_DRDY));
This stopped from freezing. This however, was on the DIMMPC with the On
Board IDE enabled. When I plugged the PC104 in, the first one looped
indefinately with a byte value of 0. I disabled the primary IDE port in
the bios, which gave me the result as per the DIMMPC - Byte returns zero.
In performing theses tests, I beliee that the secondary IDE port is not
tested. Am I correct? If so, what would I need to do to test and mount it?
--
Angelo Fraietta
PO Box 859
Hamilton NSW 2303
Home Page
http://www.users.bigpond.com/angelo_f/
There are those who seek knowledge for the sake of knowledge - that is
CURIOSITY
There are those who seek knowledge to be known by others - that is VANITY
There are those who seek knowledge in order to serve - that is LOVE
Bernard of Clairvaux (1090 - 1153)
More information about the users
mailing list