tty: moxa: Add support for CMSPAR

The mode constants are taken from the GPL-2.0+ driver available
in the driver section of the Moxa homepage.

It is tested on a C320Turbo PCI card per logic analyzer and
per a device which requires 9 bit character communication.

The vendors driver supports CMSPAR unconditionally, so that all
other available firmware versions seems to support mark/space
parity modes as well.

Signed-off-by: Lars Kanis <kanis@comcard.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Lars Kanis 2017-11-28 11:55:17 +01:00 коммит произвёл Greg Kroah-Hartman
Родитель e73be92d82
Коммит d8dcbdd08c
2 изменённых файлов: 13 добавлений и 6 удалений

Просмотреть файл

@ -1487,8 +1487,6 @@ static void moxa_set_tty_param(struct tty_struct *tty, struct ktermios *old_term
if (ts->c_iflag & IXANY) if (ts->c_iflag & IXANY)
xany = 1; xany = 1;
/* Clear the features we don't support */
ts->c_cflag &= ~CMSPAR;
MoxaPortFlowCtrl(ch, rts, cts, txflow, rxflow, xany); MoxaPortFlowCtrl(ch, rts, cts, txflow, rxflow, xany);
baud = MoxaPortSetTermio(ch, ts, tty_get_baud_rate(tty)); baud = MoxaPortSetTermio(ch, ts, tty_get_baud_rate(tty));
if (baud == -1) if (baud == -1)
@ -1781,10 +1779,17 @@ static int MoxaPortSetTermio(struct moxa_port *port, struct ktermios *termio,
mode |= MX_STOP1; mode |= MX_STOP1;
if (termio->c_cflag & PARENB) { if (termio->c_cflag & PARENB) {
if (termio->c_cflag & PARODD) if (termio->c_cflag & PARODD) {
mode |= MX_PARODD; if (termio->c_cflag & CMSPAR)
else mode |= MX_PARMARK;
mode |= MX_PAREVEN; else
mode |= MX_PARODD;
} else {
if (termio->c_cflag & CMSPAR)
mode |= MX_PARSPACE;
else
mode |= MX_PAREVEN;
}
} else } else
mode |= MX_PARNONE; mode |= MX_PARNONE;

Просмотреть файл

@ -301,5 +301,7 @@
#define MX_PARNONE 0x00 #define MX_PARNONE 0x00
#define MX_PAREVEN 0x40 #define MX_PAREVEN 0x40
#define MX_PARODD 0xC0 #define MX_PARODD 0xC0
#define MX_PARMARK 0xA0
#define MX_PARSPACE 0x20
#endif #endif