Home | History | Annotate | Line # | Download | only in pci
      1 /*	$NetBSD: msipic.h,v 1.4 2022/05/23 15:03:05 bouyer Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 2015 Internet Initiative Japan Inc.
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  *
     16  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     17  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     18  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     19  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     26  * POSSIBILITY OF SUCH DAMAGE.
     27  */
     28 
     29 #ifndef _X86_PCI_MSIPIC_H_
     30 #define _X86_PCI_MSIPIC_H_
     31 
     32 #include <dev/pci/pcivar.h>
     33 
     34 struct pic	*msipic_construct_msi_pic(const struct pci_attach_args *);
     35 void		msipic_destruct_msi_pic(struct pic *);
     36 struct pic	*msipic_construct_msix_pic(const struct pci_attach_args *);
     37 void		msipic_destruct_msix_pic(struct pic *);
     38 struct pic	*msipic_find_msi_pic(int);
     39 int		msipic_set_msi_vectors(struct pic *, pci_intr_handle_t *, int);
     40 
     41 bool		msipic_is_msi_pic(struct pic *);
     42 int		msipic_get_devid(struct pic *);
     43 
     44 struct msipic_pci_info {
     45 	int mp_bus, mp_dev, mp_fun;
     46 	int mp_veccnt; /* The number of MSI/MSI-X vectors. */
     47 	uint32_t mp_table_base; /* Xen: MSI-X table location in memory space */
     48 	int *mp_xen_pirq; /* Xen: pirq numbers */
     49 };
     50 
     51 const struct msipic_pci_info *msipic_get_pci_info(struct pic *);
     52 
     53 void		msipic_init(void);
     54 
     55 #endif /* _X86_PCI_MSIPIC_H_ */
     56