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

Ian Campbell ijc at hellion.org.uk
Sun Dec 28 10:34:28 CET 2014


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.



More information about the U-Boot mailing list