xref: /openbmc/linux/arch/sparc/kernel/pci_sun4v.h (revision 2e74a74f)
1a88b5ba8SSam Ravnborg /* pci_sun4v.h: SUN4V specific PCI controller support.
2a88b5ba8SSam Ravnborg  *
3a88b5ba8SSam Ravnborg  * Copyright (C) 2006 David S. Miller (davem@davemloft.net)
4a88b5ba8SSam Ravnborg  */
5a88b5ba8SSam Ravnborg 
6a88b5ba8SSam Ravnborg #ifndef _PCI_SUN4V_H
7a88b5ba8SSam Ravnborg #define _PCI_SUN4V_H
8a88b5ba8SSam Ravnborg 
92e74a74fSSam Ravnborg long pci_sun4v_iommu_map(unsigned long devhandle,
10a88b5ba8SSam Ravnborg 			 unsigned long tsbid,
11a88b5ba8SSam Ravnborg 			 unsigned long num_ttes,
12a88b5ba8SSam Ravnborg 			 unsigned long io_attributes,
13a88b5ba8SSam Ravnborg 			 unsigned long io_page_list_pa);
142e74a74fSSam Ravnborg unsigned long pci_sun4v_iommu_demap(unsigned long devhandle,
15a88b5ba8SSam Ravnborg 				    unsigned long tsbid,
16a88b5ba8SSam Ravnborg 				    unsigned long num_ttes);
172e74a74fSSam Ravnborg unsigned long pci_sun4v_iommu_getmap(unsigned long devhandle,
18a88b5ba8SSam Ravnborg 				     unsigned long tsbid,
19a88b5ba8SSam Ravnborg 				     unsigned long *io_attributes,
20a88b5ba8SSam Ravnborg 				     unsigned long *real_address);
212e74a74fSSam Ravnborg unsigned long pci_sun4v_config_get(unsigned long devhandle,
22a88b5ba8SSam Ravnborg 				   unsigned long pci_device,
23a88b5ba8SSam Ravnborg 				   unsigned long config_offset,
24a88b5ba8SSam Ravnborg 				   unsigned long size);
252e74a74fSSam Ravnborg int pci_sun4v_config_put(unsigned long devhandle,
26a88b5ba8SSam Ravnborg 			 unsigned long pci_device,
27a88b5ba8SSam Ravnborg 			 unsigned long config_offset,
28a88b5ba8SSam Ravnborg 			 unsigned long size,
29a88b5ba8SSam Ravnborg 			 unsigned long data);
30a88b5ba8SSam Ravnborg 
312e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_conf(unsigned long devhandle,
32a88b5ba8SSam Ravnborg 					 unsigned long msiqid,
33a88b5ba8SSam Ravnborg 					 unsigned long msiq_paddr,
34a88b5ba8SSam Ravnborg 					 unsigned long num_entries);
352e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_info(unsigned long devhandle,
36a88b5ba8SSam Ravnborg 				  unsigned long msiqid,
37a88b5ba8SSam Ravnborg 				  unsigned long *msiq_paddr,
38a88b5ba8SSam Ravnborg 				  unsigned long *num_entries);
392e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_getvalid(unsigned long devhandle,
40a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
41a88b5ba8SSam Ravnborg 				      unsigned long *valid);
422e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_setvalid(unsigned long devhandle,
43a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
44a88b5ba8SSam Ravnborg 				      unsigned long valid);
452e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_getstate(unsigned long devhandle,
46a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
47a88b5ba8SSam Ravnborg 				      unsigned long *state);
482e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_setstate(unsigned long devhandle,
49a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
50a88b5ba8SSam Ravnborg 				      unsigned long state);
512e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_gethead(unsigned long devhandle,
52a88b5ba8SSam Ravnborg 				     unsigned long msiqid,
53a88b5ba8SSam Ravnborg 				     unsigned long *head);
542e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_sethead(unsigned long devhandle,
55a88b5ba8SSam Ravnborg 				     unsigned long msiqid,
56a88b5ba8SSam Ravnborg 				     unsigned long head);
572e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_gettail(unsigned long devhandle,
58a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
59a88b5ba8SSam Ravnborg 				      unsigned long *head);
602e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_getvalid(unsigned long devhandle,
61a88b5ba8SSam Ravnborg 				     unsigned long msinum,
62a88b5ba8SSam Ravnborg 				     unsigned long *valid);
632e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_setvalid(unsigned long devhandle,
64a88b5ba8SSam Ravnborg 				     unsigned long msinum,
65a88b5ba8SSam Ravnborg 				     unsigned long valid);
662e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_getmsiq(unsigned long devhandle,
67a88b5ba8SSam Ravnborg 				    unsigned long msinum,
68a88b5ba8SSam Ravnborg 				    unsigned long *msiq);
692e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_setmsiq(unsigned long devhandle,
70a88b5ba8SSam Ravnborg 				    unsigned long msinum,
71a88b5ba8SSam Ravnborg 				    unsigned long msiq,
72a88b5ba8SSam Ravnborg 				    unsigned long msitype);
732e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_getstate(unsigned long devhandle,
74a88b5ba8SSam Ravnborg 				     unsigned long msinum,
75a88b5ba8SSam Ravnborg 				     unsigned long *state);
762e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_setstate(unsigned long devhandle,
77a88b5ba8SSam Ravnborg 				     unsigned long msinum,
78a88b5ba8SSam Ravnborg 				     unsigned long state);
792e74a74fSSam Ravnborg unsigned long pci_sun4v_msg_getmsiq(unsigned long devhandle,
80a88b5ba8SSam Ravnborg 				    unsigned long msinum,
81a88b5ba8SSam Ravnborg 				    unsigned long *msiq);
822e74a74fSSam Ravnborg unsigned long pci_sun4v_msg_setmsiq(unsigned long devhandle,
83a88b5ba8SSam Ravnborg 				    unsigned long msinum,
84a88b5ba8SSam Ravnborg 				    unsigned long msiq);
852e74a74fSSam Ravnborg unsigned long pci_sun4v_msg_getvalid(unsigned long devhandle,
86a88b5ba8SSam Ravnborg 				     unsigned long msinum,
87a88b5ba8SSam Ravnborg 				     unsigned long *valid);
882e74a74fSSam Ravnborg unsigned long pci_sun4v_msg_setvalid(unsigned long devhandle,
89a88b5ba8SSam Ravnborg 				     unsigned long msinum,
90a88b5ba8SSam Ravnborg 				     unsigned long valid);
91a88b5ba8SSam Ravnborg 
92a88b5ba8SSam Ravnborg #endif /* !(_PCI_SUN4V_H) */
93