Lines Matching defs:pbm

140 	struct schizo_pbm *pbm;
173 pbm = kmem_zalloc(sizeof(*pbm), KM_NOSLEEP);
174 if (pbm == NULL)
175 panic("schizo: can't alloc schizo pbm");
177 pbm->sp_sc = sc;
178 pbm->sp_regt = sc->sc_bustag;
181 pbm->sp_bus_a = 1;
183 pbm->sp_bus_a = 0;
190 BUS_SPACE_MAP_LINEAR, &pbm->sp_intrh)) {
196 &pbm->sp_nrange, (void **)&pbm->sp_range))
206 pbm->sp_bus_a ? 'A' : 'B', busranges[0], busranges[1]);
209 if (bus_space_subregion(pbm->sp_regt, sc->sc_ctrlh,
210 pbm->sp_bus_a ? offsetof(struct schizo_regs, pbm_a) :
213 &pbm->sp_regh)) {
217 is = &pbm->sp_is;
218 pbm->sp_sb.sb_is = is;
223 vaddr_t va = (vaddr_t)&pbm->sp_flush[0x40];
230 is->is_sb[0] = &pbm->sp_sb;
233 bus_space_subregion(pbm->sp_regt, pbm->sp_regh,
239 schizo_init_iommu(sc, pbm);
241 pbm->sp_memt = schizo_alloc_mem_tag(pbm);
242 pbm->sp_iot = schizo_alloc_io_tag(pbm);
243 pbm->sp_cfgt = schizo_alloc_config_tag(pbm);
244 pbm->sp_dmat = schizo_alloc_dma_tag(pbm);
245 pbm->sp_flags = (pbm->sp_memt ? PCI_FLAGS_MEM_OKAY : 0) |
246 (pbm->sp_iot ? PCI_FLAGS_IO_OKAY : 0);
248 if (bus_space_map(pbm->sp_cfgt, 0, 0x1000000, 0, &pbm->sp_cfgh))
251 pbm->sp_pc = schizo_alloc_chipset(pbm, sc->sc_node,
253 pbm->sp_pc->spc_busmax = busranges[1];
254 pbm->sp_pc->spc_busnode = kmem_zalloc(sizeof(*pbm->sp_pc->spc_busnode),
256 if (pbm->sp_pc->spc_busnode == NULL)
261 pba.pba_pc = pbm->sp_pc;
262 pba.pba_flags = pbm->sp_flags;
263 pba.pba_dmat = pbm->sp_dmat;
265 pba.pba_memt = pbm->sp_memt;
266 pba.pba_iot = pbm->sp_iot;
270 schizo_pbm_write(pbm, SCZ_PCI_INTR_RETRY, 5);
273 schizo_pbm_write(pbm, SCZ_PCI_CTRL, schizo_pbm_read(pbm, SCZ_PCI_CTRL));
274 schizo_pbm_write(pbm, SCZ_PCI_AFSR, schizo_pbm_read(pbm, SCZ_PCI_AFSR));
275 schizo_cfg_write(pbm, PCI_COMMAND_STATUS_REG,
276 schizo_cfg_read(pbm, PCI_COMMAND_STATUS_REG));
278 reg = schizo_pbm_read(pbm, SCZ_PCI_CTRL);
282 schizo_pbm_write(pbm, SCZ_PCI_CTRL, reg);
284 reg = schizo_pbm_read(pbm, SCZ_PCI_DIAG);
287 schizo_pbm_write(pbm, SCZ_PCI_DIAG, reg);
289 if (pbm->sp_bus_a)
290 schizo_set_intr(sc, pbm, PIL_HIGH, schizo_pci_error,
291 pbm, SCZ_PCIERR_A_INO, "pci_a");
293 schizo_set_intr(sc, pbm, PIL_HIGH, schizo_pci_error,
294 pbm, SCZ_PCIERR_B_INO, "pci_b");
297 schizo_set_intr(sc, pbm, PIL_HIGH, schizo_ue, sc, SCZ_UE_INO,
299 schizo_set_intr(sc, pbm, PIL_HIGH, schizo_ce, sc, SCZ_CE_INO,
301 schizo_set_intr(sc, pbm, PIL_HIGH, schizo_safari_error, sc,
316 schizo_pbm_write(pbm, SCZ_PCI_IOCACHE_CSR, iocache_csr);
417 schizo_init_iommu(struct schizo_softc *sc, struct schizo_pbm *pbm)
419 struct iommu_state *is = &pbm->sp_is;
425 is->is_bustag = pbm->sp_regt;
426 bus_space_subregion(is->is_bustag, pbm->sp_regh,
508 schizo_set_intr(struct schizo_softc *sc, struct schizo_pbm *pbm, int ipl,
530 intrregs = (uintptr_t)bus_space_vaddr(pbm->sp_regt, pbm->sp_intrh);
535 ih->ih_number = INTVEC(schizo_pbm_read(pbm, mapoff));
540 schizo_pbm_write(pbm, mapoff,
566 schizo_alloc_bus_tag(struct schizo_pbm *pbm, const char *name, int type)
568 struct schizo_softc *sc = pbm->sp_sc;
576 bt->cookie = pbm;
586 schizo_alloc_dma_tag(struct schizo_pbm *pbm)
588 struct schizo_softc *sc = pbm->sp_sc;
595 dt->_cookie = pbm;
616 schizo_alloc_chipset(struct schizo_pbm *pbm, int node, pci_chipset_tag_t pc)
624 npc->cookie = pbm;
639 struct schizo_pbm *pbm = t->_cookie;
645 (*dmamp)->_dm_cookie = &pbm->sp_sb;
650 get_schizorange(struct schizo_pbm *pbm, int ss)
654 for (i = 0; i < pbm->sp_nrange; i++) {
655 if (((pbm->sp_range[i].cspace >> 24) & 0x03) == ss)
656 return (&pbm->sp_range[i]);
667 struct schizo_pbm *pbm = t->cookie;
668 struct schizo_softc *sc = pbm->sp_sc;
681 sr = get_schizorange(pbm, ss);
700 struct schizo_pbm *pbm = t->cookie;
701 struct schizo_softc *sc = pbm->sp_sc;
710 sr = get_schizorange(pbm, ss);
730 struct schizo_pbm *pbm = pa->pa_pc->cookie;
731 struct schizo_softc *sc = pbm->sp_sc;
742 struct schizo_pbm *pbm = t->cookie;
775 intrregs = (uintptr_t)bus_space_vaddr(pbm->sp_regt, pbm->sp_intrh);
780 ino |= schizo_pbm_readintr(pbm, mapoff) & INTMAP_IGN;
808 imap = schizo_pbm_readintr(pbm, mapoff);
815 schizo_pbm_writeintr(pbm, mapoff, imap);
816 imap = schizo_pbm_readintr(pbm, mapoff);
823 schizo_pbm_writeintr(pbm, clroff, 0);
834 struct schizo_pbm *pbm = (struct schizo_pbm *)pc->cookie;
837 cookie = bus_intr_establish(pbm->sp_memt, ih, level, func, arg);