On Fri, Sep 29, 2023 at 12:12:41AM +0200, Lino Sanfilippo wrote:
From: Lino Sanfilippo l.sanfilippo@kunbus.com
Both the imx and stm32 driver set the rx-during-tx GPIO in the rs485_config() function by means of gpiod_set_value(). Since rs485_config() is called with the port lock held, this can be an problem in case that setting the GPIO line can sleep (e.g. if a GPIO expander is used which is connected via SPI or I2C).
Avoid this issue by setting the GPIO outside of the port lock in the serial core and by using gpiod_set_value_cansleep() instead of gpiod_set_value().
Since now both the term and the rx-during-tx GPIO are set within the serial core use a common function uart_set_rs485_gpios() to set both.
With moving it into the serial core setting the rx-during-tx GPIO is now automatically done for all drivers that support such a GPIO.
Cc: stable@vger.kernel.org Signed-off-by: Lino Sanfilippo l.sanfilippo@kunbus.com
You cc: stable on many of these, but do not provide a "Fixes:" tag showing just how far back they should go. Can you do that so that we have a hint as to what to do here?
thanks,
greg k-h