Quoting Akash Asthana (2019-11-15 01:57:48) > > On 11/14/2019 11:06 PM, Stephen Boyd wrote: > > Please update the subject. This patch does more than remove the sysfs > > file. "Move loopback support to TIOCM_LOOP"? > Ok, I will update this in next version. > > Quoting Akash Asthana (2019-11-13 02:49:21) > >> Remove code from the driver that create and maintain loopback sysfs node. > >> Instead use the ioctl TIOCMSET with TIOCM_LOOP argument to set HW to > >> loopback mode. > >> > >> Signed-off-by: Akash Asthana <akashast@xxxxxxxxxxxxxx> > >> --- > >> Changes in V5: > >> - As per Greg's and Stephen's comment on v4 patch, removed loopback sysfs > >> file related code. > >> > >> drivers/tty/serial/qcom_geni_serial.c | 30 ++++-------------------------- > >> 1 file changed, 4 insertions(+), 26 deletions(-) > >> > >> diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > >> index 56dad67..52f5ea2 100644 > >> --- a/drivers/tty/serial/qcom_geni_serial.c > >> +++ b/drivers/tty/serial/qcom_geni_serial.c > >> @@ -238,10 +214,14 @@ static void qcom_geni_serial_set_mctrl(struct uart_port *uport, > >> unsigned int mctrl) > >> { > >> u32 uart_manual_rfr = 0; > >> + struct qcom_geni_serial_port *port = to_dev_port(uport, uport); > >> > >> if (uart_console(uport)) > >> return; > >> > >> + if (mctrl & TIOCM_LOOP) > >> + port->loopback = MAX_LOOPBACK_CFG; > > How does this work? The loopback is supposed to be the max all the time > > and not match some qup number or something? > port->loopback is unrelated to QUP number. However we have different > modes to run loopback test, 1(rx-tx sorted), 2(cts-rts sorted), > > 3 or Max(rx-tx sorted and cts-rts sorted). In our internal testing we > only use mode 3 hence we are initializing port->loopback variable > > to 3 and eventually it will be written to HW register from set_termios > call. Ok. Thanks for clarifying. Can you rename this macro to RX_TX_CTS_RTS_SORTED? I imagine seeing something like: /* SE_UART_LOOPBACK_CFG */ #define RX_TX_SORTED BIT(0) #define CTS_RTS_SORTED BIT(1) #define RX_TX_CTS_RTS_SORTED RX_TX_SORTED | CTS_RTS_SORTED or whatever the bit field names really are.