mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 15:11:48 -04:00
Merge "usb: f_cdev: Handle the serial state properly"
This commit is contained in:
commit
e4c620112c
1 changed files with 15 additions and 8 deletions
|
|
@ -358,21 +358,28 @@ static inline struct f_cdev *cser_to_port(struct cserial *cser)
|
|||
return container_of(cser, struct f_cdev, port_usb);
|
||||
}
|
||||
|
||||
static unsigned int convert_uart_sigs_to_acm(unsigned int uart_sig)
|
||||
static unsigned int convert_uart_sigs_to_acm(struct cserial *cser, unsigned int uart_sig)
|
||||
{
|
||||
unsigned int acm_sig = 0;
|
||||
u16 state;
|
||||
|
||||
state = cser->serial_state;
|
||||
|
||||
/* Make sure that ACM bits from previous conversion are cleared */
|
||||
state &= ~(ACM_CTRL_RI | ACM_CTRL_DCD | ACM_CTRL_DSR | ACM_CTRL_BRK);
|
||||
|
||||
/* should this needs to be in calling functions ??? */
|
||||
uart_sig &= (TIOCM_RI | TIOCM_CD | TIOCM_DSR);
|
||||
uart_sig &= (TIOCM_RI | TIOCM_CD | TIOCM_DSR | TIOCM_CTS);
|
||||
|
||||
if (uart_sig & TIOCM_RI)
|
||||
acm_sig |= ACM_CTRL_RI;
|
||||
state |= ACM_CTRL_RI;
|
||||
if (uart_sig & TIOCM_CD)
|
||||
acm_sig |= ACM_CTRL_DCD;
|
||||
state |= ACM_CTRL_DCD;
|
||||
if (uart_sig & TIOCM_DSR)
|
||||
acm_sig |= ACM_CTRL_DSR;
|
||||
state |= ACM_CTRL_DSR;
|
||||
if (uart_sig & TIOCM_CTS)
|
||||
state |= ACM_CTRL_BRK;
|
||||
|
||||
return acm_sig;
|
||||
return state;
|
||||
}
|
||||
|
||||
static unsigned int convert_acm_sigs_to_uart(unsigned int acm_sig)
|
||||
|
|
@ -1660,7 +1667,7 @@ static void usb_cser_notify_modem(void *fport, int ctrl_bits)
|
|||
unsigned int cbits_to_laptop;
|
||||
|
||||
result = f_cdev_tiocmget(port);
|
||||
cbits_to_laptop = convert_uart_sigs_to_acm(result);
|
||||
cbits_to_laptop = convert_uart_sigs_to_acm(cser, result);
|
||||
if (cser->send_modem_ctrl_bits)
|
||||
cser->send_modem_ctrl_bits(cser, cbits_to_laptop);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue