Lines Matching defs:dcm

1 /*	$NetBSD: dcm.c,v 1.94 2024/01/16 05:48:28 thorpej Exp $	*/
65 * from Utah: $Hdr: dcm.c 1.29 92/01/21$
67 * @(#)dcm.c 8.4 (Berkeley) 1/12/94
81 __KERNEL_RCSID(0, "$NetBSD: dcm.c,v 1.94 2024/01/16 05:48:28 thorpej Exp $");
295 CFATTACH_DECL_NEW(dcm, sizeof(struct dcm_softc),
362 struct dcmdevice *dcm;
371 dcm = dcm_cn;
388 dcm = bus_space_vaddr(sc->sc_bst, sc->sc_bsh);
391 sc->sc_dcm = dcm;
419 sc->sc_modem[0] = &dcm->dcm_modem0;
420 sc->sc_modem[1] = &dcm->dcm_modem1;
421 sc->sc_modem[2] = &dcm->dcm_modem2;
422 sc->sc_modem[3] = &dcm->dcm_modem3;
444 dcm->dcm_ic = IC_IE; /* turn all interrupts on */
468 dcminit(dcm, DCMPORT(DCMUNIT(kgdb_dev)),
680 struct dcmdevice *dcm = sc->sc_dcm;
690 SEM_LOCK(dcm);
691 if ((dcm->dcm_ic & IC_IR) == 0) {
692 SEM_UNLOCK(dcm);
696 pcnd[i] = dcm->dcm_icrtab[i].dcm_data;
697 dcm->dcm_icrtab[i].dcm_data = 0;
703 code = dcm->dcm_iir & IIR_MASK;
704 dcm->dcm_iir = 0; /* XXX doc claims read clears interrupt?! */
705 mcode = dcm->dcm_modemintr;
706 dcm->dcm_modemintr = 0;
707 SEM_UNLOCK(dcm);
806 struct dcmdevice *dcm = sc->sc_dcm;
807 struct dcmpreg *pp = dcm_preg(dcm, port);
830 dcm->dcm_rfifos[3-port][head>>1].data_char == FRAME_START) {
841 fifo = &dcm->dcm_rfifos[3-port][head>>1];
854 fifo = head ? fifo+1 : &dcm->dcm_rfifos[3-port][0];
922 struct dcmdevice *dcm = sc->sc_dcm;
950 SEM_LOCK(dcm);
951 dcm->dcm_modemchng |= (1 << port);
952 dcm->dcm_cr |= CR_MODM;
953 SEM_UNLOCK(dcm);
964 struct dcmdevice *dcm;
972 dcm = sc->sc_dcm;
995 while (dcm->dcm_thead[port].ptr != dcm->dcm_ttail[port].ptr)
997 SEM_LOCK(dcm);
998 dcm->dcm_cmdtab[port].dcm_data |= CT_BRK;
999 dcm->dcm_cr |= (1 << port); /* start break */
1000 SEM_UNLOCK(dcm);
1005 SEM_LOCK(dcm);
1006 dcm->dcm_cmdtab[port].dcm_data |= CT_BRK;
1007 dcm->dcm_cr |= (1 << port); /* end break */
1008 SEM_UNLOCK(dcm);
1078 struct dcmdevice *dcm;
1087 dcm = sc->sc_dcm;
1133 while (dcm->dcm_thead[port].ptr != dcm->dcm_ttail[port].ptr)
1138 dcm->dcm_data[port].dcm_baud = ospeed;
1139 dcm->dcm_data[port].dcm_conf = mode;
1140 SEM_LOCK(dcm);
1141 dcm->dcm_cmdtab[port].dcm_data |= CT_CON;
1142 dcm->dcm_cr |= (1 << port);
1143 SEM_UNLOCK(dcm);
1156 struct dcmdevice *dcm;
1174 dcm = sc->sc_dcm;
1198 pp = dcm_preg(dcm, port);
1204 fifo = &dcm->dcm_tfifos[3-port][tail];
1226 SEM_LOCK(dcm);
1227 dcm->dcm_cmdtab[port].dcm_data |= CT_TX;
1228 dcm->dcm_cr |= (1 << port);
1229 SEM_UNLOCK(dcm);
1232 fifo = tail ? fifo+1 : &dcm->dcm_tfifos[3-port][0];
1253 SEM_LOCK(dcm);
1254 dcm->dcm_cmdtab[port].dcm_data |= CT_TX;
1255 dcm->dcm_cr |= (1 << port);
1256 SEM_UNLOCK(dcm);
1299 struct dcmdevice *dcm;
1307 dcm = sc->sc_dcm;
1340 SEM_LOCK(dcm);
1341 dcm->dcm_modemchng |= 1<<(unit & 3);
1342 dcm->dcm_cr |= CR_MODM;
1343 SEM_UNLOCK(dcm);
1357 struct dcmdevice *dcm = sc->sc_dcm;
1382 dcm->dcm_bmap[i].data_data = mask;
1396 dcm->dcm_bmap[c].data_data |= (1 << i);
1399 dcm->dcm_bmap[c].data_data |= (1 << i);
1412 while (dcm->dcm_cr & CR_TIMER)
1414 SEM_LOCK(dcm);
1415 dcm->dcm_cr |= CR_TIMER;
1416 SEM_UNLOCK(dcm);
1420 dcminit(struct dcmdevice *dcm, int port, int rate)
1431 while (dcm->dcm_thead[port].ptr != dcm->dcm_ttail[port].ptr)
1437 dcm->dcm_data[port].dcm_baud = ttspeedtab(rate, dcmspeedtab);
1438 dcm->dcm_data[port].dcm_conf = mode;
1439 SEM_LOCK(dcm);
1440 dcm->dcm_cmdtab[port].dcm_data |= CT_CON;
1441 dcm->dcm_cr |= (1 << port);
1442 SEM_UNLOCK(dcm);
1458 struct dcmdevice *dcm = sc->sc_dcm;
1465 dcm->dcm_rsid = DCMRS;
1467 dcm->dcm_rsid = 0;
1468 dcm->dcm_ic = IC_IE;
1469 dcm->dcm_cr = CR_SELFT;
1470 while ((dcm->dcm_ic & IC_IR) == 0) {
1476 while ((dcm->dcm_iir & IIR_SELFT) == 0) {
1482 if (dcm->dcm_stcon != ST_OK) {
1486 dcm->dcm_stcon);
1490 dcm->dcm_ic = IC_ID;
1507 struct dcmdevice *dcm;
1514 dcm = (struct dcmdevice *)va;
1516 switch (dcm->dcm_rsid) {
1526 dcminit(dcm, DCMCONSPORT, dcmdefaultrate);
1529 dcm_cn = dcm;
1554 printf("dcm%d: ", DCMUNIT(kgdb_dev));