SCCS-vsn: sys/vax/uba/dh.c 4.19
SCCS-vsn: sys/vax/uba/dz.c 4.14
SCCS-vsn: sys/vax/mba/mba.c 4.7
-/* mba.c 4.6 81/02/15 */
+/* mba.c 4.7 81/02/19 */
/*
* Massbus driver; arbitrates massbusses through device driver routines
/*
* Massbus driver; arbitrates massbusses through device driver routines
-/* dh.c 4.18 81/02/18 */
+/* dh.c 4.19 81/02/19 */
#include "dh.h"
#if NDH11 > 0
#include "dh.h"
#if NDH11 > 0
#include "../h/map.h"
#include "../h/pte.h"
#include "../h/buf.h"
#include "../h/map.h"
#include "../h/pte.h"
#include "../h/buf.h"
#include "../h/uba.h"
#include "../h/bk.h"
#include "../h/clist.h"
#include "../h/uba.h"
#include "../h/bk.h"
#include "../h/clist.h"
struct uba_dinfo *dhinfo[NDH11];
u_short dhstd[] = { 0 };
struct uba_driver dhdriver =
struct uba_dinfo *dhinfo[NDH11];
u_short dhstd[] = { 0 };
struct uba_driver dhdriver =
- { dhcntrlr, dhslave, 0, 0, dhstd, "dh11", dhinfo };
+ { dhcntrlr, dhslave, 0, 0, dhstd, "dh", dhinfo };
int dmcntrlr(), dmslave(), dmintr();
struct uba_dinfo *dminfo[NDH11];
u_short dmstd[] = { 0 };
struct uba_driver dmdriver =
int dmcntrlr(), dmslave(), dmintr();
struct uba_dinfo *dminfo[NDH11];
u_short dmstd[] = { 0 };
struct uba_driver dmdriver =
- { dmcntrlr, dmslave, 0, 0, dmstd, "dm11", dminfo };
+ { dmcntrlr, dmslave, 0, 0, dmstd, "dm", dminfo };
* Local variables for the driver
*/
short dhsar[NDH11]; /* software copy of last bar */
* Local variables for the driver
*/
short dhsar[NDH11]; /* software copy of last bar */
struct tty dh11[NDH11*16];
int ndh11 = NDH11*16;
struct tty dh11[NDH11*16];
int ndh11 = NDH11*16;
register struct dhdevice *dhaddr = (struct dhdevice *)reg;
int i;
register struct dhdevice *dhaddr = (struct dhdevice *)reg;
int i;
+#ifdef notdef
+ dhaddr->un.dhcsr = DH_RIE|DH_MM|DH_RI;
+ DELAY(5);
+ dhaddr->un.dhcsr = 0;
+#else
dhaddr->un.dhcsr = DH_TIE;
DELAY(5);
dhaddr->dhlpr = (B9600 << 10) | (B9600 << 6) | BITS7|PENABLE;
dhaddr->un.dhcsr = DH_TIE;
DELAY(5);
dhaddr->dhlpr = (B9600 << 10) | (B9600 << 6) | BITS7|PENABLE;
dhaddr->un.dhcsr = 0;
if (cvec && cvec != 0x200)
cvec -= 4; /* transmit -> receive */
dhaddr->un.dhcsr = 0;
if (cvec && cvec != 0x200)
cvec -= 4; /* transmit -> receive */
-#ifdef notdef
- dhaddr->un.dhcsr = DH_RIE|DH_MM;
- DELAY(5);
- dhaddr->un.dhcsrl |= DH_RI;
- DELAY(5);
- dhaddr->un.dhcsr = 0;
/*
* Routine called to init slave tables.
*/
/*
* Routine called to init slave tables.
*/
-dhslave(ui, reg, slaveno)
struct uba_dinfo *ui;
caddr_t reg;
{
struct uba_dinfo *ui;
caddr_t reg;
{
- /* no tables to set up */
+ dhsoftCAR[ui->ui_unit] = ui->ui_flags;
unit = minor(dev);
dm = unit >> 4;
tp = &dh11[unit];
unit = minor(dev);
dm = unit >> 4;
tp = &dh11[unit];
- if (dm >= NDH11 || (ui = dminfo[dm]) == 0 || ui->ui_alive == 0) {
+ unit &= 0xf;
+ if (dm >= NDH11 || (ui = dminfo[dm]) == 0 || ui->ui_alive == 0 ||
+ (dhsoftCAR[dm]&(1<<unit))) {
tp->t_state |= CARR_ON;
return;
}
tp->t_state |= CARR_ON;
return;
}
addr->dmcsr &= ~DM_SE;
while (addr->dmcsr & DM_BUSY)
;
addr->dmcsr &= ~DM_SE;
while (addr->dmcsr & DM_BUSY)
;
- addr->dmcsr = unit & 0xf;
addr->dmlstat = DML_ON;
if (addr->dmlstat&DML_CAR)
tp->t_state |= CARR_ON;
addr->dmlstat = DML_ON;
if (addr->dmlstat&DML_CAR)
tp->t_state |= CARR_ON;
#include "dz.h"
#if NDZ11 > 0
#include "dz.h"
#if NDZ11 > 0
#include "../h/map.h"
#include "../h/pte.h"
#include "../h/buf.h"
#include "../h/map.h"
#include "../h/pte.h"
#include "../h/buf.h"
#include "../h/uba.h"
#include "../h/conf.h"
#include "../h/pdma.h"
#include "../h/uba.h"
#include "../h/conf.h"
#include "../h/pdma.h"
* Software copy of dzbrk since it isn't readable
*/
char dz_brk[NDZ11];
* Software copy of dzbrk since it isn't readable
*/
char dz_brk[NDZ11];
/*
* The dz doesn't interrupt on carrier transitions, so
/*
* The dz doesn't interrupt on carrier transitions, so
* Called by auto-configure to initialize good dz's;
* set up pdma structures.
*/
* Called by auto-configure to initialize good dz's;
* set up pdma structures.
*/
-dzslave(ui, reg, slaveno, uban)
register struct uba_dinfo *ui;
caddr_t reg;
{
register struct uba_dinfo *ui;
caddr_t reg;
{
pdp->p_fcn = dzxint;
pdp++, tp++;
}
pdp->p_fcn = dzxint;
pdp++, tp++;
}
+ dzsoftCAR[ui->ui_unit] = ui->ui_flags;
dzaddr = dzpdma[i].p_addr;
tp = &dz_tty[i];
bit = 1<<(i&07);
dzaddr = dzpdma[i].p_addr;
tp = &dz_tty[i];
bit = 1<<(i&07);
-#ifdef BERT
- if (dzaddr->dzmsr & bit || i == 6 || i == 7) {
-#else
- if (dzaddr->dzmsr & bit) {
-#endif
+ if ((dzsoftCAR[i]&bit) || (dzaddr->dzmsr&bit)) {
/* carrier present */
if ((tp->t_state & CARR_ON) == 0) {
wakeup((caddr_t)&tp->t_rawq);
/* carrier present */
if ((tp->t_state & CARR_ON) == 0) {
wakeup((caddr_t)&tp->t_rawq);