[U-Boot] [PATCH 1/2 v4] ARM : Add GPIO Driver and IOMUX definition for S3C2440

Scott Wood scottwood at freescale.com
Wed May 2 22:21:56 CEST 2012


On 05/02/2012 03:16 PM, Gabriel Huau wrote:
> On Wed, May 02, 2012 at 01:40:35PM -0500, Scott Wood wrote:
>> On 05/02/2012 01:16 AM, Minkyu Kang wrote:
>>> Dear Marek,
>>>
>>> On 2 May 2012 11:44, Marek Vasut <marex at denx.de> wrote:
>>>>>> +int gpio_set_value(unsigned gpio, int value)
>>>>>> +{
>>>>>> +       unsigned l = readl(GPIO_FULLPORT(gpio));
>>>>>> +       unsigned port = GPIO_FULLPORT(gpio);
>>>>>> +
>>>>>> +       /*
>>>>>> +        * All GPIO Port have a configuration on
>>>>>> +        * 2 bits excepted the first GPIO (A) which
>>>>>> +        * have only 1 bit of configuration.
>>>>>> +        */
>>>>>> +       if (value)
>>>>>> +               if (!GPIO_PORT(gpio))
>>>>>> +                       l |= (0x1 << GPIO_BIT(gpio));
>>>>>> +               else
>>>>>> +                       l |= (0x3 << GPIO_BIT(gpio));
>>>>>> +       else
>>>>>> +               if (!GPIO_PORT(gpio))
>>>>>> +                       l &= ~(0x1 << GPIO_BIT(gpio));
>>>>>> +               else
>>>>>> +                       l &= ~(0x3 << GPIO_BIT(gpio));
>>>>>
>>>>> Need brace at this if..else statement.
>>>>
>>>> I wanted to ask why, but ... C isn't python, good point ;-)
>>>
>>> As I know, it's a rule of u-boot.. maybe. :)
>>
>> It is a U-Boot rule (multi-line if/loop body), and also it's good to
>> avoid the ambiguous "if/if/else" construct, but wouldn't this be better as:
>>
>> if (GPIO_PORT(gpio))
>> 	bit = 1 << GPIO_BIT(gpio);
>> else
>> 	bit = 3 << GPIO_BIT(gpio);
>>
>> if (value)
>> 	l |= bit;
>> else
>> 	l &= ~bit;
>>
>> ?
>>
> 
> For multi-line, we should maybe patch the checkpatch.pl to check this
> statement. But, indeed, I will do the modification of Scott.

...with the "1" and "3" swapped in the first if/else, of course. :-P

-Scott



More information about the U-Boot mailing list