if (rs485conf->flags & SER_RS485_RTS_ON_SEND) {
                        cr3 &= ~USART_CR3_DEP;
                        rs485conf->flags &= ~SER_RS485_RTS_AFTER_SEND;
+                       mctrl_gpio_set(stm32_port->gpios,
+                                       stm32_port->port.mctrl & ~TIOCM_RTS);
                } else {
                        cr3 |= USART_CR3_DEP;
                        rs485conf->flags |= SER_RS485_RTS_AFTER_SEND;
+                       mctrl_gpio_set(stm32_port->gpios,
+                                       stm32_port->port.mctrl | TIOCM_RTS);
                }
 
                writel_relaxed(cr3, port->membase + ofs->cr3);
                if (rs485conf->flags & SER_RS485_RTS_ON_SEND) {
                        cr3 &= ~USART_CR3_DEP;
                        rs485conf->flags &= ~SER_RS485_RTS_AFTER_SEND;
+                       mctrl_gpio_set(stm32_port->gpios,
+                                       stm32_port->port.mctrl & ~TIOCM_RTS);
                } else {
                        cr3 |= USART_CR3_DEP;
                        rs485conf->flags |= SER_RS485_RTS_AFTER_SEND;
+                       mctrl_gpio_set(stm32_port->gpios,
+                                       stm32_port->port.mctrl | TIOCM_RTS);
                }
 
        } else {