Re: [PATCH v5 1/3] tty/serial: Add GPIOLIB helpers for controlling modem lines

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

 



Hello.

Понедельник,  3 марта 2014, 12:11 +01:00 от Richard Genoud <noreply.rgenoud@xxxxxxxxx>:
> This patch add some helpers to control modem lines (CTS/RTS/DSR...) via
> GPIO.
> This will be useful for many boards which have a serial controller that
> only handle CTS/RTS pins (or even just RX/TX).
> 
> Signed-off-by: Richard Genoud <richard.genoud@xxxxxxxxx>
...
> +struct mctrl_gpios *mctrl_gpio_init(struct device *dev, unsigned int idx)
> +{
> +	struct mctrl_gpios *gpios;
> +	enum mctrl_gpio_idx i;
> +	int err;
> +
> +	gpios = devm_kzalloc(dev, sizeof(*gpios), GFP_KERNEL);
> +	if (!gpios)
> +		goto out;

if (!gpios)
  return ERR_PTR(-ENOMEM);


> +	for (i = 0; i < UART_GPIO_MAX; i++) {
> +		gpios->gpio[i] = devm_gpiod_get_index(dev,
> +						      mctrl_gpios_desc[i].name,
> +						      idx);
> +
> +		/*
> +		 * The GPIOs are maybe not all filled,
> +		 * this is not an error.
> +		 */
> +		if (IS_ERR_OR_NULL(gpios->gpio[i]))
> +			continue;
> +
> +		if (mctrl_gpios_desc[i].dir_out)
> +			err = gpiod_direction_output(gpios->gpio[i], 0);
> +		else
> +			err = gpiod_direction_input(gpios->gpio[i]);
> +		if (err) {
> +			dev_warn(dev, "Unable to set direction for %s GPIO",
> +				 mctrl_gpios_desc[i].name);
> +			devm_gpiod_put(dev, gpios->gpio[i]);
> +			gpios->gpio[i] = NULL;
> +		}
> +	}
> +
> +out:
> +	return gpios;
> +}
> +EXPORT_SYMBOL_GPL(mctrl_gpio_init);
> +
> +void mctrl_gpio_free(struct device *dev, struct mctrl_gpios *gpios)
> +{
> +	enum mctrl_gpio_idx i;
> +
> +	if (!gpios)
> +		return;
> +
> +	for (i = 0; i < UART_GPIO_MAX; i++)
> +		if (!IS_ERR_OR_NULL(gpios->gpio[i])) {
> +			devm_gpiod_put(dev, gpios->gpio[i]);
> +			gpios->gpio[i] = NULL;

No need to NULL this variable. Instead, you should NULL
"gpios" entirely at the end of this function.

> +		}
> +	devm_kfree(dev, gpios);

gpios = NULL;
So this will indicate that its no more valid.

> +}
...

Thanks.
---
��.n��������+%������w��{.n�����{��ǫ����{ay�ʇڙ���f���h������_�(�階�ݢj"��������G����?���&��





[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux