+/*
+ * Definition of the driver for the auto-configuration program.
+ * There is one definition for the dh and one for the dm.
+ */
+int dhprobe(), dhattach(), dhrint(), dhxint(), dhtimer();
+struct uba_device *dhinfo[NDH];
+u_short dhstd[] = { 0 };
+struct uba_driver dhdriver =
+ { dhprobe, 0, dhattach, 0, dhstd, "dh", dhinfo };
+
+int dmprobe(), dmattach(), dmintr();
+struct uba_device *dminfo[NDH];
+u_short dmstd[] = { 0 };
+struct uba_driver dmdriver =
+ { dmprobe, 0, dmattach, 0, dmstd, "dm", dminfo };
+
+#ifndef PORTSELECTOR
+#define ISPEED B9600
+#define IFLAGS (EVENP|ODDP|ECHO)
+#else
+#define ISPEED B4800
+#define IFLAGS (EVENP|ODDP)
+#endif
+
+#define FASTTIMER (hz/30) /* scan rate with silos on */
+
+/*
+ * Local variables for the driver
+ */
+short dhsar[NDH]; /* software copy of last bar */
+short dhsoftCAR[NDH];
+
+struct tty dh11[NDH*16];
+int ndh11 = NDH*16;
+int dhact; /* mask of active dh's */
+int dhsilos; /* mask of dh's with silo in use */
+int dhchars[NDH]; /* recent input count */
+int dhrate[NDH]; /* smoothed input count */
+int dhhighrate = 100; /* silo on if dhchars > dhhighrate */
+int dhlowrate = 75; /* silo off if dhrate < dhlowrate */
+static short timerstarted;
+int dhstart(), ttrstrt();