Re: [PATCH] gpio: zynq: Report gpio direction at boot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 28. 11. 18 18:14, Brandon Maier wrote:
> The Zynq's gpios can be configured by the bootloader. But Linux will
> erroneously report all gpios as inputs unless we implement
> get_direction().
> 
> Signed-off-by: Brandon Maier <brandon.maier@xxxxxxxxxxxxxxxxxxx>

You email here doesn't correspond with email you used for sending this
patch. You should fix that.

> ---
>  drivers/gpio/gpio-zynq.c | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c
> index 3f5fcdd5a429..6bb914ef83c7 100644
> --- a/drivers/gpio/gpio-zynq.c
> +++ b/drivers/gpio/gpio-zynq.c
> @@ -357,6 +357,28 @@ static int zynq_gpio_dir_out(struct gpio_chip *chip, unsigned int pin,
>  	return 0;
>  }
>  
> +/**
> + * zynq_gpio_get_direction - Read the direction of the specified GPIO pin
> + * @chip:	gpio_chip instance to be worked on
> + * @pin:	gpio pin number within the device
> + *
> + * This function returns the direction of the specified GPIO.
> + *
> + * Return: 0 for output, 1 for input
> + */
> +static int zynq_gpio_get_direction(struct gpio_chip *chip, unsigned int pin)
> +{
> +	u32 reg;
> +	unsigned int bank_num, bank_pin_num;
> +	struct zynq_gpio *gpio = gpiochip_get_data(chip);
> +
> +	zynq_gpio_get_bank_pin(pin, &bank_num, &bank_pin_num, gpio);
> +
> +	reg = readl_relaxed(gpio->base_addr + ZYNQ_GPIO_DIRM_OFFSET(bank_num));
> +
> +	return !(reg & BIT(bank_pin_num));
> +}
> +
>  /**
>   * zynq_gpio_irq_mask - Disable the interrupts for a gpio pin
>   * @irq_data:	per irq and chip data passed down to chip functions
> @@ -827,6 +849,7 @@ static int zynq_gpio_probe(struct platform_device *pdev)
>  	chip->free = zynq_gpio_free;
>  	chip->direction_input = zynq_gpio_dir_in;
>  	chip->direction_output = zynq_gpio_dir_out;
> +	chip->get_direction = zynq_gpio_get_direction;
>  	chip->base = of_alias_get_id(pdev->dev.of_node, "gpio");
>  	chip->ngpio = gpio->p_data->ngpio;
>  
> 

When email is fixed feel free to add my
Tested-by: Michal Simek <michal.simek@xxxxxxxxxx>

Thanks,
Michal



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux