[U-Boot] [PATCH 03/17] sunxi: gpio: Add support for gpio pins on the AXP209 pmic

Ian Campbell
2014-12-28T09:34:28Z

On Wed, 2014-12-24 at 20:06 +0100, Hans de Goede wrote:
> @@ -27,6 +32,17 @@ enum axp209_reg {
>
> #define AXP209_POWEROFF (1 << 7)
>
> +#define AXP209_GPIO_OUTPUT_LOW 0x00
> +#define AXP209_GPIO_OUTPUT_HIGH 0x01
> +#define AXP209_GPIO_INPUT 0x02
> +
> +#define AXP209_GPIO_OUTPUT_LOW 0x00
> +#define AXP209_GPIO_OUTPUT_HIGH 0x01

Aren't these LOW+HIGH ones duplicated?

Also, they lack the helpful comments which you added to the GPIO3 ones.

I'd be included to add a /* GPIO3 is different from the others */ just
here too (also: "sigh" re h/w inconsistency...).

> +#define AXP209_GPIO3_OUTPUT_LOW 0x00 /* Drive pin low, Output mode */
> +#define AXP209_GPIO3_OUTPUT_HIGH 0x02 /* Float pin, Output mode */

Is a floating output really a thing or is this a cut-and-paste-o?

> +#define AXP209_GPIO3_INPUT 0x06 /* Float pin, Input mode */
> +
> +int axp_gpio_direction_output(unsigned int pin, unsigned int val)
> +{
> + u8 reg = axp209_get_gpio_ctrl_reg(pin);
> +
> + if (val) {
> + val = (pin == 3) ? AXP209_GPIO3_OUTPUT_HIGH :
> + AXP209_GPIO_OUTPUT_HIGH;
> + } else {
> + val = (pin == 3) ? AXP209_GPIO3_OUTPUT_LOW :
> + AXP209_GPIO_OUTPUT_LOW;

Both OUTPUT_LOW values happen to be the same, although I could see why
you might want to do it this way for consistency.

Ian.