|
@@ -2871,11 +2871,22 @@ static int gsmtty_modem_update(struct gsm_dlci *dlci, u8 brk)
|
|
|
static int gsm_carrier_raised(struct tty_port *port)
|
|
|
{
|
|
|
struct gsm_dlci *dlci = container_of(port, struct gsm_dlci, port);
|
|
|
+ struct gsm_mux *gsm = dlci->gsm;
|
|
|
+
|
|
|
/* Not yet open so no carrier info */
|
|
|
if (dlci->state != DLCI_OPEN)
|
|
|
return 0;
|
|
|
if (debug & 2)
|
|
|
return 1;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Basic mode with control channel in ADM mode may not respond
|
|
|
+ * to CMD_MSC at all and modem_rx is empty.
|
|
|
+ */
|
|
|
+ if (gsm->encoding == 0 && gsm->dlci[0]->mode == DLCI_MODE_ADM &&
|
|
|
+ !dlci->modem_rx)
|
|
|
+ return 1;
|
|
|
+
|
|
|
return dlci->modem_rx & TIOCM_CD;
|
|
|
}
|
|
|
|