Lines Matching refs:pbm
63 struct pci_pbm_info *pbm = p->dev->archdata.host_controller; in iommu_batch_flush() local
64 unsigned long devhandle = pbm->devhandle; in iommu_batch_flush()
218 struct pci_pbm_info *pbm; in dma_4v_free_coherent() local
225 pbm = dev->archdata.host_controller; in dma_4v_free_coherent()
226 devhandle = pbm->devhandle; in dma_4v_free_coherent()
299 struct pci_pbm_info *pbm; in dma_4v_unmap_page() local
312 pbm = dev->archdata.host_controller; in dma_4v_unmap_page()
313 devhandle = pbm->devhandle; in dma_4v_unmap_page()
471 struct pci_pbm_info *pbm; in dma_4v_unmap_sg() local
480 pbm = dev->archdata.host_controller; in dma_4v_unmap_sg()
481 devhandle = pbm->devhandle; in dma_4v_unmap_sg()
515 static void pci_sun4v_scan_bus(struct pci_pbm_info *pbm, struct device *parent) in pci_sun4v_scan_bus() argument
520 dp = pbm->op->dev.of_node; in pci_sun4v_scan_bus()
522 pbm->is_66mhz_capable = (prop != NULL); in pci_sun4v_scan_bus()
523 pbm->pci_bus = pci_scan_one_pbm(pbm, parent); in pci_sun4v_scan_bus()
528 static unsigned long probe_existing_entries(struct pci_pbm_info *pbm, in probe_existing_entries() argument
535 devhandle = pbm->devhandle; in probe_existing_entries()
559 static int pci_sun4v_iommu_init(struct pci_pbm_info *pbm) in pci_sun4v_iommu_init() argument
562 struct iommu *iommu = pbm->iommu; in pci_sun4v_iommu_init()
567 vdma = of_get_property(pbm->op->dev.of_node, "virtual-dma", NULL); in pci_sun4v_iommu_init()
600 sz = probe_existing_entries(pbm, &iommu->tbl); in pci_sun4v_iommu_init()
603 pbm->name, sz); in pci_sun4v_iommu_init()
653 static int pci_sun4v_get_head(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_get_head() argument
658 err = pci_sun4v_msiq_gethead(pbm->devhandle, msiqid, head); in pci_sun4v_get_head()
662 limit = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_get_head()
669 static int pci_sun4v_dequeue_msi(struct pci_pbm_info *pbm, in pci_sun4v_dequeue_msi() argument
677 ep = (pbm->msi_queues + ((msiqid - pbm->msiq_first) * in pci_sun4v_dequeue_msi()
678 (pbm->msiq_ent_count * in pci_sun4v_dequeue_msi()
692 err = pci_sun4v_msi_setstate(pbm->devhandle, in pci_sun4v_dequeue_msi()
703 (pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry))) in pci_sun4v_dequeue_msi()
709 static int pci_sun4v_set_head(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_set_head() argument
714 err = pci_sun4v_msiq_sethead(pbm->devhandle, msiqid, head); in pci_sun4v_set_head()
721 static int pci_sun4v_msi_setup(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_msi_setup() argument
724 if (pci_sun4v_msi_setmsiq(pbm->devhandle, msi, msiqid, in pci_sun4v_msi_setup()
728 if (pci_sun4v_msi_setstate(pbm->devhandle, msi, HV_MSISTATE_IDLE)) in pci_sun4v_msi_setup()
730 if (pci_sun4v_msi_setvalid(pbm->devhandle, msi, HV_MSIVALID_VALID)) in pci_sun4v_msi_setup()
735 static int pci_sun4v_msi_teardown(struct pci_pbm_info *pbm, unsigned long msi) in pci_sun4v_msi_teardown() argument
739 err = pci_sun4v_msi_getmsiq(pbm->devhandle, msi, &msiqid); in pci_sun4v_msi_teardown()
743 pci_sun4v_msi_setvalid(pbm->devhandle, msi, HV_MSIVALID_INVALID); in pci_sun4v_msi_teardown()
748 static int pci_sun4v_msiq_alloc(struct pci_pbm_info *pbm) in pci_sun4v_msiq_alloc() argument
753 q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_msiq_alloc()
754 alloc_size = (pbm->msiq_num * q_size); in pci_sun4v_msiq_alloc()
763 pbm->msi_queues = (void *) pages; in pci_sun4v_msiq_alloc()
765 for (i = 0; i < pbm->msiq_num; i++) { in pci_sun4v_msiq_alloc()
769 err = pci_sun4v_msiq_conf(pbm->devhandle, in pci_sun4v_msiq_alloc()
770 pbm->msiq_first + i, in pci_sun4v_msiq_alloc()
771 base, pbm->msiq_ent_count); in pci_sun4v_msiq_alloc()
778 err = pci_sun4v_msiq_info(pbm->devhandle, in pci_sun4v_msiq_alloc()
779 pbm->msiq_first + i, in pci_sun4v_msiq_alloc()
786 if (ret1 != base || ret2 != pbm->msiq_ent_count) { in pci_sun4v_msiq_alloc()
789 base, pbm->msiq_ent_count, in pci_sun4v_msiq_alloc()
802 static void pci_sun4v_msiq_free(struct pci_pbm_info *pbm) in pci_sun4v_msiq_free() argument
807 for (i = 0; i < pbm->msiq_num; i++) { in pci_sun4v_msiq_free()
808 unsigned long msiqid = pbm->msiq_first + i; in pci_sun4v_msiq_free()
810 (void) pci_sun4v_msiq_conf(pbm->devhandle, msiqid, 0UL, 0); in pci_sun4v_msiq_free()
813 q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_msiq_free()
814 alloc_size = (pbm->msiq_num * q_size); in pci_sun4v_msiq_free()
817 pages = (unsigned long) pbm->msi_queues; in pci_sun4v_msiq_free()
821 pbm->msi_queues = NULL; in pci_sun4v_msiq_free()
824 static int pci_sun4v_msiq_build_irq(struct pci_pbm_info *pbm, in pci_sun4v_msiq_build_irq() argument
828 unsigned int irq = sun4v_build_irq(pbm->devhandle, devino); in pci_sun4v_msiq_build_irq()
833 if (pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_VALID)) in pci_sun4v_msiq_build_irq()
835 if (pci_sun4v_msiq_setstate(pbm->devhandle, msiqid, HV_MSIQSTATE_IDLE)) in pci_sun4v_msiq_build_irq()
852 static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) in pci_sun4v_msi_init() argument
854 sparc64_pbm_msi_init(pbm, &pci_sun4v_msiq_ops); in pci_sun4v_msi_init()
857 static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) in pci_sun4v_msi_init() argument
862 static int pci_sun4v_pbm_init(struct pci_pbm_info *pbm, in pci_sun4v_pbm_init() argument
868 pbm->numa_node = of_node_to_nid(dp); in pci_sun4v_pbm_init()
870 pbm->pci_ops = &sun4v_pci_ops; in pci_sun4v_pbm_init()
871 pbm->config_space_reg_bits = 12; in pci_sun4v_pbm_init()
873 pbm->index = pci_num_pbms++; in pci_sun4v_pbm_init()
875 pbm->op = op; in pci_sun4v_pbm_init()
877 pbm->devhandle = devhandle; in pci_sun4v_pbm_init()
879 pbm->name = dp->full_name; in pci_sun4v_pbm_init()
881 printk("%s: SUN4V PCI Bus Module\n", pbm->name); in pci_sun4v_pbm_init()
882 printk("%s: On NUMA node %d\n", pbm->name, pbm->numa_node); in pci_sun4v_pbm_init()
884 pci_determine_mem_io_space(pbm); in pci_sun4v_pbm_init()
886 pci_get_pbm_props(pbm); in pci_sun4v_pbm_init()
888 err = pci_sun4v_iommu_init(pbm); in pci_sun4v_pbm_init()
892 pci_sun4v_msi_init(pbm); in pci_sun4v_pbm_init()
894 pci_sun4v_scan_bus(pbm, &op->dev); in pci_sun4v_pbm_init()
896 pbm->next = pci_pbm_root; in pci_sun4v_pbm_init()
897 pci_pbm_root = pbm; in pci_sun4v_pbm_init()
906 struct pci_pbm_info *pbm; in pci_sun4v_probe() local
951 pbm = kzalloc(sizeof(*pbm), GFP_KERNEL); in pci_sun4v_probe()
952 if (!pbm) { in pci_sun4v_probe()
963 pbm->iommu = iommu; in pci_sun4v_probe()
965 err = pci_sun4v_pbm_init(pbm, op, devhandle); in pci_sun4v_probe()
969 dev_set_drvdata(&op->dev, pbm); in pci_sun4v_probe()
974 kfree(pbm->iommu); in pci_sun4v_probe()
977 kfree(pbm); in pci_sun4v_probe()