serial: stm32: Clear prev values before setting RTS delays
The code lacks clearing of previous DEAT/DEDT values. Thus, changing
values on the fly results in garbage delays tending towards the maximum
value as more and more bits are ORed together. (Leaving RS485 mode
would have cleared the old values though).
Fixes: 1bcda09d29 ("serial: stm32: add support for RS485 hardware control mode")
Cc: stable@kernel.org
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20220627150753.34510-1-ilpo.jarvinen@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Valentin Caron <valentin.caron@foss.st.com>
Change-Id: I2f1f2c0675180f65c524948a9103d03abf8f4ee8
Reviewed-on: https://gerrit.st.com/c/mpu/oe/st/linux-stm32/+/272029
Reviewed-by: CITOOLS <MDG-smet-aci-reviews@list.st.com>
Reviewed-by: CIBUILD <MDG-smet-aci-builds@list.st.com>
Reviewed-by: Eric FOURMONT <eric.fourmont-ext@st.com>
Domain-Review: Amelie DELAUNAY <amelie.delaunay@foss.st.com>
This commit is contained in:
committed by
Eric Fourmont
parent
ef0c423932
commit
7f29f81666
@ -110,6 +110,8 @@ static void stm32_usart_config_reg_rs485(u32 *cr1, u32 *cr3, u32 baud,
|
||||
*cr3 |= USART_CR3_DEM;
|
||||
over8 = *cr1 & USART_CR1_OVER8;
|
||||
|
||||
*cr1 &= ~(USART_CR1_DEDT_MASK | USART_CR1_DEAT_MASK);
|
||||
|
||||
/* Assertion time */
|
||||
tmp = stm32_usart_config_delay_rs485(cr1, delay_ADE, baud, over8,
|
||||
rs485_deat_dedt_max, rs485conf);
|
||||
|
||||
Reference in New Issue
Block a user