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