ATA ident command

Thomas Doerfler Thomas.Doerfler at
Thu Aug 27 10:41:24 UTC 2009

Hi Chris,

I have no access to the ATA spec, but the CF cards use the same
interface. In the identify response, some multi-word fields exist e.g.:

7-8 XXXXh 4 Number of sectors per card (Word 7 = MSW, Word 8 = LSW)


57-58 XXXXh 4 Current capacity in sectors (LBAs)(Word 57 = LSW, Word 58
= MSW)


60-61 XXXXh 4 Total number of sectors addressable in LBA Mode

In U-Boot, this field is read with LSW at address 60 and MSW at address
61, so this conforms to YOUR change.

So I think you are correct.


Chris Johns wrote:
> 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
> _______________________________________________
> rtems-users mailing list
> rtems-users at


embedded brains GmbH
Thomas Doerfler        Obere Lagerstrasse 30
D-82178 Puchheim       Germany
email: Thomas.Doerfler at
Phone: +49-89-18908079-2
Fax:   +49-89-18908079-9
PGP:   Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

More information about the users mailing list