Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 21:40 Mon 11 Feb     , michael wrote:
>   
>> Add ide support to the arm cpu. Tested on arm little endian
>> machine. Include #define __io in config board file.
>>
>> Signed-off-by: Michael Trimarchi <[EMAIL PROTECTED]>
>> ---
>>
>> diff --git a/common/cmd_ide.c b/common/cmd_ide.c
>> index c38be4f..e507c15 100644
>> --- a/common/cmd_ide.c
>> +++ b/common/cmd_ide.c
>> @@ -934,7 +934,14 @@ output_data(int dev, ulong *sect_buf, int words)
>>  static void
>>  output_data(int dev, ulong *sect_buf, int words)
>>  {
>> +#ifndef __ARM__
>>      outsw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words<<1);
>> +#else
>> +    int i = words;
>>     
> Why do you initialise "i" with words and re-initialize it at 0 in for?
>   
Is a mistake
>> +    u16 *buf = (u16 *) sect_buf;
>> +    for (i = 0; i < (words << 1); i++, buf++) 
>>     
>                                                  ^
> not needed space
>   
ok
>> +            outw(ATA_CURR_BASE(dev) + ATA_DATA_REG, buf);
>> +#endif
>>  }
>>  #endif      /* __PPC__ */
>>  
>> @@ -992,7 +999,14 @@ input_data(int dev, ulong *sect_buf, int words)
>>  static void
>>  input_data(int dev, ulong *sect_buf, int words)
>>  {
>> +#ifndef __ARM__
>>      insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words << 1);
>> +#else
>> +    int i;
>> +    volatile u16 *buf = (u16 *) sect_buf;
>> +    for(i = 0; i < (words << 1); i++, buf++)
>> +            *buf = inw(ATA_CURR_BASE(dev) + ATA_DATA_REG);
>>     
> Why don"t you use readw and writew?
>   
I'm not sure if inw resolve endianes issues in arm bigendian

regards
Michael


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users

Reply via email to