Lines Matching refs:pbm

86 	struct pci_pbm_info *pbm = p->dev->archdata.host_controller;  in iommu_batch_flush()  local
89 unsigned long devhandle = pbm->devhandle; in iommu_batch_flush()
102 if (!iommu_use_atu(pbm->iommu, mask)) { in iommu_batch_flush()
119 iotsb_num = pbm->iommu->atu->iotsb->iotsb_num; in iommu_batch_flush()
326 struct pci_pbm_info *pbm; in dma_4v_free_coherent() local
336 pbm = dev->archdata.host_controller; in dma_4v_free_coherent()
338 devhandle = pbm->devhandle; in dma_4v_free_coherent()
433 struct pci_pbm_info *pbm; in dma_4v_unmap_page() local
449 pbm = dev->archdata.host_controller; in dma_4v_unmap_page()
451 devhandle = pbm->devhandle; in dma_4v_unmap_page()
628 struct pci_pbm_info *pbm; in dma_4v_unmap_sg() local
639 pbm = dev->archdata.host_controller; in dma_4v_unmap_sg()
641 devhandle = pbm->devhandle; in dma_4v_unmap_sg()
696 static void pci_sun4v_scan_bus(struct pci_pbm_info *pbm, struct device *parent) in pci_sun4v_scan_bus() argument
701 dp = pbm->op->dev.of_node; in pci_sun4v_scan_bus()
703 pbm->is_66mhz_capable = (prop != NULL); in pci_sun4v_scan_bus()
704 pbm->pci_bus = pci_scan_one_pbm(pbm, parent); in pci_sun4v_scan_bus()
709 static unsigned long probe_existing_entries(struct pci_pbm_info *pbm, in probe_existing_entries() argument
716 devhandle = pbm->devhandle; in probe_existing_entries()
740 static int pci_sun4v_atu_alloc_iotsb(struct pci_pbm_info *pbm) in pci_sun4v_atu_alloc_iotsb() argument
742 struct atu *atu = pbm->iommu->atu; in pci_sun4v_atu_alloc_iotsb()
773 err = pci_sun4v_iotsb_conf(pbm->devhandle, in pci_sun4v_atu_alloc_iotsb()
785 err = dma_4v_iotsb_bind(pbm->devhandle, iotsb_num, pbm->pci_bus); in pci_sun4v_atu_alloc_iotsb()
801 static int pci_sun4v_atu_init(struct pci_pbm_info *pbm) in pci_sun4v_atu_init() argument
803 struct atu *atu = pbm->iommu->atu; in pci_sun4v_atu_init()
811 ranges = of_get_property(pbm->op->dev.of_node, "iommu-address-ranges", in pci_sun4v_atu_init()
818 page_size = of_get_property(pbm->op->dev.of_node, "iommu-pagesizes", in pci_sun4v_atu_init()
840 err = pci_sun4v_atu_alloc_iotsb(pbm); in pci_sun4v_atu_init()
866 static int pci_sun4v_iommu_init(struct pci_pbm_info *pbm) in pci_sun4v_iommu_init() argument
869 struct iommu *iommu = pbm->iommu; in pci_sun4v_iommu_init()
874 vdma = of_get_property(pbm->op->dev.of_node, "virtual-dma", NULL); in pci_sun4v_iommu_init()
907 sz = probe_existing_entries(pbm, &iommu->tbl); in pci_sun4v_iommu_init()
910 pbm->name, sz); in pci_sun4v_iommu_init()
960 static int pci_sun4v_get_head(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_get_head() argument
965 err = pci_sun4v_msiq_gethead(pbm->devhandle, msiqid, head); in pci_sun4v_get_head()
969 limit = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_get_head()
976 static int pci_sun4v_dequeue_msi(struct pci_pbm_info *pbm, in pci_sun4v_dequeue_msi() argument
984 ep = (pbm->msi_queues + ((msiqid - pbm->msiq_first) * in pci_sun4v_dequeue_msi()
985 (pbm->msiq_ent_count * in pci_sun4v_dequeue_msi()
999 err = pci_sun4v_msi_setstate(pbm->devhandle, in pci_sun4v_dequeue_msi()
1010 (pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry))) in pci_sun4v_dequeue_msi()
1016 static int pci_sun4v_set_head(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_set_head() argument
1021 err = pci_sun4v_msiq_sethead(pbm->devhandle, msiqid, head); in pci_sun4v_set_head()
1028 static int pci_sun4v_msi_setup(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_msi_setup() argument
1031 if (pci_sun4v_msi_setmsiq(pbm->devhandle, msi, msiqid, in pci_sun4v_msi_setup()
1035 if (pci_sun4v_msi_setstate(pbm->devhandle, msi, HV_MSISTATE_IDLE)) in pci_sun4v_msi_setup()
1037 if (pci_sun4v_msi_setvalid(pbm->devhandle, msi, HV_MSIVALID_VALID)) in pci_sun4v_msi_setup()
1042 static int pci_sun4v_msi_teardown(struct pci_pbm_info *pbm, unsigned long msi) in pci_sun4v_msi_teardown() argument
1046 err = pci_sun4v_msi_getmsiq(pbm->devhandle, msi, &msiqid); in pci_sun4v_msi_teardown()
1050 pci_sun4v_msi_setvalid(pbm->devhandle, msi, HV_MSIVALID_INVALID); in pci_sun4v_msi_teardown()
1055 static int pci_sun4v_msiq_alloc(struct pci_pbm_info *pbm) in pci_sun4v_msiq_alloc() argument
1060 q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_msiq_alloc()
1061 alloc_size = (pbm->msiq_num * q_size); in pci_sun4v_msiq_alloc()
1070 pbm->msi_queues = (void *) pages; in pci_sun4v_msiq_alloc()
1072 for (i = 0; i < pbm->msiq_num; i++) { in pci_sun4v_msiq_alloc()
1076 err = pci_sun4v_msiq_conf(pbm->devhandle, in pci_sun4v_msiq_alloc()
1077 pbm->msiq_first + i, in pci_sun4v_msiq_alloc()
1078 base, pbm->msiq_ent_count); in pci_sun4v_msiq_alloc()
1085 err = pci_sun4v_msiq_info(pbm->devhandle, in pci_sun4v_msiq_alloc()
1086 pbm->msiq_first + i, in pci_sun4v_msiq_alloc()
1093 if (ret1 != base || ret2 != pbm->msiq_ent_count) { in pci_sun4v_msiq_alloc()
1096 base, pbm->msiq_ent_count, in pci_sun4v_msiq_alloc()
1109 static void pci_sun4v_msiq_free(struct pci_pbm_info *pbm) in pci_sun4v_msiq_free() argument
1114 for (i = 0; i < pbm->msiq_num; i++) { in pci_sun4v_msiq_free()
1115 unsigned long msiqid = pbm->msiq_first + i; in pci_sun4v_msiq_free()
1117 (void) pci_sun4v_msiq_conf(pbm->devhandle, msiqid, 0UL, 0); in pci_sun4v_msiq_free()
1120 q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_msiq_free()
1121 alloc_size = (pbm->msiq_num * q_size); in pci_sun4v_msiq_free()
1124 pages = (unsigned long) pbm->msi_queues; in pci_sun4v_msiq_free()
1128 pbm->msi_queues = NULL; in pci_sun4v_msiq_free()
1131 static int pci_sun4v_msiq_build_irq(struct pci_pbm_info *pbm, in pci_sun4v_msiq_build_irq() argument
1135 unsigned int irq = sun4v_build_irq(pbm->devhandle, devino); in pci_sun4v_msiq_build_irq()
1140 if (pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_VALID)) in pci_sun4v_msiq_build_irq()
1142 if (pci_sun4v_msiq_setstate(pbm->devhandle, msiqid, HV_MSIQSTATE_IDLE)) in pci_sun4v_msiq_build_irq()
1159 static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) in pci_sun4v_msi_init() argument
1161 sparc64_pbm_msi_init(pbm, &pci_sun4v_msiq_ops); in pci_sun4v_msi_init()
1164 static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) in pci_sun4v_msi_init() argument
1169 static int pci_sun4v_pbm_init(struct pci_pbm_info *pbm, in pci_sun4v_pbm_init() argument
1175 pbm->numa_node = of_node_to_nid(dp); in pci_sun4v_pbm_init()
1177 pbm->pci_ops = &sun4v_pci_ops; in pci_sun4v_pbm_init()
1178 pbm->config_space_reg_bits = 12; in pci_sun4v_pbm_init()
1180 pbm->index = pci_num_pbms++; in pci_sun4v_pbm_init()
1182 pbm->op = op; in pci_sun4v_pbm_init()
1184 pbm->devhandle = devhandle; in pci_sun4v_pbm_init()
1186 pbm->name = dp->full_name; in pci_sun4v_pbm_init()
1188 printk("%s: SUN4V PCI Bus Module\n", pbm->name); in pci_sun4v_pbm_init()
1189 printk("%s: On NUMA node %d\n", pbm->name, pbm->numa_node); in pci_sun4v_pbm_init()
1191 pci_determine_mem_io_space(pbm); in pci_sun4v_pbm_init()
1193 pci_get_pbm_props(pbm); in pci_sun4v_pbm_init()
1195 err = pci_sun4v_iommu_init(pbm); in pci_sun4v_pbm_init()
1199 pci_sun4v_msi_init(pbm); in pci_sun4v_pbm_init()
1201 pci_sun4v_scan_bus(pbm, &op->dev); in pci_sun4v_pbm_init()
1206 if (pbm->iommu->atu) { in pci_sun4v_pbm_init()
1207 err = pci_sun4v_atu_init(pbm); in pci_sun4v_pbm_init()
1209 kfree(pbm->iommu->atu); in pci_sun4v_pbm_init()
1210 pbm->iommu->atu = NULL; in pci_sun4v_pbm_init()
1215 pbm->next = pci_pbm_root; in pci_sun4v_pbm_init()
1216 pci_pbm_root = pbm; in pci_sun4v_pbm_init()
1225 struct pci_pbm_info *pbm; in pci_sun4v_probe() local
1288 pbm = kzalloc(sizeof(*pbm), GFP_KERNEL); in pci_sun4v_probe()
1289 if (!pbm) { in pci_sun4v_probe()
1300 pbm->iommu = iommu; in pci_sun4v_probe()
1310 err = pci_sun4v_pbm_init(pbm, op, devhandle); in pci_sun4v_probe()
1314 dev_set_drvdata(&op->dev, pbm); in pci_sun4v_probe()
1320 kfree(pbm->iommu); in pci_sun4v_probe()
1323 kfree(pbm); in pci_sun4v_probe()