[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ATA ident command



Hi all,

I have found the ATA driver's handling of the ident command seems a 
little suspect but I did not want to change the driver without some 
feedback.

If you look around line 1470 in the ata.c driver the LBA sectors is 
passed to the rtems_disk_create_phys call. This value comes from the 
handling of the ident table returned from the drive (line 1419). I found 
the value returned by qemu for its drive was word reversed. I now have this:

      ATA_DEV_INFO(ctrl_minor, dev).lba_sectors =
          (CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_USR_SECS1]) << 16) +
           CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_USR_SECS0]);

and it is working with qemu.

If any one has an ATA standard handy could they please check if this 
change is ok ?

Regards
Chris