[U-Boot] [PATCH] M28: GPIO pin validity check added

Robert Deliën Robert at delien.nl
Wed Nov 23 22:24:12 CET 2011


>> +#define MX28_BANK0_PINS		29
>> +#define MX28_BANK1_PINS		32
>> +#define MX28_BANK2_PINS		28
>> +#define MX28_BANK3_PINS		31
>> +#define MX28_BANK4_PINS		21
>> +
>> +#define MX23_BANK0_PINS		32
>> +#define MX23_BANK1_PINS		31
>> +#define MX23_BANK2_PINS		32
>> +
> 
> Do we need this in the header file?

Not really, but I hate magic numbers and macros are free.

>> +	/* check bank and pin number for validity */
>> +	if (gpio_invalid(gpio)) {
> 
> gpio_is_valid() might be a better name?

Yes, it is. In fact, I used that name at first. But it's non-statice, accessible externally, so it should return -EINVAL in case the pin is not valid and 0 in case it is. That would lead to this weird construction when actually using it:
…
if (gpio_is_valid(gp)) {
	printf("Pin is invalid\n");
}
...

>> +		printf("gpio: invalid pin %u\n", gpio);
>> +		return (-1);
> 
> return -EINVAL;

Did that too initially, but U-Boot produced an error about not exiting the shell when returned that value. Since the rest of the code returns -1 on error everywhere, I decided to copy that.

> Why not move it above, since the ifdef CONFIG_MX28 etc. are already there and 
> define it twice. It'd be clearer.

Agreed; I'll probably slip that in later, with another patch. 

> Also, it's quite obvious those are pin counts, 
> so why introduce these defines and not put only plain numbers here. The 
> MX28_BANK0_PINS etc are used only here anyway.

You're right, but I just don't like magic numbers.

By the way: I started testing gpio on my evk board, but I didn't see any pins being toggled. Not even before all of my patches. Is this part finished/tested?

Robert.


More information about the U-Boot mailing list