[PATCH v2 1/9] serial: core: only get RS485 termination GPIO if supported

Andy Shevchenko andy.shevchenko at gmail.com
Sun Jul 3 11:27:39 PDT 2022


On Sun, Jul 3, 2022 at 7:02 PM Lino Sanfilippo <LinoSanfilippo at gmx.de> wrote:
>
> From: Lino Sanfilippo <l.sanfilippo at kunbus.com>
>
> In uart_get_rs485_mode() only try to get a termination GPIO if RS485 bus
> termination is supported by the driver. This prevents from allocating
> and holding a GPIO descriptor for the drivers lifetimg that will never be

lifetiming

> used.

...

>         port->rs485_term_gpio = devm_gpiod_get_optional(dev, "rs485-term",
>                                                         GPIOD_OUT_LOW);
> +
> +       if (port->rs485_term_gpio &&

This check is incorrect. Either you need to move that after error
checking (that's what I personally prefer), or use !IS_ERR_OR_NULL().

> +           !(port->rs485_supported->flags & SER_RS485_TERMINATE_BUS)) {
> +               dev_warn(port->dev,
> +                       "%s (%d): RS485 termination gpio not supported by driver\n",
> +                       port->name, port->line);
> +               devm_gpiod_put(dev, port->rs485_term_gpio);
> +               port->rs485_term_gpio = NULL;
> +       }
> +
>         if (IS_ERR(port->rs485_term_gpio)) {
>                 ret = PTR_ERR(port->rs485_term_gpio);
>                 port->rs485_term_gpio = NULL;


-- 
With Best Regards,
Andy Shevchenko



More information about the linux-arm-kernel mailing list