xref: /openbmc/linux/arch/sparc/kernel/pci_sun4v.h (revision b2441318)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2a88b5ba8SSam Ravnborg /* pci_sun4v.h: SUN4V specific PCI controller support.
3a88b5ba8SSam Ravnborg  *
4a88b5ba8SSam Ravnborg  * Copyright (C) 2006 David S. Miller (davem@davemloft.net)
5a88b5ba8SSam Ravnborg  */
6a88b5ba8SSam Ravnborg 
7a88b5ba8SSam Ravnborg #ifndef _PCI_SUN4V_H
8a88b5ba8SSam Ravnborg #define _PCI_SUN4V_H
9a88b5ba8SSam Ravnborg 
102e74a74fSSam Ravnborg long pci_sun4v_iommu_map(unsigned long devhandle,
11a88b5ba8SSam Ravnborg 			 unsigned long tsbid,
12a88b5ba8SSam Ravnborg 			 unsigned long num_ttes,
13a88b5ba8SSam Ravnborg 			 unsigned long io_attributes,
14a88b5ba8SSam Ravnborg 			 unsigned long io_page_list_pa);
152e74a74fSSam Ravnborg unsigned long pci_sun4v_iommu_demap(unsigned long devhandle,
16a88b5ba8SSam Ravnborg 				    unsigned long tsbid,
17a88b5ba8SSam Ravnborg 				    unsigned long num_ttes);
182e74a74fSSam Ravnborg unsigned long pci_sun4v_iommu_getmap(unsigned long devhandle,
19a88b5ba8SSam Ravnborg 				     unsigned long tsbid,
20a88b5ba8SSam Ravnborg 				     unsigned long *io_attributes,
21a88b5ba8SSam Ravnborg 				     unsigned long *real_address);
222e74a74fSSam Ravnborg unsigned long pci_sun4v_config_get(unsigned long devhandle,
23a88b5ba8SSam Ravnborg 				   unsigned long pci_device,
24a88b5ba8SSam Ravnborg 				   unsigned long config_offset,
25a88b5ba8SSam Ravnborg 				   unsigned long size);
262e74a74fSSam Ravnborg int pci_sun4v_config_put(unsigned long devhandle,
27a88b5ba8SSam Ravnborg 			 unsigned long pci_device,
28a88b5ba8SSam Ravnborg 			 unsigned long config_offset,
29a88b5ba8SSam Ravnborg 			 unsigned long size,
30a88b5ba8SSam Ravnborg 			 unsigned long data);
31a88b5ba8SSam Ravnborg 
322e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_conf(unsigned long devhandle,
33a88b5ba8SSam Ravnborg 					 unsigned long msiqid,
34a88b5ba8SSam Ravnborg 					 unsigned long msiq_paddr,
35a88b5ba8SSam Ravnborg 					 unsigned long num_entries);
362e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_info(unsigned long devhandle,
37a88b5ba8SSam Ravnborg 				  unsigned long msiqid,
38a88b5ba8SSam Ravnborg 				  unsigned long *msiq_paddr,
39a88b5ba8SSam Ravnborg 				  unsigned long *num_entries);
402e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_getvalid(unsigned long devhandle,
41a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
42a88b5ba8SSam Ravnborg 				      unsigned long *valid);
432e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_setvalid(unsigned long devhandle,
44a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
45a88b5ba8SSam Ravnborg 				      unsigned long valid);
462e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_getstate(unsigned long devhandle,
47a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
48a88b5ba8SSam Ravnborg 				      unsigned long *state);
492e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_setstate(unsigned long devhandle,
50a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
51a88b5ba8SSam Ravnborg 				      unsigned long state);
522e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_gethead(unsigned long devhandle,
53a88b5ba8SSam Ravnborg 				     unsigned long msiqid,
54a88b5ba8SSam Ravnborg 				     unsigned long *head);
552e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_sethead(unsigned long devhandle,
56a88b5ba8SSam Ravnborg 				     unsigned long msiqid,
57a88b5ba8SSam Ravnborg 				     unsigned long head);
582e74a74fSSam Ravnborg unsigned long pci_sun4v_msiq_gettail(unsigned long devhandle,
59a88b5ba8SSam Ravnborg 				      unsigned long msiqid,
60a88b5ba8SSam Ravnborg 				      unsigned long *head);
612e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_getvalid(unsigned long devhandle,
62a88b5ba8SSam Ravnborg 				     unsigned long msinum,
63a88b5ba8SSam Ravnborg 				     unsigned long *valid);
642e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_setvalid(unsigned long devhandle,
65a88b5ba8SSam Ravnborg 				     unsigned long msinum,
66a88b5ba8SSam Ravnborg 				     unsigned long valid);
672e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_getmsiq(unsigned long devhandle,
68a88b5ba8SSam Ravnborg 				    unsigned long msinum,
69a88b5ba8SSam Ravnborg 				    unsigned long *msiq);
702e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_setmsiq(unsigned long devhandle,
71a88b5ba8SSam Ravnborg 				    unsigned long msinum,
72a88b5ba8SSam Ravnborg 				    unsigned long msiq,
73a88b5ba8SSam Ravnborg 				    unsigned long msitype);
742e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_getstate(unsigned long devhandle,
75a88b5ba8SSam Ravnborg 				     unsigned long msinum,
76a88b5ba8SSam Ravnborg 				     unsigned long *state);
772e74a74fSSam Ravnborg unsigned long pci_sun4v_msi_setstate(unsigned long devhandle,
78a88b5ba8SSam Ravnborg 				     unsigned long msinum,
79a88b5ba8SSam Ravnborg 				     unsigned long state);
802e74a74fSSam Ravnborg unsigned long pci_sun4v_msg_getmsiq(unsigned long devhandle,
81a88b5ba8SSam Ravnborg 				    unsigned long msinum,
82a88b5ba8SSam Ravnborg 				    unsigned long *msiq);
832e74a74fSSam Ravnborg unsigned long pci_sun4v_msg_setmsiq(unsigned long devhandle,
84a88b5ba8SSam Ravnborg 				    unsigned long msinum,
85a88b5ba8SSam Ravnborg 				    unsigned long msiq);
862e74a74fSSam Ravnborg unsigned long pci_sun4v_msg_getvalid(unsigned long devhandle,
87a88b5ba8SSam Ravnborg 				     unsigned long msinum,
88a88b5ba8SSam Ravnborg 				     unsigned long *valid);
892e74a74fSSam Ravnborg unsigned long pci_sun4v_msg_setvalid(unsigned long devhandle,
90a88b5ba8SSam Ravnborg 				     unsigned long msinum,
91a88b5ba8SSam Ravnborg 				     unsigned long valid);
92a88b5ba8SSam Ravnborg 
93f0248c15STushar Dave /* Sun4v HV IOMMU v2 APIs */
94f0248c15STushar Dave unsigned long pci_sun4v_iotsb_conf(unsigned long devhandle,
95f0248c15STushar Dave 				   unsigned long ra,
96f0248c15STushar Dave 				   unsigned long table_size,
97f0248c15STushar Dave 				   unsigned long page_size,
98f0248c15STushar Dave 				   unsigned long dvma_base,
99f0248c15STushar Dave 				   u64 *iotsb_num);
1005116ab4eSTushar Dave unsigned long pci_sun4v_iotsb_bind(unsigned long devhandle,
1015116ab4eSTushar Dave 				   unsigned long iotsb_num,
1025116ab4eSTushar Dave 				   unsigned int pci_device);
103f08978b0STushar Dave unsigned long pci_sun4v_iotsb_map(unsigned long devhandle,
104f08978b0STushar Dave 				  unsigned long iotsb_num,
105f08978b0STushar Dave 				  unsigned long iotsb_index_iottes,
106f08978b0STushar Dave 				  unsigned long io_attributes,
107f08978b0STushar Dave 				  unsigned long io_page_list_pa,
108f08978b0STushar Dave 				  long *mapped);
109f08978b0STushar Dave unsigned long pci_sun4v_iotsb_demap(unsigned long devhandle,
110f08978b0STushar Dave 				    unsigned long iotsb_num,
111f08978b0STushar Dave 				    unsigned long iotsb_index,
112f08978b0STushar Dave 				    unsigned long iottes,
113f08978b0STushar Dave 				    unsigned long *demapped);
114a88b5ba8SSam Ravnborg #endif /* !(_PCI_SUN4V_H) */
115