• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/arch/sparc64/kernel/

Lines Matching defs:pbm

59 	struct pci_pbm_info *pbm = p->pdev->dev.archdata.host_controller;
60 unsigned long devhandle = pbm->devhandle;
230 struct pci_pbm_info *pbm;
237 pbm = pdev->dev.archdata.host_controller;
238 devhandle = pbm->devhandle;
326 struct pci_pbm_info *pbm;
339 pbm = pdev->dev.archdata.host_controller;
340 devhandle = pbm->devhandle;
537 struct pci_pbm_info *pbm;
549 pbm = pdev->dev.archdata.host_controller;
550 devhandle = pbm->devhandle;
600 static void pci_sun4v_scan_bus(struct pci_pbm_info *pbm)
605 dp = pbm->prom_node;
607 pbm->is_66mhz_capable = (prop != NULL);
608 pbm->pci_bus = pci_scan_one_pbm(pbm);
612 static unsigned long probe_existing_entries(struct pci_pbm_info *pbm,
619 devhandle = pbm->devhandle;
640 static void pci_sun4v_iommu_init(struct pci_pbm_info *pbm)
642 struct iommu *iommu = pbm->iommu;
647 prop = of_find_property(pbm->prom_node, "virtual-dma", NULL);
687 sz = probe_existing_entries(pbm, iommu);
690 pbm->name, sz);
749 struct pci_pbm_info *pbm = data1;
756 err = pci_sun4v_msiq_gethead(pbm->devhandle, msiqid, &head);
760 if (unlikely(head >= (pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry))))
765 base = (pbm->msi_queues + ((msiqid - pbm->msiq_first) *
766 (pbm->msiq_ent_count *
775 pci_sun4v_msi_setstate(pbm->devhandle,
784 if (head >= pbm->msiq_ent_count)
792 err = pci_sun4v_msiq_sethead(pbm->devhandle, msiqid, head);
807 pbm->devhandle, msiqid, head);
812 head, pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry));
820 static int msi_bitmap_alloc(struct pci_pbm_info *pbm)
825 size = (pbm->msi_num + (bits_per_ulong - 1)) & ~(bits_per_ulong - 1);
829 pbm->msi_bitmap = kzalloc(size, GFP_KERNEL);
830 if (!pbm->msi_bitmap)
836 static void msi_bitmap_free(struct pci_pbm_info *pbm)
838 kfree(pbm->msi_bitmap);
839 pbm->msi_bitmap = NULL;
842 static int msi_queue_alloc(struct pci_pbm_info *pbm)
847 q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry);
848 alloc_size = (pbm->msiq_num * q_size);
857 pbm->msi_queues = (void *) pages;
859 for (i = 0; i < pbm->msiq_num; i++) {
863 err = pci_sun4v_msiq_conf(pbm->devhandle,
864 pbm->msiq_first + i,
865 base, pbm->msiq_ent_count);
872 err = pci_sun4v_msiq_info(pbm->devhandle,
873 pbm->msiq_first + i,
880 if (ret1 != base || ret2 != pbm->msiq_ent_count) {
883 base, pbm->msiq_ent_count,
897 static int alloc_msi(struct pci_pbm_info *pbm)
901 for (i = 0; i < pbm->msi_num; i++) {
902 if (!test_and_set_bit(i, pbm->msi_bitmap))
903 return i + pbm->msi_first;
909 static void free_msi(struct pci_pbm_info *pbm, int msi_num)
911 msi_num -= pbm->msi_first;
912 clear_bit(msi_num, pbm->msi_bitmap);
919 struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller;
926 msi_num = alloc_msi(pbm);
930 devino = sun4v_build_msi(pbm->devhandle, virt_irq_p,
931 pbm->msiq_first_devino,
932 (pbm->msiq_first_devino +
933 pbm->msiq_num));
938 msiqid = ((devino - pbm->msiq_first_devino) +
939 pbm->msiq_first);
942 if (pci_sun4v_msiq_setstate(pbm->devhandle, msiqid, HV_MSIQSTATE_IDLE))
946 if (pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_VALID))
949 if (pci_sun4v_msi_setmsiq(pbm->devhandle,
955 if (pci_sun4v_msi_setstate(pbm->devhandle, msi_num, HV_MSISTATE_IDLE))
958 if (pci_sun4v_msi_setvalid(pbm->devhandle, msi_num, HV_MSIVALID_VALID))
964 msg.address_hi = pbm->msi64_start >> 32;
965 msg.address_lo = pbm->msi64_start & 0xffffffff;
968 msg.address_lo = pbm->msi32_start;
977 pbm, (void *) msiqid);
982 free_msi(pbm, msi_num);
992 struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller;
997 err = pci_sun4v_msi_getmsiq(pbm->devhandle, msi_num, &msiqid);
1000 pbm->name, err);
1004 pci_sun4v_msi_setvalid(pbm->devhandle, msi_num, HV_MSIVALID_INVALID);
1005 pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_INVALID);
1007 free_msi(pbm, msi_num);
1015 static void pci_sun4v_msi_init(struct pci_pbm_info *pbm)
1020 val = of_get_property(pbm->prom_node, "#msi-eqs", &len);
1023 pbm->msiq_num = *val;
1024 if (pbm->msiq_num) {
1043 val = of_get_property(pbm->prom_node, "msi-eq-size", &len);
1047 pbm->msiq_ent_count = *val;
1049 mqp = of_get_property(pbm->prom_node,
1054 pbm->msiq_first = mqp->first_msiq;
1055 pbm->msiq_first_devino = mqp->first_devino;
1057 val = of_get_property(pbm->prom_node, "#msi", &len);
1060 pbm->msi_num = *val;
1062 mrng = of_get_property(pbm->prom_node, "msi-ranges", &len);
1065 pbm->msi_first = mrng->first_msi;
1067 val = of_get_property(pbm->prom_node, "msi-data-mask", &len);
1070 pbm->msi_data_mask = *val;
1072 val = of_get_property(pbm->prom_node, "msix-data-width", &len);
1075 pbm->msix_data_width = *val;
1077 arng = of_get_property(pbm->prom_node, "msi-address-ranges",
1081 pbm->msi32_start = ((u64)arng->msi32_high << 32) |
1083 pbm->msi64_start = ((u64)arng->msi64_high << 32) |
1085 pbm->msi32_len = arng->msi32_len;
1086 pbm->msi64_len = arng->msi64_len;
1088 if (msi_bitmap_alloc(pbm))
1091 if (msi_queue_alloc(pbm)) {
1092 msi_bitmap_free(pbm);
1098 pbm->name,
1099 pbm->msiq_first, pbm->msiq_num,
1100 pbm->msiq_ent_count,
1101 pbm->msiq_first_devino);
1104 pbm->name,
1105 pbm->msi_first, pbm->msi_num, pbm->msi_data_mask,
1106 pbm->msix_data_width);
1109 pbm->name,
1110 pbm->msi32_start, pbm->msi32_len,
1111 pbm->msi64_start, pbm->msi64_len);
1113 pbm->name,
1114 pbm->msi_queues);
1116 pbm->setup_msi_irq = pci_sun4v_setup_msi_irq;
1117 pbm->teardown_msi_irq = pci_sun4v_teardown_msi_irq;
1122 pbm->msiq_num = 0;
1123 printk(KERN_INFO "%s: No MSI support.\n", pbm->name);
1126 static void pci_sun4v_msi_init(struct pci_pbm_info *pbm)
1133 struct pci_pbm_info *pbm;
1136 pbm = &p->pbm_B;
1138 pbm = &p->pbm_A;
1140 pbm->next = pci_pbm_root;
1141 pci_pbm_root = pbm;
1143 pbm->scan_bus = pci_sun4v_scan_bus;
1144 pbm->pci_ops = &sun4v_pci_ops;
1145 pbm->config_space_reg_bits = 12;
1147 pbm->index = pci_num_pbms++;
1149 pbm->parent = p;
1150 pbm->prom_node = dp;
1152 pbm->devhandle = devhandle;
1154 pbm->name = dp->full_name;
1156 printk("%s: SUN4V PCI Bus Module\n", pbm->name);
1158 pci_determine_mem_io_space(pbm);
1160 pci_get_pbm_props(pbm);
1161 pci_sun4v_iommu_init(pbm);
1162 pci_sun4v_msi_init(pbm);
1169 struct pci_pbm_info *pbm;
1195 for (pbm = pci_pbm_root; pbm; pbm = pbm->next) {
1196 if (pbm->devhandle == (devhandle ^ 0x40)) {
1197 pci_sun4v_pbm_init(pbm->parent, dp, devhandle);