
2 May
2012
2 May
'12
8:40 p.m.
On 05/02/2012 01:16 AM, Minkyu Kang wrote:
Dear Marek,
On 2 May 2012 11:44, Marek Vasut marex@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;
?
-Scott