933 return (DDI_FAILURE);
934 if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) {
935 ispec->intrspec_vec = inum;
936 ispec->intrspec_pri = hdlp->ih_pri;
937 }
938 ihdl_plat_datap->ip_ispecp = ispec;
939
940 /* translate the interrupt if needed */
941 if ((*psm_intr_ops)(rdip, hdlp, PSM_INTR_OP_XLATE_VECTOR, &irq) ==
942 PSM_FAILURE)
943 return (DDI_FAILURE);
944 DDI_INTR_NEXDBG((CE_CONT, "pci_enable_intr: priority=%x irq=%x\n",
945 hdlp->ih_pri, irq));
946
947 /* Add the interrupt handler */
948 if (!add_avintr((void *)hdlp, hdlp->ih_pri, hdlp->ih_cb_func,
949 DEVI(rdip)->devi_name, irq, hdlp->ih_cb_arg1,
950 hdlp->ih_cb_arg2, &ihdl_plat_datap->ip_ticks, rdip))
951 return (DDI_FAILURE);
952
953 hdlp->ih_vector = irq;
954
955 return (DDI_SUCCESS);
956 }
957
958
959 static void
960 pci_disable_intr(dev_info_t *pdip, dev_info_t *rdip,
961 ddi_intr_handle_impl_t *hdlp, uint32_t inum)
962 {
963 int irq;
964 struct intrspec *ispec;
965 ihdl_plat_t *ihdl_plat_datap = (ihdl_plat_t *)hdlp->ih_private;
966
967 DDI_INTR_NEXDBG((CE_CONT, "pci_disable_intr: \n"));
968 ispec = (struct intrspec *)pci_intx_get_ispec(pdip, rdip, (int)inum);
969 if (ispec == NULL)
970 return;
971 if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) {
972 ispec->intrspec_vec = inum;
|
933 return (DDI_FAILURE);
934 if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) {
935 ispec->intrspec_vec = inum;
936 ispec->intrspec_pri = hdlp->ih_pri;
937 }
938 ihdl_plat_datap->ip_ispecp = ispec;
939
940 /* translate the interrupt if needed */
941 if ((*psm_intr_ops)(rdip, hdlp, PSM_INTR_OP_XLATE_VECTOR, &irq) ==
942 PSM_FAILURE)
943 return (DDI_FAILURE);
944 DDI_INTR_NEXDBG((CE_CONT, "pci_enable_intr: priority=%x irq=%x\n",
945 hdlp->ih_pri, irq));
946
947 /* Add the interrupt handler */
948 if (!add_avintr((void *)hdlp, hdlp->ih_pri, hdlp->ih_cb_func,
949 DEVI(rdip)->devi_name, irq, hdlp->ih_cb_arg1,
950 hdlp->ih_cb_arg2, &ihdl_plat_datap->ip_ticks, rdip))
951 return (DDI_FAILURE);
952
953 if (hdlp->ih_irq == -1)
954 hdlp->ih_irq = irq;
955 hdlp->ih_vector = irq;
956
957 return (DDI_SUCCESS);
958 }
959
960
961 static void
962 pci_disable_intr(dev_info_t *pdip, dev_info_t *rdip,
963 ddi_intr_handle_impl_t *hdlp, uint32_t inum)
964 {
965 int irq;
966 struct intrspec *ispec;
967 ihdl_plat_t *ihdl_plat_datap = (ihdl_plat_t *)hdlp->ih_private;
968
969 DDI_INTR_NEXDBG((CE_CONT, "pci_disable_intr: \n"));
970 ispec = (struct intrspec *)pci_intx_get_ispec(pdip, rdip, (int)inum);
971 if (ispec == NULL)
972 return;
973 if (DDI_INTR_IS_MSI_OR_MSIX(hdlp->ih_type)) {
974 ispec->intrspec_vec = inum;
|