ATA ident command
Chris Johns
chrisj at rtems.org
Thu Aug 27 10:42:45 UTC 2009
Thomas Doerfler wrote:
> 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.
>
Excellent. I will commit the change. Interesting it has been in RTEMS
for this amount of time.
Thanks.
Chris
> wkr,
> Thomas.
>
> 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 rtems.org
>> http://www.rtems.org/mailman/listinfo/rtems-users
>
>
More information about the users
mailing list