[U-Boot] [PATCH 3/4] gpio: atmel: add gpio common API support

Andreas Bießmann andreas.devel at googlemail.com
Thu Aug 22 08:34:46 CEST 2013


Hi Bo,

On 22.08.13 05:21, Bo Shen wrote:
> Hi Andreas,
> 
> On 8/21/2013 23:14, Andreas Bießmann wrote:
>> On 08/13/2013 08:38 AM, Bo Shen wrote:
>>> add gpio common API support for gpio command
>>>
>>> Signed-off-by: Bo Shen <voice.shen at atmel.com>
>>> ---
>>>   drivers/gpio/at91_gpio.c |   43
>>> +++++++++++++++++++++++++++++++++++++++++++
>>>   1 file changed, 43 insertions(+)
>>>
>>> diff --git a/drivers/gpio/at91_gpio.c b/drivers/gpio/at91_gpio.c
>>> index 15f396f..3de0844 100644
>>> --- a/drivers/gpio/at91_gpio.c
>>> +++ b/drivers/gpio/at91_gpio.c
>>> @@ -363,3 +363,46 @@ int at91_get_pio_value(unsigned port, unsigned pin)
>>>
>>>       return pdsr != 0;
>>>   }
>>> +
>>> +/* Common GPIO API */
>>> +
>>> +#define at91_gpio_to_port(gpio)        (gpio / 32)
>>> +#define at91_gpio_to_pin(gpio)        (gpio % 32)
>>> +
>>> +int gpio_request(unsigned gpio, const char *label)
>>> +{
>>> +    return 0;
>>> +}
>>> +
>>> +int gpio_free(unsigned gpio)
>>> +{
>>> +    return 0;
>>> +}
>>> +
>>> +int gpio_direction_input(unsigned gpio)
>>> +{
>>> +    at91_set_pio_input(at91_gpio_to_port(gpio),
>>> +               at91_gpio_to_pin(gpio), 0);
>>> +    return 0;
>>> +}
>>> +
>>> +int gpio_direction_output(unsigned gpio, int value)
>>> +{
>>> +    at91_set_pio_output(at91_gpio_to_port(gpio),
>>> +                at91_gpio_to_pin(gpio), value);
>>> +    return 0;
>>> +}
>>> +
>>> +int gpio_get_value(unsigned gpio)
>>> +{
>>> +    return (int) at91_get_pio_value(at91_gpio_to_port(gpio),
>>> +                    at91_gpio_to_pin(gpio));
>>
>> why cast to int here?
> 
> Actually no need, as the at91_get_pio_value() return value is int.
> I will remove the cast in next version.

I could change this also when applying.

>>> +}
>>> +
>>> +int gpio_set_value(unsigned gpio, int value)
>>> +{
>>> +    at91_set_pio_value(at91_gpio_to_port(gpio),
>>> +               at91_gpio_to_pin(gpio), value);
>>> +
>>> +    return 0;
>>> +}
>>>
>>
>> Great, I love this. But wasn't there some define for generic GPIO?
> 
> I am not fully get your meaning, what you mean "define for generic
> GPIO"? define gpio pin number (?)

My fault, I thought there is some CONFIG_XXX for the 'generic GPIO API'
(gpio_set_value/gpio_get_value/gpio_direction_input/...). It seems there
is no such define, at91 gpio did just miss the time when this API was
introduced.

I'm fine if you just send a v2 of the 1/4 patch. I can remove the cast
in here and will _not_ apply 2/4 cause it breaks boards.

Best regards

Andreas Bießmann


More information about the U-Boot mailing list