[PATCH] davinci: tnetv107x: fix register indexing for GPIOs numbers > 31

Hirosh Dabui hirosh at dabui.de
Sat Jan 29 06:45:49 EST 2011


ok-super!
On 01/28/2011 10:47 PM, Kevin Hilman wrote:
> Hirosh Dabui<hirosh.dabui at snom.com>  writes:
>
>    
>> This patch fix a bug in the register indexing for GPIOs numbers>   31
>> to get the relevant hardware registers of tnetv107x to control the GPIOs.
>>
>> In the structure tnetv107x_gpio_regs:
>>
>> struct tnetv107x_gpio_regs {
>>              u32     idver;
>>              u32     data_in[3];
>>              u32     data_out[3];
>>              u32     direction[3];
>>              u32     enable[3];
>> };
>>
>> The GPIO hardware register addresses of tnetv107x are stored.
>> The chip implements 3 registers of each entity to serve 96 GPIOs,
>> each register provides a subset of 32 GPIOs.
>> The driver provides these macros: gpio_reg_set_bit, gpio_reg_get_bit
>> and gpio_reg_clear_bit.
>>
>> The bug implied the use of macros to access the relevant hardware
>> register e.g. the driver code used the macro like this:
>> 'gpio_reg_clear_bit(&reg->data_out, gpio)'
>>
>> But it has to be used like this:
>> 'gpio_reg_clear_bit(reg->data_out, gpio)'.
>>
>> The different results are shown here:
>> -&reg->data_out + 1 (it will add the full array size of data_out i.e. 12 bytes)
>> - reg->data_out + 1 (it will increment only the size of data_out i.e. only 4 bytes)
>>
>> Acked-by: Cyril Chemparathy<cyril at ti.com>
>> Signed-off-by: Hirosh Dabui<hirosh.dabui at snom.com>
>>      
> Thanks, applied and queuing for 2.6.39.
>
> Kevin
>    




More information about the linux-arm-kernel mailing list