void PCADWRITE(Word Cs, Word Ps) { Word C,l,i,L,k,I; Step1: /* */ I = PCADCINDEX(Cs); l = LENGTH(I); L = LELTI(Cs,SC_CDTV); Step2: /* */ SWRITE("\n"); for(k = 0; k < l; k++) SWRITE(" "); OWRITE(I); Step3: /* */ SWRITE(":"); SIGNLWR(PCADCSV(Cs,Ps)); Step4: /* */ if (ISATOM(L)) { if (L == 0) SWRITE(":F"); else if (L == 1) SWRITE(":T"); else SWRITE(":?"); } else { SWRITE(":==>"); while (L != NIL) { PCADWRITE(FIRST(L),Ps); L = RED(L); } } Return: /* */ if (I == NIL) SWRITE("\n"); return; }
static void fwohci_pci_attach(device_t parent, device_t self, void *aux) { struct pci_attach_args *pa = (struct pci_attach_args *) aux; struct fwohci_pci_softc *psc = device_private(self); char const *intrstr; pci_intr_handle_t ih; uint32_t csr; char intrbuf[PCI_INTRSTR_LEN]; pci_aprint_devinfo(pa, "IEEE 1394 Controller"); fwohci_init(&psc->psc_sc); psc->psc_sc.fc.dev = self; psc->psc_sc.fc.dmat = pa->pa_dmat; psc->psc_pc = pa->pa_pc; psc->psc_tag = pa->pa_tag; /* Map I/O registers */ if (pci_mapreg_map(pa, PCI_OHCI_MAP_REGISTER, PCI_MAPREG_TYPE_MEM, 0, &psc->psc_sc.bst, &psc->psc_sc.bsh, NULL, &psc->psc_sc.bssize)) { aprint_error_dev(self, "can't map OHCI register space\n"); goto fail; } /* Disable interrupts, so we don't get any spurious ones. */ OWRITE(&psc->psc_sc, FWOHCI_INTMASKCLR, OHCI_INT_EN); /* Enable the device. */ csr = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG); csr |= PCI_COMMAND_MASTER_ENABLE | PCI_COMMAND_MEM_ENABLE; pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG, csr); /* * Some Sun FireWire controllers have their intpin register * bogusly set to 0, although it should be 3. Correct that. */ if ((PCI_VENDOR(pa->pa_id) == PCI_VENDOR_SUN) && (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_SUN_FIREWIRE)) if (pa->pa_intrpin == 0) pa->pa_intrpin = 3; /* Map and establish the interrupt. */ if (pci_intr_map(pa, &ih)) { aprint_error_dev(self, "couldn't map interrupt\n"); goto fail; } intrstr = pci_intr_string(pa->pa_pc, ih, intrbuf, sizeof(intrbuf)); psc->psc_ih = pci_intr_establish(pa->pa_pc, ih, IPL_BIO, fwohci_intr, &psc->psc_sc); if (psc->psc_ih == NULL) { aprint_error_dev(self, "couldn't establish interrupt"); if (intrstr != NULL) aprint_error(" at %s", intrstr); aprint_error("\n"); goto fail; } aprint_normal_dev(self, "interrupting at %s\n", intrstr); if (fwohci_attach(&psc->psc_sc) != 0) goto fail; if (!pmf_device_register(self, fwohci_pci_suspend, fwohci_pci_resume)) aprint_error_dev(self, "couldn't establish power handler\n"); return; fail: /* In the event that we fail to attach, register a null pnp handler */ if (!pmf_device_register(self, NULL, NULL)) aprint_error_dev(self, "couldn't establish power handler\n"); return; }