Re: [PATCH v4 11/14] serial: 8250_mxpcie: add break support for RS485 using MUEx50 features
From: Jiri Slaby
Date: Thu Jul 30 2026 - 02:03:09 EST
On 29. 07. 26, 8:05, Crescent Hsieh wrote:
On MUEx50, break signaling under RS485 requires a driver-specific
sequence and cannot be handled correctly by the generic 8250 break
implementation alone.
Implement a mxpcie break_ctl callback that performs MUEx50-specific
break handling when RS485 is enabled and fall back to the default 8250
break handling for other modes.
Signed-off-by: Crescent Hsieh <crescentcy.hsieh@xxxxxxxx>
---
drivers/tty/serial/8250/8250_mxpcie.c | 49 +++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/drivers/tty/serial/8250/8250_mxpcie.c b/drivers/tty/serial/8250/8250_mxpcie.c
index 927615f2d724..878fc64c4451 100644
--- a/drivers/tty/serial/8250/8250_mxpcie.c
+++ b/drivers/tty/serial/8250/8250_mxpcie.c
@@ -54,6 +54,7 @@
/* Special Function Register (SFR) */
#define MOXA_PUART_SFR 0x07
+#define MOXA_PUART_SFR_FORCE_TX BIT(0)
#define MOXA_PUART_SFR_950 BIT(5)
/* Enhanced Function Register (EFR) */
@@ -384,6 +385,53 @@ static int mxpcie8250_handle_irq(struct uart_port *port)
return 1;
}
+static void mxpcie8250_software_break_ctl(struct uart_port *port, int break_state)
+{
+ struct uart_8250_port *up = up_to_u8250p(port);
+ struct tty_struct *tty = port->state->port.tty;
+ unsigned char tx_byte = 0x01;
Do you actually need the variable? If so, it should be u8, given you call byte and use it as such.
+ unsigned int baud, quot;
+ u8 sfr;
+
+ guard(uart_port_lock_irqsave)(port);
+
+ if (break_state == -1) {
+ serial_out(up, UART_LCR, up->lcr | UART_LCR_DLAB);
+ serial_dl_write(up, 0);
+ serial_out(up, UART_LCR, up->lcr);
+
+ serial_out(up, MOXA_PUART_TX_FIFO_MEM, tx_byte);
thanks,
--
js
suse labs