Remove DM* modem control commands

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Remove DM* modem control commands

Tobias Ulmer
Remove the ancient tty.h DMSET etc. modem control commands. They're confusing
to someone without the historical background. No documentation doesn't help
either.

TIOCM* serve the same purpose, are documented in tty(4) and the various *ctl()
functions use the TTYCM_ register definitions, making this mix particularly odd
looking.

I've modified the *ctl() functions to use the same type and name as ioctl for
clarity and correctness. Not strictly necessary, but makes me sleep better :)

Tested lightly on sparc64. sab still works. No luna88k, sorry.


## Background blah blah, skip if you just don't care :)

I've noticed these odd DM{SET,GET,BIC,BIS} constants in serial drivers all
over the place and got curious. What do they mean?

Turns out, "DM" is a bolt-in add-on modem by DEC you would connect to
your DH-11, apparently a 16 port serial port multiplexer for your VAX or
PDP-11. As far as I can tell, the drivers were last included in 4.3BSD.
You grey beards correct me on this.

The DM constants and the dmctl() function to manipulate the modem
control register were added to dh in 1980 in order to support this fancy
new modem.

Since then, just about every BSD serial driver has copied the basic structure,
spreading DM* absolutely everywhere.

In 1982, Bill Shannon wanted to play with this control register in userspace
(tip) and the ioctl interface was expanded by TIOCM{SET,GET,BIS,BIC}, hard
coding the interface and register layout of that modem family for decades to come.

dh gains dm support:
https://github.com/weiss/original-bsd/commit/b47c3865305da4a404343aeedf0e3561071aae10

TIOCM modem control register bits show up:
https://github.com/weiss/original-bsd/commit/d9d9928137170ec2f49e62509b12d012cac154de
https://github.com/weiss/original-bsd/commit/c849aa74bd3aaa1d644d74d9628ba0e1be028e1a

http://gunkies.org/wiki/DH11_asynchronous_serial_line_interface
http://bitsavers.trailing-edge.com/pdf/dec/unibus/ datasheets..

Who needs TV when you can dig up amusing trivia about early BSD development!

Index: sys/tty.h
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/sys/tty.h,v
retrieving revision 1.37
diff -u -p -r1.37 tty.h
--- sys/tty.h 24 May 2016 16:09:07 -0000 1.37
+++ sys/tty.h 13 Feb 2018 20:39:54 -0000
@@ -215,12 +215,6 @@ struct speedtab {
  int sp_code; /* Code. */
 };
 
-/* Modem control commands (driver). */
-#define DMSET 0
-#define DMBIS 1
-#define DMBIC 2
-#define DMGET 3
-
 /* Flags on a character passed to ttyinput. */
 #define TTY_CHARMASK 0x000000ff /* Character mask */
 #define TTY_QUOTE 0x00000100 /* Character quoted */
 
Index: arch/armv7/exynos/exuart.c
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/arch/armv7/exynos/exuart.c,v
retrieving revision 1.13
diff -u -p -r1.13 exuart.c
--- arch/armv7/exynos/exuart.c 27 Oct 2017 11:23:28 -0000 1.13
+++ arch/armv7/exynos/exuart.c 13 Feb 2018 20:38:56 -0000
@@ -784,37 +784,37 @@ exuartioctl( dev_t dev, u_long cmd, cadd
 
  case TIOCSDTR:
 #if 0
- (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIS);
+ (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, TIOCMBIS);
 #endif
  break;
 
  case TIOCCDTR:
 #if 0
- (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIC);
+ (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, TIOCMBIC);
 #endif
  break;
 
  case TIOCMSET:
 #if 0
- (void) clmctl(dev, *(int *) data, DMSET);
+ (void) clmctl(dev, *(int *) data, TIOCMSET);
 #endif
  break;
 
  case TIOCMBIS:
 #if 0
- (void) clmctl(dev, *(int *) data, DMBIS);
+ (void) clmctl(dev, *(int *) data, TIOCMBIS);
 #endif
  break;
 
  case TIOCMBIC:
 #if 0
- (void) clmctl(dev, *(int *) data, DMBIC);
+ (void) clmctl(dev, *(int *) data, TIOCMBIC);
 #endif
  break;
 
         case TIOCMGET:
 #if 0
- *(int *)data = clmctl(dev, 0, DMGET);
+ *(int *)data = clmctl(dev, 0, TIOCMGET);
 #endif
  break;
 
Index: arch/armv7/imx/imxuart.c
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/arch/armv7/imx/imxuart.c,v
retrieving revision 1.17
diff -u -p -r1.17 imxuart.c
--- arch/armv7/imx/imxuart.c 30 Dec 2017 13:34:56 -0000 1.17
+++ arch/armv7/imx/imxuart.c 13 Feb 2018 20:38:56 -0000
@@ -701,37 +701,37 @@ imxuartioctl( dev_t dev, u_long cmd, cad
 
  case TIOCSDTR:
 #if 0
- (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIS);
+ (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, TIOCMBIS);
 #endif
  break;
 
  case TIOCCDTR:
 #if 0
- (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIC);
+ (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, TIOCMBIC);
 #endif
  break;
 
  case TIOCMSET:
 #if 0
- (void) clmctl(dev, *(int *) data, DMSET);
+ (void) clmctl(dev, *(int *) data, TIOCMSET);
 #endif
  break;
 
  case TIOCMBIS:
 #if 0
- (void) clmctl(dev, *(int *) data, DMBIS);
+ (void) clmctl(dev, *(int *) data, TIOCMBIS);
 #endif
  break;
 
  case TIOCMBIC:
 #if 0
- (void) clmctl(dev, *(int *) data, DMBIC);
+ (void) clmctl(dev, *(int *) data, TIOCMBIC);
 #endif
  break;
 
         case TIOCMGET:
 #if 0
- *(int *)data = clmctl(dev, 0, DMGET);
+ *(int *)data = clmctl(dev, 0, TIOCMGET);
 #endif
  break;
 
Index: arch/luna88k/dev/siotty.c
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/arch/luna88k/dev/siotty.c,v
retrieving revision 1.21
diff -u -p -r1.21 siotty.c
--- arch/luna88k/dev/siotty.c 3 Nov 2017 06:54:06 -0000 1.21
+++ arch/luna88k/dev/siotty.c 13 Feb 2018 20:39:04 -0000
@@ -100,7 +100,7 @@ void siottyintr(void *);
 void siottysoft(void *);
 void siotty_rxsoft(struct siotty_softc *, struct tty *);
 void siotty_txsoft(struct siotty_softc *, struct tty *);
-int  siomctl(struct siotty_softc *, int, int);
+int  siomctl(struct siotty_softc *, int, u_long);
 
 int  siotty_match(struct device *, void *, void *);
 void siotty_attach(struct device *, struct device *, void *);
@@ -409,7 +409,7 @@ sioparam(struct tty *tp, struct termios
 }
 
 int
-siomctl(struct siotty_softc *sc, int control, int op)
+siomctl(struct siotty_softc *sc, int control, u_long cmd)
 {
  int val, s, wr5, rr;
 
@@ -422,17 +422,17 @@ siomctl(struct siotty_softc *sc, int con
  val |= WR5_RTS;
  s = spltty();
  wr5 = sc->sc_wr[WR5];
- switch (op) {
- case DMSET:
+ switch (cmd) {
+ case TIOCMSET:
  wr5 &= ~(WR5_BREAK|WR5_DTR|WR5_RTS);
  /* FALLTHROUGH */
- case DMBIS:
+ case TIOCMBIS:
  wr5 |= val;
  break;
- case DMBIC:
+ case TIOCMBIC:
  wr5 &= ~val;
  break;
- case DMGET:
+ case TIOCMGET:
  val = 0;
  rr = getsiocsr(sc->sc_ctl);
  if (wr5 & WR5_DTR)
@@ -519,13 +519,13 @@ sioclose(dev_t dev, int flag, int mode,
  (*linesw[tp->t_line].l_close)(tp, flag, p);
 
  s = spltty();
- siomctl(sc, TIOCM_BREAK, DMBIC);
+ siomctl(sc, TIOCM_BREAK, TIOCMBIC);
 #if 0 /* because unable to feed DTR signal */
  if ((tp->t_cflag & HUPCL)
     || tp->t_wopen || (tp->t_state & TS_ISOPEN) == 0) {
- siomctl(sc, TIOCM_DTR, DMBIC);
+ siomctl(sc, TIOCM_DTR, TIOCMBIC);
  /* Yield CPU time to others for 1 second, then ... */
- siomctl(sc, TIOCM_DTR, DMBIS);
+ siomctl(sc, TIOCM_DTR, TIOCMBIS);
  }
 #endif
  splx(s);
@@ -568,28 +568,28 @@ sioioctl(dev_t dev, u_long cmd, caddr_t
  /* the last resort for TIOC ioctl tranversing */
  switch (cmd) {
  case TIOCSBRK: /* Set the hardware into BREAK condition */
- siomctl(sc, TIOCM_BREAK, DMBIS);
+ siomctl(sc, TIOCM_BREAK, TIOCMBIS);
  break;
  case TIOCCBRK: /* Clear the hardware BREAK condition */
- siomctl(sc, TIOCM_BREAK, DMBIC);
+ siomctl(sc, TIOCM_BREAK, TIOCMBIC);
  break;
  case TIOCSDTR: /* Assert DTR signal */
- siomctl(sc, TIOCM_DTR|TIOCM_RTS, DMBIS);
+ siomctl(sc, TIOCM_DTR|TIOCM_RTS, TIOCMBIS);
  break;
  case TIOCCDTR: /* Clear DTR signal */
- siomctl(sc, TIOCM_DTR|TIOCM_RTS, DMBIC);
+ siomctl(sc, TIOCM_DTR|TIOCM_RTS, TIOCMBIC);
  break;
  case TIOCMSET: /* Set modem state replacing current one */
- siomctl(sc, *(int *)data, DMSET);
+ siomctl(sc, *(int *)data, TIOCMSET);
  break;
  case TIOCMGET: /* Return current modem state */
- *(int *)data = siomctl(sc, 0, DMGET);
+ *(int *)data = siomctl(sc, 0, TIOCMGET);
  break;
  case TIOCMBIS: /* Set individual bits of modem state */
- siomctl(sc, *(int *)data, DMBIS);
+ siomctl(sc, *(int *)data, TIOCMBIS);
  break;
  case TIOCMBIC: /* Clear individual bits of modem state */
- siomctl(sc, *(int *)data, DMBIC);
+ siomctl(sc, *(int *)data, TIOCMBIC);
  break;
  case TIOCSFLAGS: /* Instruct how serial port behaves */
  error = suser(p, 0);
Index: arch/sparc64/dev/sab.c
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/arch/sparc64/dev/sab.c,v
retrieving revision 1.34
diff -u -p -r1.34 sab.c
--- arch/sparc64/dev/sab.c 30 Dec 2017 23:08:29 -0000 1.34
+++ arch/sparc64/dev/sab.c 13 Feb 2018 20:39:12 -0000
@@ -136,7 +136,7 @@ void sabtty_start(struct tty *);
 int sabtty_param(struct tty *, struct termios *);
 int sabtty_intr(struct sabtty_softc *, int *);
 void sabtty_softintr(struct sabtty_softc *);
-int sabtty_mdmctrl(struct sabtty_softc *, int, int);
+int sabtty_mdmctrl(struct sabtty_softc *, int, u_long);
 int sabtty_cec_wait(struct sabtty_softc *);
 int sabtty_tec_wait(struct sabtty_softc *);
 void sabtty_reset(struct sabtty_softc *);
@@ -749,7 +749,7 @@ sabttyopen(dev, flags, mode, p)
  return (s);
 
  if (tp->t_cflag & HUPCL) {
- sabtty_mdmctrl(sc, 0, DMSET);
+ sabtty_mdmctrl(sc, 0, TIOCMSET);
  (void)tsleep(sc, TTIPRI, ttclos, hz);
  }
 
@@ -788,7 +788,7 @@ sabttyclose(dev, flags, mode, p)
  sc->sc_flags &= ~SABTTYF_TXDRAIN;
 
  if (tp->t_cflag & HUPCL) {
- sabtty_mdmctrl(sc, 0, DMSET);
+ sabtty_mdmctrl(sc, 0, TIOCMSET);
  (void)tsleep(bc, TTIPRI, ttclos, hz);
  }
 
@@ -864,22 +864,22 @@ sabttyioctl(dev, cmd, data, flags, p)
     SAB_READ(sc, SAB_DAFO) & ~SAB_DAFO_XBRK);
  break;
  case TIOCSDTR:
- sabtty_mdmctrl(sc, TIOCM_DTR, DMBIS);
+ sabtty_mdmctrl(sc, TIOCM_DTR, TIOCMBIS);
  break;
  case TIOCCDTR:
- sabtty_mdmctrl(sc, TIOCM_DTR, DMBIC);
+ sabtty_mdmctrl(sc, TIOCM_DTR, TIOCMBIC);
  break;
  case TIOCMBIS:
- sabtty_mdmctrl(sc, *((int *)data), DMBIS);
+ sabtty_mdmctrl(sc, *((int *)data), TIOCMBIS);
  break;
  case TIOCMBIC:
- sabtty_mdmctrl(sc, *((int *)data), DMBIC);
+ sabtty_mdmctrl(sc, *((int *)data), TIOCMBIC);
  break;
  case TIOCMGET:
- *((int *)data) = sabtty_mdmctrl(sc, 0, DMGET);
+ *((int *)data) = sabtty_mdmctrl(sc, 0, TIOCMGET);
  break;
  case TIOCMSET:
- sabtty_mdmctrl(sc, *((int *)data), DMSET);
+ sabtty_mdmctrl(sc, *((int *)data), TIOCMSET);
  break;
  case TIOCGFLAGS:
  *((int *)data) = sc->sc_openflags;
@@ -931,16 +931,17 @@ sabttystop(tp, flags)
 }
 
 int
-sabtty_mdmctrl(sc, bits, how)
+sabtty_mdmctrl(sc, bits, cmd)
  struct sabtty_softc *sc;
- int bits, how;
+ int bits;
+ u_long cmd;
 {
  u_int8_t r;
  int s;
 
  s = spltty();
- switch (how) {
- case DMGET:
+ switch (cmd) {
+ case TIOCMGET:
  bits = 0;
  if (SAB_READ(sc, SAB_STAR) & SAB_STAR_CTS)
  bits |= TIOCM_CTS;
@@ -957,7 +958,7 @@ sabtty_mdmctrl(sc, bits, how)
  if ((r & (SAB_MODE_RTS|SAB_MODE_FRTS)) == SAB_MODE_RTS)
  bits |= TIOCM_RTS;
  break;
- case DMSET:
+ case TIOCMSET:
  r = SAB_READ(sc, SAB_MODE);
  if (bits & TIOCM_RTS) {
  r &= ~SAB_MODE_FRTS;
@@ -973,7 +974,7 @@ sabtty_mdmctrl(sc, bits, how)
  r |= sc->sc_pvr_dtr;
  SAB_WRITE(sc, SAB_PVR, r);
  break;
- case DMBIS:
+ case TIOCMBIS:
  if (bits & TIOCM_RTS) {
  r = SAB_READ(sc, SAB_MODE);
  r &= ~SAB_MODE_FRTS;
@@ -986,7 +987,7 @@ sabtty_mdmctrl(sc, bits, how)
  SAB_WRITE(sc, SAB_PVR, r);
  }
  break;
- case DMBIC:
+ case TIOCMBIC:
  if (bits & TIOCM_RTS) {
  r = SAB_READ(sc, SAB_MODE);
  r |= SAB_MODE_FRTS | SAB_MODE_RTS;
@@ -1021,7 +1022,7 @@ sabttyparam(sc, tp, t)
 
  /* hang up line if ospeed is zero, otherwise raise dtr */
  sabtty_mdmctrl(sc, TIOCM_DTR,
-    (t->c_ospeed == 0) ? DMBIC : DMBIS);
+    (t->c_ospeed == 0) ? TIOCMBIC : TIOCMBIS);
 
  dafo = SAB_READ(sc, SAB_DAFO);
 
Index: dev/ic/cy.c
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/dev/ic/cy.c,v
retrieving revision 1.37
diff -u -p -r1.37 cy.c
--- dev/ic/cy.c 8 Sep 2017 05:36:52 -0000 1.37
+++ dev/ic/cy.c 13 Feb 2018 20:39:20 -0000
@@ -72,7 +72,7 @@ int cy_intr(void *);
 int cyparam(struct tty *, struct termios *);
 void cystart(struct tty *);
 void cy_poll(void *);
-int cy_modem_control(struct cy_port *, int, int);
+int cy_modem_control(struct cy_port *, int, u_long);
 void cy_enable_transmitter(struct cy_port *);
 void cd1400_channel_cmd(struct cy_port *, int);
 int cy_speed(speed_t, int *, int *, int);
@@ -345,7 +345,7 @@ cyopen(dev, flag, mode, p)
  ttsetwater(tp);
 
  /* raise RTS too */
- cy_modem_control(cy, TIOCM_RTS, DMBIS);
+ cy_modem_control(cy, TIOCM_RTS, TIOCMBIS);
 
  cy->cy_carrier_stat = cd_read_reg(cy, CD1400_MSVR2);
 
@@ -414,7 +414,7 @@ cyclose(dev, flag, mode, p)
     !ISSET(cy->cy_openflags, TIOCFLAG_SOFTCAR)) {
  /* drop DTR and RTS
    (should we wait for output buffer to become empty first?) */
- cy_modem_control(cy, 0, DMSET);
+ cy_modem_control(cy, 0, TIOCMSET);
  }
 
  /*
@@ -536,27 +536,27 @@ cyioctl(dev, cmd, data, flag, p)
  break;
 
  case TIOCSDTR: /* DTR on */
- cy_modem_control(cy, TIOCM_DTR, DMBIS);
+ cy_modem_control(cy, TIOCM_DTR, TIOCMBIS);
  break;
 
  case TIOCCDTR: /* DTR off */
- cy_modem_control(cy, TIOCM_DTR, DMBIC);
+ cy_modem_control(cy, TIOCM_DTR, TIOCMBIC);
  break;
 
  case TIOCMSET: /* set new modem control line values */
- cy_modem_control(cy, *((int *)data), DMSET);
+ cy_modem_control(cy, *((int *)data), TIOCMSET);
  break;
 
  case TIOCMBIS: /* turn modem control bits on */
- cy_modem_control(cy, *((int *)data), DMBIS);
+ cy_modem_control(cy, *((int *)data), TIOCMBIS);
  break;
 
  case TIOCMBIC: /* turn modem control bits off */
- cy_modem_control(cy, *((int *)data), DMBIC);
+ cy_modem_control(cy, *((int *)data), TIOCMBIC);
  break;
 
  case TIOCMGET: /* get modem control/status line state */
- *((int *)data) = cy_modem_control(cy, 0, DMGET);
+ *((int *)data) = cy_modem_control(cy, 0, TIOCMGET);
  break;
 
  case TIOCGFLAGS:
@@ -684,8 +684,9 @@ cyparam(tp, t)
 
  s = spltty();
 
- /* hang up the line is ospeed is zero, else turn DTR on */
- cy_modem_control(cy, TIOCM_DTR, (t->c_ospeed == 0 ? DMBIC : DMBIS));
+ /* hang up the line if ospeed is zero, else turn DTR on */
+ cy_modem_control(cy, TIOCM_DTR,
+    (t->c_ospeed == 0 ? TIOCMBIC : TIOCMBIS));
 
  /* channel was selected by the above call to cy_modem_control() */
  /* cd_write_reg(cy, CD1400_CAR, port & CD1400_CAR_CHAN); */
@@ -807,10 +808,10 @@ cyparam(tp, t)
  *
  */
 int
-cy_modem_control(cy, bits, howto)
+cy_modem_control(cy, bits, cmd)
  struct cy_port *cy;
  int bits;
- int howto;
+ u_long cmd;
 {
  int s, msvr;
 
@@ -820,8 +821,8 @@ cy_modem_control(cy, bits, howto)
  cd_write_reg(cy, CD1400_CAR, cy->cy_port_num & CD1400_CAR_CHAN);
 
 /* does not manipulate RTS if it is used for flow control */
- switch (howto) {
- case DMGET:
+ switch (cmd) {
+ case TIOCMGET:
  bits = 0;
  if (cy->cy_channel_control & CD1400_CCR_RCVEN)
  bits |= TIOCM_LE;
@@ -850,7 +851,7 @@ cy_modem_control(cy, bits, howto)
  splx(s);
  return (bits);
 
- case DMSET: /* replace old values with new ones */
+ case TIOCMSET: /* replace old values with new ones */
 #ifdef CY_HW_RTS
  if (!ISSET(cy->cy_tty->t_cflag, CRTSCTS))
  cd_write_reg(cy, CD1400_MSVR2,
@@ -866,7 +867,7 @@ cy_modem_control(cy, bits, howto)
 #endif /* CY_HW_RTS */
  break;
 
- case DMBIS: /* set bits */
+ case TIOCMBIS: /* set bits */
 #ifdef CY_HW_RTS
  if (!ISSET(cy->cy_tty->t_cflag, CRTSCTS) &&
     (bits & TIOCM_RTS) != 0)
@@ -882,7 +883,7 @@ cy_modem_control(cy, bits, howto)
 #endif /* CY_HW_RTS */
  break;
 
- case DMBIC: /* clear bits */
+ case TIOCMBIC: /* clear bits */
 #ifdef CY_HW_RTS
  if (!ISSET(cy->cy_tty->t_cflag, CRTSCTS) &&
     (bits & TIOCM_RTS))
@@ -1023,7 +1024,7 @@ cy_poll(void *arg)
 #endif
  if (CY_DIALIN(tp->t_dev) &&
     !(*linesw[tp->t_line].l_modem)(tp, carrier))
- cy_modem_control(cy, TIOCM_DTR, DMBIC);
+ cy_modem_control(cy, TIOCM_DTR, TIOCMBIC);
 
 #ifdef CY_DEBUG1
  did_something = 1;
Index: dev/sbus/magma.c
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/dev/sbus/magma.c,v
retrieving revision 1.27
diff -u -p -r1.27 magma.c
--- dev/sbus/magma.c 30 Dec 2017 23:08:29 -0000 1.27
+++ dev/sbus/magma.c 13 Feb 2018 20:39:45 -0000
@@ -941,7 +941,7 @@ mttyclose(dev_t dev, int flag, int mode,
  */
 
  /* drop DTR and RTS */
- (void)mtty_modem_control(mp, 0, DMSET);
+ (void)mtty_modem_control(mp, 0, TIOCMSET);
 
  /* turn off the channel
  CD1400_WRITE_REG(cd, CD1400_CAR, mp->mp_channel);
@@ -1026,27 +1026,27 @@ mttyioctl(dev_t dev, u_long cmd, caddr_t
  break;
 
  case TIOCSDTR: /* set DTR */
- mtty_modem_control(mp, TIOCM_DTR, DMBIS);
+ mtty_modem_control(mp, TIOCM_DTR, TIOCMBIS);
  break;
 
  case TIOCCDTR: /* clear DTR */
- mtty_modem_control(mp, TIOCM_DTR, DMBIC);
+ mtty_modem_control(mp, TIOCM_DTR, TIOCMBIC);
  break;
 
  case TIOCMSET: /* set modem lines */
- mtty_modem_control(mp, *((int *)data), DMSET);
+ mtty_modem_control(mp, *((int *)data), TIOCMSET);
  break;
 
  case TIOCMBIS: /* bit set modem lines */
- mtty_modem_control(mp, *((int *)data), DMBIS);
+ mtty_modem_control(mp, *((int *)data), TIOCMBIS);
  break;
 
  case TIOCMBIC: /* bit clear modem lines */
- mtty_modem_control(mp, *((int *)data), DMBIC);
+ mtty_modem_control(mp, *((int *)data), TIOCMBIC);
  break;
 
  case TIOCMGET: /* get modem lines */
- *((int *)data) = mtty_modem_control(mp, 0, DMGET);
+ *((int *)data) = mtty_modem_control(mp, 0, TIOCMGET);
  break;
 
  case TIOCGFLAGS:
@@ -1142,7 +1142,7 @@ mtty_start(struct tty *tp)
  * only let them fiddle with RTS if CRTSCTS is not enabled
  */
 int
-mtty_modem_control(struct mtty_port *mp, int bits, int howto)
+mtty_modem_control(struct mtty_port *mp, int bits, u_long cmd)
 {
  struct cd1400 *cd = mp->mp_cd1400;
  struct tty *tp = mp->mp_tty;
@@ -1152,8 +1152,8 @@ mtty_modem_control(struct mtty_port *mp,
 
  CD1400_WRITE_REG(cd, CD1400_CAR, mp->mp_channel);
 
- switch(howto) {
- case DMGET: /* get bits */
+ switch(cmd) {
+ case TIOCMGET: /* get bits */
  bits = 0;
 
  bits |= TIOCM_LE;
@@ -1176,7 +1176,7 @@ mtty_modem_control(struct mtty_port *mp,
 
  break;
 
- case DMSET: /* reset bits */
+ case TIOCMSET: /* reset bits */
  if (!ISSET(tp->t_cflag, CRTSCTS))
  CD1400_WRITE_REG(cd, CD1400_MSVR2,
     ((bits & TIOCM_RTS) ? CD1400_MSVR2_DTR : 0));
@@ -1186,7 +1186,7 @@ mtty_modem_control(struct mtty_port *mp,
 
  break;
 
- case DMBIS: /* set bits */
+ case TIOCMBIS: /* set bits */
  if ((bits & TIOCM_RTS) && !ISSET(tp->t_cflag, CRTSCTS))
  CD1400_WRITE_REG(cd, CD1400_MSVR2, CD1400_MSVR2_DTR);
 
@@ -1195,7 +1195,7 @@ mtty_modem_control(struct mtty_port *mp,
 
  break;
 
- case DMBIC: /* clear bits */
+ case TIOCMBIC: /* clear bits */
  if ((bits & TIOCM_RTS) && !ISSET(tp->t_cflag, CRTSCTS))
  CD1400_WRITE_REG(cd, CD1400_MSVR2, 0);
 
@@ -1234,7 +1234,7 @@ mtty_param(struct tty *tp, struct termio
 
  /* hang up the line if ospeed is zero, else raise DTR */
  (void)mtty_modem_control(mp, TIOCM_DTR,
-    (t->c_ospeed == 0 ? DMBIC : DMBIS));
+    (t->c_ospeed == 0 ? TIOCMBIC : TIOCMBIS));
 
  /* select channel, done in mtty_modem_control() */
  /* CD1400_WRITE_REG(cd, CD1400_CAR, mp->mp_channel); */
Index: dev/sbus/magmareg.h
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/dev/sbus/magmareg.h,v
retrieving revision 1.9
diff -u -p -r1.9 magmareg.h
--- dev/sbus/magmareg.h 29 Nov 2008 01:55:06 -0000 1.9
+++ dev/sbus/magmareg.h 13 Feb 2018 20:39:45 -0000
@@ -209,7 +209,7 @@ void magma_soft(void *);
 
 int mtty_match(struct device *, void *, void *);
 void mtty_attach(struct device *, struct device *, void *);
-int mtty_modem_control(struct mtty_port *, int, int);
+int mtty_modem_control(struct mtty_port *, int, u_long);
 int mtty_param(struct tty *, struct termios *);
 void mtty_start(struct tty *);
 
Index: dev/sbus/spif.c
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/dev/sbus/spif.c,v
retrieving revision 1.20
diff -u -p -r1.20 spif.c
--- dev/sbus/spif.c 30 Dec 2017 23:08:29 -0000 1.20
+++ dev/sbus/spif.c 13 Feb 2018 20:39:45 -0000
@@ -77,7 +77,7 @@ void spifsoftintr(void *);
 
 int stty_param(struct tty *, struct termios *);
 struct tty *sttytty(dev_t);
-int stty_modem_control(struct stty_port *, int, int);
+int stty_modem_control(struct stty_port *, int, u_long);
 void stty_write_ccr(struct spif_softc *, u_int8_t);
 int stty_compute_baud(speed_t, int, u_int8_t *, u_int8_t *);
 void stty_start(struct tty *);
@@ -435,7 +435,7 @@ sttyclose(dev, flags, mode, p)
  s = spltty();
 
  if (ISSET(tp->t_cflag, HUPCL) || !ISSET(tp->t_state, TS_ISOPEN)) {
- stty_modem_control(sp, 0, DMSET);
+ stty_modem_control(sp, 0, TIOCMSET);
  STC_WRITE(csc, STC_CAR, port);
  STC_WRITE(csc, STC_CCR,
     CD180_CCR_CMD_RESET|CD180_CCR_RESETCHAN);
@@ -484,22 +484,22 @@ sttyioctl(dev, cmd, data, flags, p)
     STC_READ(sc, STC_SRER) | CD180_SRER_TXD);
  break;
  case TIOCSDTR:
- stty_modem_control(sp, TIOCM_DTR, DMBIS);
+ stty_modem_control(sp, TIOCM_DTR, TIOCMBIS);
  break;
  case TIOCCDTR:
- stty_modem_control(sp, TIOCM_DTR, DMBIC);
+ stty_modem_control(sp, TIOCM_DTR, TIOCMBIC);
  break;
  case TIOCMBIS:
- stty_modem_control(sp, *((int *)data), DMBIS);
+ stty_modem_control(sp, *((int *)data), TIOCMBIS);
  break;
  case TIOCMBIC:
- stty_modem_control(sp, *((int *)data), DMBIC);
+ stty_modem_control(sp, *((int *)data), TIOCMBIC);
  break;
  case TIOCMGET:
- *((int *)data) = stty_modem_control(sp, 0, DMGET);
+ *((int *)data) = stty_modem_control(sp, 0, TIOCMGET);
  break;
  case TIOCMSET:
- stty_modem_control(sp, *((int *)data), DMSET);
+ stty_modem_control(sp, *((int *)data), TIOCMSET);
  break;
  case TIOCGFLAGS:
  *((int *)data) = sp->sp_openflags;
@@ -520,9 +520,10 @@ sttyioctl(dev, cmd, data, flags, p)
 }
 
 int
-stty_modem_control(sp, bits, how)
+stty_modem_control(sp, bits, cmd)
  struct stty_port *sp;
- int bits, how;
+ int bits;
+ u_long cmd;
 {
  struct spif_softc *csc = sp->sp_sc;
  struct tty *tp = sp->sp_tty;
@@ -531,8 +532,8 @@ stty_modem_control(sp, bits, how)
  s = spltty();
  STC_WRITE(csc, STC_CAR, sp->sp_channel);
 
- switch (how) {
- case DMGET:
+ switch (cmd) {
+ case TIOCMGET:
  bits = TIOCM_LE;
  if (DTR_READ(csc, sp->sp_channel))
  bits |= TIOCM_DTR;
@@ -546,7 +547,7 @@ stty_modem_control(sp, bits, how)
  if (ISSET(msvr, CD180_MSVR_RTS))
  bits |= TIOCM_RTS;
  break;
- case DMSET:
+ case TIOCMSET:
  DTR_WRITE(csc, sp->sp_channel, ISSET(bits, TIOCM_DTR) ? 1 : 0);
  if (ISSET(bits, TIOCM_RTS))
  STC_WRITE(csc, STC_MSVR,
@@ -555,14 +556,14 @@ stty_modem_control(sp, bits, how)
  STC_WRITE(csc, STC_MSVR,
     STC_READ(csc, STC_MSVR) | CD180_MSVR_RTS);
  break;
- case DMBIS:
+ case TIOCMBIS:
  if (ISSET(bits, TIOCM_DTR))
  DTR_WRITE(csc, sp->sp_channel, 1);
  if (ISSET(bits, TIOCM_RTS) && !ISSET(tp->t_cflag, CRTSCTS))
  STC_WRITE(csc, STC_MSVR,
     STC_READ(csc, STC_MSVR) & (~CD180_MSVR_RTS));
  break;
- case DMBIC:
+ case TIOCMBIC:
  if (ISSET(bits, TIOCM_DTR))
  DTR_WRITE(csc, sp->sp_channel, 0);
  if (ISSET(bits, TIOCM_RTS))
@@ -598,7 +599,7 @@ stty_param(tp, t)
 
  /* hang up line if ospeed is zero, otherwise raise DTR */
  stty_modem_control(sp, TIOCM_DTR,
-    (t->c_ospeed == 0 ? DMBIC : DMBIS));
+    (t->c_ospeed == 0 ? TIOCMBIC : TIOCMBIS));
 
  STC_WRITE(sc, STC_CAR, sp->sp_channel);
 
Index: sys/tty.h
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/sys/tty.h,v
retrieving revision 1.37
diff -u -p -r1.37 tty.h
--- sys/tty.h 24 May 2016 16:09:07 -0000 1.37
+++ sys/tty.h 13 Feb 2018 20:39:54 -0000
@@ -215,12 +215,6 @@ struct speedtab {
  int sp_code; /* Code. */
 };
 
-/* Modem control commands (driver). */
-#define DMSET 0
-#define DMBIS 1
-#define DMBIC 2
-#define DMGET 3
-
 /* Flags on a character passed to ttyinput. */
 #define TTY_CHARMASK 0x000000ff /* Character mask */
 #define TTY_QUOTE 0x00000100 /* Character quoted */

Reply | Threaded
Open this post in threaded view
|

Re: Remove DM* modem control commands

Martin Pieuchot
On 14/02/18(Wed) 00:48, Tobias Ulmer wrote:

> Remove the ancient tty.h DMSET etc. modem control commands. They're confusing
> to someone without the historical background. No documentation doesn't help
> either.
>
> TIOCM* serve the same purpose, are documented in tty(4) and the various *ctl()
> functions use the TTYCM_ register definitions, making this mix particularly odd
> looking.
>
> I've modified the *ctl() functions to use the same type and name as ioctl for
> clarity and correctness. Not strictly necessary, but makes me sleep better :)
>
> Tested lightly on sparc64. sab still works. No luna88k, sorry.
>
>
> ## Background blah blah, skip if you just don't care :)
>
> I've noticed these odd DM{SET,GET,BIC,BIS} constants in serial drivers all
> over the place and got curious. What do they mean?
>
> Turns out, "DM" is a bolt-in add-on modem by DEC you would connect to
> your DH-11, apparently a 16 port serial port multiplexer for your VAX or
> PDP-11. As far as I can tell, the drivers were last included in 4.3BSD.
> You grey beards correct me on this.
>
> The DM constants and the dmctl() function to manipulate the modem
> control register were added to dh in 1980 in order to support this fancy
> new modem.
>
> Since then, just about every BSD serial driver has copied the basic structure,
> spreading DM* absolutely everywhere.
>
> In 1982, Bill Shannon wanted to play with this control register in userspace
> (tip) and the ioctl interface was expanded by TIOCM{SET,GET,BIS,BIC}, hard
> coding the interface and register layout of that modem family for decades to come.
>
> dh gains dm support:
> https://github.com/weiss/original-bsd/commit/b47c3865305da4a404343aeedf0e3561071aae10
>
> TIOCM modem control register bits show up:
> https://github.com/weiss/original-bsd/commit/d9d9928137170ec2f49e62509b12d012cac154de
> https://github.com/weiss/original-bsd/commit/c849aa74bd3aaa1d644d74d9628ba0e1be028e1a
>
> http://gunkies.org/wiki/DH11_asynchronous_serial_line_interface
> http://bitsavers.trailing-edge.com/pdf/dec/unibus/ datasheets..
>
> Who needs TV when you can dig up amusing trivia about early BSD development!

Your diff contains a duplicated chunk: the one in sys/tty.h.

No software on codesearch.debian.net rely on the defines you're removing,
so ok with me :)

> Index: sys/tty.h
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/sys/tty.h,v
> retrieving revision 1.37
> diff -u -p -r1.37 tty.h
> --- sys/tty.h 24 May 2016 16:09:07 -0000 1.37
> +++ sys/tty.h 13 Feb 2018 20:39:54 -0000
> @@ -215,12 +215,6 @@ struct speedtab {
>   int sp_code; /* Code. */
>  };
>  
> -/* Modem control commands (driver). */
> -#define DMSET 0
> -#define DMBIS 1
> -#define DMBIC 2
> -#define DMGET 3
> -
>  /* Flags on a character passed to ttyinput. */
>  #define TTY_CHARMASK 0x000000ff /* Character mask */
>  #define TTY_QUOTE 0x00000100 /* Character quoted */
>  
> Index: arch/armv7/exynos/exuart.c
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/arch/armv7/exynos/exuart.c,v
> retrieving revision 1.13
> diff -u -p -r1.13 exuart.c
> --- arch/armv7/exynos/exuart.c 27 Oct 2017 11:23:28 -0000 1.13
> +++ arch/armv7/exynos/exuart.c 13 Feb 2018 20:38:56 -0000
> @@ -784,37 +784,37 @@ exuartioctl( dev_t dev, u_long cmd, cadd
>  
>   case TIOCSDTR:
>  #if 0
> - (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIS);
> + (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, TIOCMBIS);
>  #endif
>   break;
>  
>   case TIOCCDTR:
>  #if 0
> - (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIC);
> + (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, TIOCMBIC);
>  #endif
>   break;
>  
>   case TIOCMSET:
>  #if 0
> - (void) clmctl(dev, *(int *) data, DMSET);
> + (void) clmctl(dev, *(int *) data, TIOCMSET);
>  #endif
>   break;
>  
>   case TIOCMBIS:
>  #if 0
> - (void) clmctl(dev, *(int *) data, DMBIS);
> + (void) clmctl(dev, *(int *) data, TIOCMBIS);
>  #endif
>   break;
>  
>   case TIOCMBIC:
>  #if 0
> - (void) clmctl(dev, *(int *) data, DMBIC);
> + (void) clmctl(dev, *(int *) data, TIOCMBIC);
>  #endif
>   break;
>  
>          case TIOCMGET:
>  #if 0
> - *(int *)data = clmctl(dev, 0, DMGET);
> + *(int *)data = clmctl(dev, 0, TIOCMGET);
>  #endif
>   break;
>  
> Index: arch/armv7/imx/imxuart.c
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/arch/armv7/imx/imxuart.c,v
> retrieving revision 1.17
> diff -u -p -r1.17 imxuart.c
> --- arch/armv7/imx/imxuart.c 30 Dec 2017 13:34:56 -0000 1.17
> +++ arch/armv7/imx/imxuart.c 13 Feb 2018 20:38:56 -0000
> @@ -701,37 +701,37 @@ imxuartioctl( dev_t dev, u_long cmd, cad
>  
>   case TIOCSDTR:
>  #if 0
> - (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIS);
> + (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, TIOCMBIS);
>  #endif
>   break;
>  
>   case TIOCCDTR:
>  #if 0
> - (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, DMBIC);
> + (void) clmctl(dev, TIOCM_DTR | TIOCM_RTS, TIOCMBIC);
>  #endif
>   break;
>  
>   case TIOCMSET:
>  #if 0
> - (void) clmctl(dev, *(int *) data, DMSET);
> + (void) clmctl(dev, *(int *) data, TIOCMSET);
>  #endif
>   break;
>  
>   case TIOCMBIS:
>  #if 0
> - (void) clmctl(dev, *(int *) data, DMBIS);
> + (void) clmctl(dev, *(int *) data, TIOCMBIS);
>  #endif
>   break;
>  
>   case TIOCMBIC:
>  #if 0
> - (void) clmctl(dev, *(int *) data, DMBIC);
> + (void) clmctl(dev, *(int *) data, TIOCMBIC);
>  #endif
>   break;
>  
>          case TIOCMGET:
>  #if 0
> - *(int *)data = clmctl(dev, 0, DMGET);
> + *(int *)data = clmctl(dev, 0, TIOCMGET);
>  #endif
>   break;
>  
> Index: arch/luna88k/dev/siotty.c
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/arch/luna88k/dev/siotty.c,v
> retrieving revision 1.21
> diff -u -p -r1.21 siotty.c
> --- arch/luna88k/dev/siotty.c 3 Nov 2017 06:54:06 -0000 1.21
> +++ arch/luna88k/dev/siotty.c 13 Feb 2018 20:39:04 -0000
> @@ -100,7 +100,7 @@ void siottyintr(void *);
>  void siottysoft(void *);
>  void siotty_rxsoft(struct siotty_softc *, struct tty *);
>  void siotty_txsoft(struct siotty_softc *, struct tty *);
> -int  siomctl(struct siotty_softc *, int, int);
> +int  siomctl(struct siotty_softc *, int, u_long);
>  
>  int  siotty_match(struct device *, void *, void *);
>  void siotty_attach(struct device *, struct device *, void *);
> @@ -409,7 +409,7 @@ sioparam(struct tty *tp, struct termios
>  }
>  
>  int
> -siomctl(struct siotty_softc *sc, int control, int op)
> +siomctl(struct siotty_softc *sc, int control, u_long cmd)
>  {
>   int val, s, wr5, rr;
>  
> @@ -422,17 +422,17 @@ siomctl(struct siotty_softc *sc, int con
>   val |= WR5_RTS;
>   s = spltty();
>   wr5 = sc->sc_wr[WR5];
> - switch (op) {
> - case DMSET:
> + switch (cmd) {
> + case TIOCMSET:
>   wr5 &= ~(WR5_BREAK|WR5_DTR|WR5_RTS);
>   /* FALLTHROUGH */
> - case DMBIS:
> + case TIOCMBIS:
>   wr5 |= val;
>   break;
> - case DMBIC:
> + case TIOCMBIC:
>   wr5 &= ~val;
>   break;
> - case DMGET:
> + case TIOCMGET:
>   val = 0;
>   rr = getsiocsr(sc->sc_ctl);
>   if (wr5 & WR5_DTR)
> @@ -519,13 +519,13 @@ sioclose(dev_t dev, int flag, int mode,
>   (*linesw[tp->t_line].l_close)(tp, flag, p);
>  
>   s = spltty();
> - siomctl(sc, TIOCM_BREAK, DMBIC);
> + siomctl(sc, TIOCM_BREAK, TIOCMBIC);
>  #if 0 /* because unable to feed DTR signal */
>   if ((tp->t_cflag & HUPCL)
>      || tp->t_wopen || (tp->t_state & TS_ISOPEN) == 0) {
> - siomctl(sc, TIOCM_DTR, DMBIC);
> + siomctl(sc, TIOCM_DTR, TIOCMBIC);
>   /* Yield CPU time to others for 1 second, then ... */
> - siomctl(sc, TIOCM_DTR, DMBIS);
> + siomctl(sc, TIOCM_DTR, TIOCMBIS);
>   }
>  #endif
>   splx(s);
> @@ -568,28 +568,28 @@ sioioctl(dev_t dev, u_long cmd, caddr_t
>   /* the last resort for TIOC ioctl tranversing */
>   switch (cmd) {
>   case TIOCSBRK: /* Set the hardware into BREAK condition */
> - siomctl(sc, TIOCM_BREAK, DMBIS);
> + siomctl(sc, TIOCM_BREAK, TIOCMBIS);
>   break;
>   case TIOCCBRK: /* Clear the hardware BREAK condition */
> - siomctl(sc, TIOCM_BREAK, DMBIC);
> + siomctl(sc, TIOCM_BREAK, TIOCMBIC);
>   break;
>   case TIOCSDTR: /* Assert DTR signal */
> - siomctl(sc, TIOCM_DTR|TIOCM_RTS, DMBIS);
> + siomctl(sc, TIOCM_DTR|TIOCM_RTS, TIOCMBIS);
>   break;
>   case TIOCCDTR: /* Clear DTR signal */
> - siomctl(sc, TIOCM_DTR|TIOCM_RTS, DMBIC);
> + siomctl(sc, TIOCM_DTR|TIOCM_RTS, TIOCMBIC);
>   break;
>   case TIOCMSET: /* Set modem state replacing current one */
> - siomctl(sc, *(int *)data, DMSET);
> + siomctl(sc, *(int *)data, TIOCMSET);
>   break;
>   case TIOCMGET: /* Return current modem state */
> - *(int *)data = siomctl(sc, 0, DMGET);
> + *(int *)data = siomctl(sc, 0, TIOCMGET);
>   break;
>   case TIOCMBIS: /* Set individual bits of modem state */
> - siomctl(sc, *(int *)data, DMBIS);
> + siomctl(sc, *(int *)data, TIOCMBIS);
>   break;
>   case TIOCMBIC: /* Clear individual bits of modem state */
> - siomctl(sc, *(int *)data, DMBIC);
> + siomctl(sc, *(int *)data, TIOCMBIC);
>   break;
>   case TIOCSFLAGS: /* Instruct how serial port behaves */
>   error = suser(p, 0);
> Index: arch/sparc64/dev/sab.c
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/arch/sparc64/dev/sab.c,v
> retrieving revision 1.34
> diff -u -p -r1.34 sab.c
> --- arch/sparc64/dev/sab.c 30 Dec 2017 23:08:29 -0000 1.34
> +++ arch/sparc64/dev/sab.c 13 Feb 2018 20:39:12 -0000
> @@ -136,7 +136,7 @@ void sabtty_start(struct tty *);
>  int sabtty_param(struct tty *, struct termios *);
>  int sabtty_intr(struct sabtty_softc *, int *);
>  void sabtty_softintr(struct sabtty_softc *);
> -int sabtty_mdmctrl(struct sabtty_softc *, int, int);
> +int sabtty_mdmctrl(struct sabtty_softc *, int, u_long);
>  int sabtty_cec_wait(struct sabtty_softc *);
>  int sabtty_tec_wait(struct sabtty_softc *);
>  void sabtty_reset(struct sabtty_softc *);
> @@ -749,7 +749,7 @@ sabttyopen(dev, flags, mode, p)
>   return (s);
>  
>   if (tp->t_cflag & HUPCL) {
> - sabtty_mdmctrl(sc, 0, DMSET);
> + sabtty_mdmctrl(sc, 0, TIOCMSET);
>   (void)tsleep(sc, TTIPRI, ttclos, hz);
>   }
>  
> @@ -788,7 +788,7 @@ sabttyclose(dev, flags, mode, p)
>   sc->sc_flags &= ~SABTTYF_TXDRAIN;
>  
>   if (tp->t_cflag & HUPCL) {
> - sabtty_mdmctrl(sc, 0, DMSET);
> + sabtty_mdmctrl(sc, 0, TIOCMSET);
>   (void)tsleep(bc, TTIPRI, ttclos, hz);
>   }
>  
> @@ -864,22 +864,22 @@ sabttyioctl(dev, cmd, data, flags, p)
>      SAB_READ(sc, SAB_DAFO) & ~SAB_DAFO_XBRK);
>   break;
>   case TIOCSDTR:
> - sabtty_mdmctrl(sc, TIOCM_DTR, DMBIS);
> + sabtty_mdmctrl(sc, TIOCM_DTR, TIOCMBIS);
>   break;
>   case TIOCCDTR:
> - sabtty_mdmctrl(sc, TIOCM_DTR, DMBIC);
> + sabtty_mdmctrl(sc, TIOCM_DTR, TIOCMBIC);
>   break;
>   case TIOCMBIS:
> - sabtty_mdmctrl(sc, *((int *)data), DMBIS);
> + sabtty_mdmctrl(sc, *((int *)data), TIOCMBIS);
>   break;
>   case TIOCMBIC:
> - sabtty_mdmctrl(sc, *((int *)data), DMBIC);
> + sabtty_mdmctrl(sc, *((int *)data), TIOCMBIC);
>   break;
>   case TIOCMGET:
> - *((int *)data) = sabtty_mdmctrl(sc, 0, DMGET);
> + *((int *)data) = sabtty_mdmctrl(sc, 0, TIOCMGET);
>   break;
>   case TIOCMSET:
> - sabtty_mdmctrl(sc, *((int *)data), DMSET);
> + sabtty_mdmctrl(sc, *((int *)data), TIOCMSET);
>   break;
>   case TIOCGFLAGS:
>   *((int *)data) = sc->sc_openflags;
> @@ -931,16 +931,17 @@ sabttystop(tp, flags)
>  }
>  
>  int
> -sabtty_mdmctrl(sc, bits, how)
> +sabtty_mdmctrl(sc, bits, cmd)
>   struct sabtty_softc *sc;
> - int bits, how;
> + int bits;
> + u_long cmd;
>  {
>   u_int8_t r;
>   int s;
>  
>   s = spltty();
> - switch (how) {
> - case DMGET:
> + switch (cmd) {
> + case TIOCMGET:
>   bits = 0;
>   if (SAB_READ(sc, SAB_STAR) & SAB_STAR_CTS)
>   bits |= TIOCM_CTS;
> @@ -957,7 +958,7 @@ sabtty_mdmctrl(sc, bits, how)
>   if ((r & (SAB_MODE_RTS|SAB_MODE_FRTS)) == SAB_MODE_RTS)
>   bits |= TIOCM_RTS;
>   break;
> - case DMSET:
> + case TIOCMSET:
>   r = SAB_READ(sc, SAB_MODE);
>   if (bits & TIOCM_RTS) {
>   r &= ~SAB_MODE_FRTS;
> @@ -973,7 +974,7 @@ sabtty_mdmctrl(sc, bits, how)
>   r |= sc->sc_pvr_dtr;
>   SAB_WRITE(sc, SAB_PVR, r);
>   break;
> - case DMBIS:
> + case TIOCMBIS:
>   if (bits & TIOCM_RTS) {
>   r = SAB_READ(sc, SAB_MODE);
>   r &= ~SAB_MODE_FRTS;
> @@ -986,7 +987,7 @@ sabtty_mdmctrl(sc, bits, how)
>   SAB_WRITE(sc, SAB_PVR, r);
>   }
>   break;
> - case DMBIC:
> + case TIOCMBIC:
>   if (bits & TIOCM_RTS) {
>   r = SAB_READ(sc, SAB_MODE);
>   r |= SAB_MODE_FRTS | SAB_MODE_RTS;
> @@ -1021,7 +1022,7 @@ sabttyparam(sc, tp, t)
>  
>   /* hang up line if ospeed is zero, otherwise raise dtr */
>   sabtty_mdmctrl(sc, TIOCM_DTR,
> -    (t->c_ospeed == 0) ? DMBIC : DMBIS);
> +    (t->c_ospeed == 0) ? TIOCMBIC : TIOCMBIS);
>  
>   dafo = SAB_READ(sc, SAB_DAFO);
>  
> Index: dev/ic/cy.c
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/dev/ic/cy.c,v
> retrieving revision 1.37
> diff -u -p -r1.37 cy.c
> --- dev/ic/cy.c 8 Sep 2017 05:36:52 -0000 1.37
> +++ dev/ic/cy.c 13 Feb 2018 20:39:20 -0000
> @@ -72,7 +72,7 @@ int cy_intr(void *);
>  int cyparam(struct tty *, struct termios *);
>  void cystart(struct tty *);
>  void cy_poll(void *);
> -int cy_modem_control(struct cy_port *, int, int);
> +int cy_modem_control(struct cy_port *, int, u_long);
>  void cy_enable_transmitter(struct cy_port *);
>  void cd1400_channel_cmd(struct cy_port *, int);
>  int cy_speed(speed_t, int *, int *, int);
> @@ -345,7 +345,7 @@ cyopen(dev, flag, mode, p)
>   ttsetwater(tp);
>  
>   /* raise RTS too */
> - cy_modem_control(cy, TIOCM_RTS, DMBIS);
> + cy_modem_control(cy, TIOCM_RTS, TIOCMBIS);
>  
>   cy->cy_carrier_stat = cd_read_reg(cy, CD1400_MSVR2);
>  
> @@ -414,7 +414,7 @@ cyclose(dev, flag, mode, p)
>      !ISSET(cy->cy_openflags, TIOCFLAG_SOFTCAR)) {
>   /* drop DTR and RTS
>     (should we wait for output buffer to become empty first?) */
> - cy_modem_control(cy, 0, DMSET);
> + cy_modem_control(cy, 0, TIOCMSET);
>   }
>  
>   /*
> @@ -536,27 +536,27 @@ cyioctl(dev, cmd, data, flag, p)
>   break;
>  
>   case TIOCSDTR: /* DTR on */
> - cy_modem_control(cy, TIOCM_DTR, DMBIS);
> + cy_modem_control(cy, TIOCM_DTR, TIOCMBIS);
>   break;
>  
>   case TIOCCDTR: /* DTR off */
> - cy_modem_control(cy, TIOCM_DTR, DMBIC);
> + cy_modem_control(cy, TIOCM_DTR, TIOCMBIC);
>   break;
>  
>   case TIOCMSET: /* set new modem control line values */
> - cy_modem_control(cy, *((int *)data), DMSET);
> + cy_modem_control(cy, *((int *)data), TIOCMSET);
>   break;
>  
>   case TIOCMBIS: /* turn modem control bits on */
> - cy_modem_control(cy, *((int *)data), DMBIS);
> + cy_modem_control(cy, *((int *)data), TIOCMBIS);
>   break;
>  
>   case TIOCMBIC: /* turn modem control bits off */
> - cy_modem_control(cy, *((int *)data), DMBIC);
> + cy_modem_control(cy, *((int *)data), TIOCMBIC);
>   break;
>  
>   case TIOCMGET: /* get modem control/status line state */
> - *((int *)data) = cy_modem_control(cy, 0, DMGET);
> + *((int *)data) = cy_modem_control(cy, 0, TIOCMGET);
>   break;
>  
>   case TIOCGFLAGS:
> @@ -684,8 +684,9 @@ cyparam(tp, t)
>  
>   s = spltty();
>  
> - /* hang up the line is ospeed is zero, else turn DTR on */
> - cy_modem_control(cy, TIOCM_DTR, (t->c_ospeed == 0 ? DMBIC : DMBIS));
> + /* hang up the line if ospeed is zero, else turn DTR on */
> + cy_modem_control(cy, TIOCM_DTR,
> +    (t->c_ospeed == 0 ? TIOCMBIC : TIOCMBIS));
>  
>   /* channel was selected by the above call to cy_modem_control() */
>   /* cd_write_reg(cy, CD1400_CAR, port & CD1400_CAR_CHAN); */
> @@ -807,10 +808,10 @@ cyparam(tp, t)
>   *
>   */
>  int
> -cy_modem_control(cy, bits, howto)
> +cy_modem_control(cy, bits, cmd)
>   struct cy_port *cy;
>   int bits;
> - int howto;
> + u_long cmd;
>  {
>   int s, msvr;
>  
> @@ -820,8 +821,8 @@ cy_modem_control(cy, bits, howto)
>   cd_write_reg(cy, CD1400_CAR, cy->cy_port_num & CD1400_CAR_CHAN);
>  
>  /* does not manipulate RTS if it is used for flow control */
> - switch (howto) {
> - case DMGET:
> + switch (cmd) {
> + case TIOCMGET:
>   bits = 0;
>   if (cy->cy_channel_control & CD1400_CCR_RCVEN)
>   bits |= TIOCM_LE;
> @@ -850,7 +851,7 @@ cy_modem_control(cy, bits, howto)
>   splx(s);
>   return (bits);
>  
> - case DMSET: /* replace old values with new ones */
> + case TIOCMSET: /* replace old values with new ones */
>  #ifdef CY_HW_RTS
>   if (!ISSET(cy->cy_tty->t_cflag, CRTSCTS))
>   cd_write_reg(cy, CD1400_MSVR2,
> @@ -866,7 +867,7 @@ cy_modem_control(cy, bits, howto)
>  #endif /* CY_HW_RTS */
>   break;
>  
> - case DMBIS: /* set bits */
> + case TIOCMBIS: /* set bits */
>  #ifdef CY_HW_RTS
>   if (!ISSET(cy->cy_tty->t_cflag, CRTSCTS) &&
>      (bits & TIOCM_RTS) != 0)
> @@ -882,7 +883,7 @@ cy_modem_control(cy, bits, howto)
>  #endif /* CY_HW_RTS */
>   break;
>  
> - case DMBIC: /* clear bits */
> + case TIOCMBIC: /* clear bits */
>  #ifdef CY_HW_RTS
>   if (!ISSET(cy->cy_tty->t_cflag, CRTSCTS) &&
>      (bits & TIOCM_RTS))
> @@ -1023,7 +1024,7 @@ cy_poll(void *arg)
>  #endif
>   if (CY_DIALIN(tp->t_dev) &&
>      !(*linesw[tp->t_line].l_modem)(tp, carrier))
> - cy_modem_control(cy, TIOCM_DTR, DMBIC);
> + cy_modem_control(cy, TIOCM_DTR, TIOCMBIC);
>  
>  #ifdef CY_DEBUG1
>   did_something = 1;
> Index: dev/sbus/magma.c
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/dev/sbus/magma.c,v
> retrieving revision 1.27
> diff -u -p -r1.27 magma.c
> --- dev/sbus/magma.c 30 Dec 2017 23:08:29 -0000 1.27
> +++ dev/sbus/magma.c 13 Feb 2018 20:39:45 -0000
> @@ -941,7 +941,7 @@ mttyclose(dev_t dev, int flag, int mode,
>   */
>  
>   /* drop DTR and RTS */
> - (void)mtty_modem_control(mp, 0, DMSET);
> + (void)mtty_modem_control(mp, 0, TIOCMSET);
>  
>   /* turn off the channel
>   CD1400_WRITE_REG(cd, CD1400_CAR, mp->mp_channel);
> @@ -1026,27 +1026,27 @@ mttyioctl(dev_t dev, u_long cmd, caddr_t
>   break;
>  
>   case TIOCSDTR: /* set DTR */
> - mtty_modem_control(mp, TIOCM_DTR, DMBIS);
> + mtty_modem_control(mp, TIOCM_DTR, TIOCMBIS);
>   break;
>  
>   case TIOCCDTR: /* clear DTR */
> - mtty_modem_control(mp, TIOCM_DTR, DMBIC);
> + mtty_modem_control(mp, TIOCM_DTR, TIOCMBIC);
>   break;
>  
>   case TIOCMSET: /* set modem lines */
> - mtty_modem_control(mp, *((int *)data), DMSET);
> + mtty_modem_control(mp, *((int *)data), TIOCMSET);
>   break;
>  
>   case TIOCMBIS: /* bit set modem lines */
> - mtty_modem_control(mp, *((int *)data), DMBIS);
> + mtty_modem_control(mp, *((int *)data), TIOCMBIS);
>   break;
>  
>   case TIOCMBIC: /* bit clear modem lines */
> - mtty_modem_control(mp, *((int *)data), DMBIC);
> + mtty_modem_control(mp, *((int *)data), TIOCMBIC);
>   break;
>  
>   case TIOCMGET: /* get modem lines */
> - *((int *)data) = mtty_modem_control(mp, 0, DMGET);
> + *((int *)data) = mtty_modem_control(mp, 0, TIOCMGET);
>   break;
>  
>   case TIOCGFLAGS:
> @@ -1142,7 +1142,7 @@ mtty_start(struct tty *tp)
>   * only let them fiddle with RTS if CRTSCTS is not enabled
>   */
>  int
> -mtty_modem_control(struct mtty_port *mp, int bits, int howto)
> +mtty_modem_control(struct mtty_port *mp, int bits, u_long cmd)
>  {
>   struct cd1400 *cd = mp->mp_cd1400;
>   struct tty *tp = mp->mp_tty;
> @@ -1152,8 +1152,8 @@ mtty_modem_control(struct mtty_port *mp,
>  
>   CD1400_WRITE_REG(cd, CD1400_CAR, mp->mp_channel);
>  
> - switch(howto) {
> - case DMGET: /* get bits */
> + switch(cmd) {
> + case TIOCMGET: /* get bits */
>   bits = 0;
>  
>   bits |= TIOCM_LE;
> @@ -1176,7 +1176,7 @@ mtty_modem_control(struct mtty_port *mp,
>  
>   break;
>  
> - case DMSET: /* reset bits */
> + case TIOCMSET: /* reset bits */
>   if (!ISSET(tp->t_cflag, CRTSCTS))
>   CD1400_WRITE_REG(cd, CD1400_MSVR2,
>      ((bits & TIOCM_RTS) ? CD1400_MSVR2_DTR : 0));
> @@ -1186,7 +1186,7 @@ mtty_modem_control(struct mtty_port *mp,
>  
>   break;
>  
> - case DMBIS: /* set bits */
> + case TIOCMBIS: /* set bits */
>   if ((bits & TIOCM_RTS) && !ISSET(tp->t_cflag, CRTSCTS))
>   CD1400_WRITE_REG(cd, CD1400_MSVR2, CD1400_MSVR2_DTR);
>  
> @@ -1195,7 +1195,7 @@ mtty_modem_control(struct mtty_port *mp,
>  
>   break;
>  
> - case DMBIC: /* clear bits */
> + case TIOCMBIC: /* clear bits */
>   if ((bits & TIOCM_RTS) && !ISSET(tp->t_cflag, CRTSCTS))
>   CD1400_WRITE_REG(cd, CD1400_MSVR2, 0);
>  
> @@ -1234,7 +1234,7 @@ mtty_param(struct tty *tp, struct termio
>  
>   /* hang up the line if ospeed is zero, else raise DTR */
>   (void)mtty_modem_control(mp, TIOCM_DTR,
> -    (t->c_ospeed == 0 ? DMBIC : DMBIS));
> +    (t->c_ospeed == 0 ? TIOCMBIC : TIOCMBIS));
>  
>   /* select channel, done in mtty_modem_control() */
>   /* CD1400_WRITE_REG(cd, CD1400_CAR, mp->mp_channel); */
> Index: dev/sbus/magmareg.h
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/dev/sbus/magmareg.h,v
> retrieving revision 1.9
> diff -u -p -r1.9 magmareg.h
> --- dev/sbus/magmareg.h 29 Nov 2008 01:55:06 -0000 1.9
> +++ dev/sbus/magmareg.h 13 Feb 2018 20:39:45 -0000
> @@ -209,7 +209,7 @@ void magma_soft(void *);
>  
>  int mtty_match(struct device *, void *, void *);
>  void mtty_attach(struct device *, struct device *, void *);
> -int mtty_modem_control(struct mtty_port *, int, int);
> +int mtty_modem_control(struct mtty_port *, int, u_long);
>  int mtty_param(struct tty *, struct termios *);
>  void mtty_start(struct tty *);
>  
> Index: dev/sbus/spif.c
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/dev/sbus/spif.c,v
> retrieving revision 1.20
> diff -u -p -r1.20 spif.c
> --- dev/sbus/spif.c 30 Dec 2017 23:08:29 -0000 1.20
> +++ dev/sbus/spif.c 13 Feb 2018 20:39:45 -0000
> @@ -77,7 +77,7 @@ void spifsoftintr(void *);
>  
>  int stty_param(struct tty *, struct termios *);
>  struct tty *sttytty(dev_t);
> -int stty_modem_control(struct stty_port *, int, int);
> +int stty_modem_control(struct stty_port *, int, u_long);
>  void stty_write_ccr(struct spif_softc *, u_int8_t);
>  int stty_compute_baud(speed_t, int, u_int8_t *, u_int8_t *);
>  void stty_start(struct tty *);
> @@ -435,7 +435,7 @@ sttyclose(dev, flags, mode, p)
>   s = spltty();
>  
>   if (ISSET(tp->t_cflag, HUPCL) || !ISSET(tp->t_state, TS_ISOPEN)) {
> - stty_modem_control(sp, 0, DMSET);
> + stty_modem_control(sp, 0, TIOCMSET);
>   STC_WRITE(csc, STC_CAR, port);
>   STC_WRITE(csc, STC_CCR,
>      CD180_CCR_CMD_RESET|CD180_CCR_RESETCHAN);
> @@ -484,22 +484,22 @@ sttyioctl(dev, cmd, data, flags, p)
>      STC_READ(sc, STC_SRER) | CD180_SRER_TXD);
>   break;
>   case TIOCSDTR:
> - stty_modem_control(sp, TIOCM_DTR, DMBIS);
> + stty_modem_control(sp, TIOCM_DTR, TIOCMBIS);
>   break;
>   case TIOCCDTR:
> - stty_modem_control(sp, TIOCM_DTR, DMBIC);
> + stty_modem_control(sp, TIOCM_DTR, TIOCMBIC);
>   break;
>   case TIOCMBIS:
> - stty_modem_control(sp, *((int *)data), DMBIS);
> + stty_modem_control(sp, *((int *)data), TIOCMBIS);
>   break;
>   case TIOCMBIC:
> - stty_modem_control(sp, *((int *)data), DMBIC);
> + stty_modem_control(sp, *((int *)data), TIOCMBIC);
>   break;
>   case TIOCMGET:
> - *((int *)data) = stty_modem_control(sp, 0, DMGET);
> + *((int *)data) = stty_modem_control(sp, 0, TIOCMGET);
>   break;
>   case TIOCMSET:
> - stty_modem_control(sp, *((int *)data), DMSET);
> + stty_modem_control(sp, *((int *)data), TIOCMSET);
>   break;
>   case TIOCGFLAGS:
>   *((int *)data) = sp->sp_openflags;
> @@ -520,9 +520,10 @@ sttyioctl(dev, cmd, data, flags, p)
>  }
>  
>  int
> -stty_modem_control(sp, bits, how)
> +stty_modem_control(sp, bits, cmd)
>   struct stty_port *sp;
> - int bits, how;
> + int bits;
> + u_long cmd;
>  {
>   struct spif_softc *csc = sp->sp_sc;
>   struct tty *tp = sp->sp_tty;
> @@ -531,8 +532,8 @@ stty_modem_control(sp, bits, how)
>   s = spltty();
>   STC_WRITE(csc, STC_CAR, sp->sp_channel);
>  
> - switch (how) {
> - case DMGET:
> + switch (cmd) {
> + case TIOCMGET:
>   bits = TIOCM_LE;
>   if (DTR_READ(csc, sp->sp_channel))
>   bits |= TIOCM_DTR;
> @@ -546,7 +547,7 @@ stty_modem_control(sp, bits, how)
>   if (ISSET(msvr, CD180_MSVR_RTS))
>   bits |= TIOCM_RTS;
>   break;
> - case DMSET:
> + case TIOCMSET:
>   DTR_WRITE(csc, sp->sp_channel, ISSET(bits, TIOCM_DTR) ? 1 : 0);
>   if (ISSET(bits, TIOCM_RTS))
>   STC_WRITE(csc, STC_MSVR,
> @@ -555,14 +556,14 @@ stty_modem_control(sp, bits, how)
>   STC_WRITE(csc, STC_MSVR,
>      STC_READ(csc, STC_MSVR) | CD180_MSVR_RTS);
>   break;
> - case DMBIS:
> + case TIOCMBIS:
>   if (ISSET(bits, TIOCM_DTR))
>   DTR_WRITE(csc, sp->sp_channel, 1);
>   if (ISSET(bits, TIOCM_RTS) && !ISSET(tp->t_cflag, CRTSCTS))
>   STC_WRITE(csc, STC_MSVR,
>      STC_READ(csc, STC_MSVR) & (~CD180_MSVR_RTS));
>   break;
> - case DMBIC:
> + case TIOCMBIC:
>   if (ISSET(bits, TIOCM_DTR))
>   DTR_WRITE(csc, sp->sp_channel, 0);
>   if (ISSET(bits, TIOCM_RTS))
> @@ -598,7 +599,7 @@ stty_param(tp, t)
>  
>   /* hang up line if ospeed is zero, otherwise raise DTR */
>   stty_modem_control(sp, TIOCM_DTR,
> -    (t->c_ospeed == 0 ? DMBIC : DMBIS));
> +    (t->c_ospeed == 0 ? TIOCMBIC : TIOCMBIS));
>  
>   STC_WRITE(sc, STC_CAR, sp->sp_channel);
>  
> Index: sys/tty.h
> ===================================================================
> RCS file: /home/vcs/cvs/openbsd/src/sys/sys/tty.h,v
> retrieving revision 1.37
> diff -u -p -r1.37 tty.h
> --- sys/tty.h 24 May 2016 16:09:07 -0000 1.37
> +++ sys/tty.h 13 Feb 2018 20:39:54 -0000
> @@ -215,12 +215,6 @@ struct speedtab {
>   int sp_code; /* Code. */
>  };
>  
> -/* Modem control commands (driver). */
> -#define DMSET 0
> -#define DMBIS 1
> -#define DMBIC 2
> -#define DMGET 3
> -
>  /* Flags on a character passed to ttyinput. */
>  #define TTY_CHARMASK 0x000000ff /* Character mask */
>  #define TTY_QUOTE 0x00000100 /* Character quoted */
>