Unconfigure GPIO pins when closing a serial port to prevent back effects from back-powering on the TX pin. From Kosma Moczek
This commit is contained in:
parent
dd8bb71cbc
commit
292d2a1c1f
@ -1594,6 +1594,38 @@ static void up_shutdown(struct uart_dev_s *dev)
|
|||||||
regval = up_serialin(priv, STM32_USART_CR1_OFFSET);
|
regval = up_serialin(priv, STM32_USART_CR1_OFFSET);
|
||||||
regval &= ~(USART_CR1_UE | USART_CR1_TE | USART_CR1_RE);
|
regval &= ~(USART_CR1_UE | USART_CR1_TE | USART_CR1_RE);
|
||||||
up_serialout(priv, STM32_USART_CR1_OFFSET, regval);
|
up_serialout(priv, STM32_USART_CR1_OFFSET, regval);
|
||||||
|
|
||||||
|
/* Release pins. "If the serial-attached device is powered down, the TX
|
||||||
|
* pin causes back-powering, potentially confusing the device to the point
|
||||||
|
* of complete lock-up."
|
||||||
|
*
|
||||||
|
* REVISIT: Is unconfiguring the pins appropriate for all device? If not,
|
||||||
|
* then this may need to be a configuration option.
|
||||||
|
*/
|
||||||
|
|
||||||
|
stm32_unconfiggpio(priv->tx_gpio);
|
||||||
|
stm32_unconfiggpio(priv->rx_gpio);
|
||||||
|
|
||||||
|
#ifdef CONFIG_SERIAL_OFLOWCONTROL
|
||||||
|
if (priv->cts_gpio != 0)
|
||||||
|
{
|
||||||
|
stm32_unconfiggpio(priv->cts_gpio);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SERIAL_IFLOWCONTROL
|
||||||
|
if (priv->rts_gpio != 0)
|
||||||
|
{
|
||||||
|
stm32_unconfiggpio(priv->rts_gpio);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_RS485
|
||||||
|
if (priv->rs485_dir_gpio != 0)
|
||||||
|
{
|
||||||
|
stm32_unconfiggpio(priv->rs485_dir_gpio);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user