Home | History | Annotate | Download | only in pci

Lines Matching refs:pic

48 #include <machine/pic.h>
68 * A Pseudo pic for single MSI/MSI-X device.
69 * The pic and MSI/MSI-X device are distinbuished by "devid". The "devid"
83 struct pic *mp_pic;
112 static struct pic *msipic_find_msi_pic_locked(int);
113 static struct pic *msipic_construct_common_msi_pic(const struct pci_attach_args *,
114 const struct pic *);
115 static void msipic_destruct_common_msi_pic(struct pic *);
117 static void msi_set_msictl_enablebit(struct pic *, int, int);
118 static void msi_hwmask(struct pic *, int);
119 static void msi_hwunmask(struct pic *, int);
120 static void msi_addroute(struct pic *, struct cpu_info *, int, int, int);
121 static void msi_delroute(struct pic *, struct cpu_info *, int, int, int);
123 static void msix_set_vecctl_mask(struct pic *, int, int);
124 static void msix_hwmask(struct pic *, int);
125 static void msix_hwunmask(struct pic *, int);
126 static void msix_addroute(struct pic *, struct cpu_info *, int, int, int);
127 static void msix_delroute(struct pic *, struct cpu_info *, int, int, int);
196 static struct pic *
214 struct pic *
217 struct pic *msipic;
229 static struct pic *
231 const struct pic *pic_tmpl)
233 struct pic *pic;
237 pic = kmem_alloc(sizeof(*pic), KM_SLEEP);
245 kmem_free(pic, sizeof(*pic));
250 memcpy(pic, pic_tmpl, sizeof(*pic));
251 pic->pic_edge_stubs
253 pic->pic_msipic = msipic;
254 msipic->mp_pic = pic;
268 return pic;
272 msipic_destruct_common_msi_pic(struct pic *msi_pic)
300 * The pic is MSI/MSI-X pic or not.
303 msipic_is_msi_pic(struct pic *pic)
306 return (pic->pic_msipic != NULL);
313 msipic_get_devid(struct pic *pic)
316 KASSERT(msipic_is_msi_pic(pic));
318 return pic->pic_msipic->mp_devid;
325 msipic_get_pci_info(struct pic *pic)
327 KASSERT(msipic_is_msi_pic(pic));
329 return &pic->pic_msipic->mp_i;
335 msi_set_msictl_enablebit(struct pic *pic, int msi_vec, int flag)
344 pa = &pic->pic_msipic->mp_pa;
367 msi_hwmask(struct pic *pic, int msi_vec)
370 msi_set_msictl_enablebit(pic, msi_vec, MSI_MSICTL_DISABLE);
374 * Do not use pic->hwunmask() immediately after pic->delroute().
375 * It is required to use pic->addroute() before pic->hwunmask().
378 msi_hwunmask(struct pic *pic, int msi_vec)
381 msi_set_msictl_enablebit(pic, msi_vec, MSI_MSICTL_ENABLE);
385 msi_addroute(struct pic *pic, struct cpu_info *ci,
398 pa = &pic->pic_msipic->mp_pa;
446 * Do not use pic->hwunmask() immediately after pic->delroute().
447 * It is required to use pic->addroute() before pic->hwunmask().
450 msi_delroute(struct pic *pic, struct cpu_info *ci,
454 msi_hwmask(pic, msi_vec);
458 * Template for MSI pic.
461 static const struct pic msi_pic_tmpl = {
476 * Create pseudo pic for a MSI device.
478 struct pic *
481 struct pic *msi_pic;
486 DPRINTF(("cannot allocate MSI pic.\n"));
501 * Delete pseudo pic for a MSI device.
504 msipic_destruct_msi_pic(struct pic *msi_pic)
513 msix_set_vecctl_mask(struct pic *pic, int msix_vec, int flag)
522 __func__, msipic_get_devid(pic), msix_vec));
528 bstag = pic->pic_msipic->mp_bstag;
529 bshandle = pic->pic_msipic->mp_bshandle;
543 msix_hwmask(struct pic *pic, int msix_vec)
546 msix_set_vecctl_mask(pic, msix_vec, MSIX_VECCTL_HWMASK);
550 * Do not use pic->hwunmask() immediately after pic->delroute().
551 * It is required to use pic->addroute() before pic->hwunmask().
554 msix_hwunmask(struct pic *pic, int msix_vec)
557 msix_set_vecctl_mask(pic, msix_vec, MSIX_VECCTL_HWUNMASK);
561 msix_addroute(struct pic *pic, struct cpu_info *ci,
578 __func__, msipic_get_devid(pic), msix_vec));
582 pa = &pic->pic_msipic->mp_pa;
594 bstag = pic->pic_msipic->mp_bstag;
595 bshandle = pic->pic_msipic->mp_bshandle;
634 * Do not use pic->hwunmask() immediately after pic->delroute().
635 * It is required to use pic->addroute() before pic->hwunmask().
638 msix_delroute(struct pic *pic, struct cpu_info *ci,
642 msix_hwmask(pic, msix_vec);
646 * Template for MSI-X pic.
649 static const struct pic msix_pic_tmpl = {
663 struct pic *
666 struct pic *msix_pic;
696 DPRINTF(("cannot allocate MSI-X pic.\n"));
784 * Delete pseudo pic for a MSI-X device.
787 msipic_destruct_msix_pic(struct pic *msix_pic)
802 * Set the number of MSI vectors for pseudo MSI pic.
805 msipic_set_msi_vectors(struct pic *msi_pic, pci_intr_handle_t *pihs,