1/* SPDX-License-Identifier: GPL-2.0 */
2/* pci_sun4v.h: SUN4V specific PCI controller support.
3 *
4 * Copyright (C) 2006 David S. Miller (davem@davemloft.net)
5 */
6
7#ifndef _PCI_SUN4V_H
8#define _PCI_SUN4V_H
9
10long pci_sun4v_iommu_map(unsigned long devhandle,
11			 unsigned long tsbid,
12			 unsigned long num_ttes,
13			 unsigned long io_attributes,
14			 unsigned long io_page_list_pa);
15unsigned long pci_sun4v_iommu_demap(unsigned long devhandle,
16				    unsigned long tsbid,
17				    unsigned long num_ttes);
18unsigned long pci_sun4v_iommu_getmap(unsigned long devhandle,
19				     unsigned long tsbid,
20				     unsigned long *io_attributes,
21				     unsigned long *real_address);
22unsigned long pci_sun4v_config_get(unsigned long devhandle,
23				   unsigned long pci_device,
24				   unsigned long config_offset,
25				   unsigned long size);
26int pci_sun4v_config_put(unsigned long devhandle,
27			 unsigned long pci_device,
28			 unsigned long config_offset,
29			 unsigned long size,
30			 unsigned long data);
31
32unsigned long pci_sun4v_msiq_conf(unsigned long devhandle,
33					 unsigned long msiqid,
34					 unsigned long msiq_paddr,
35					 unsigned long num_entries);
36unsigned long pci_sun4v_msiq_info(unsigned long devhandle,
37				  unsigned long msiqid,
38				  unsigned long *msiq_paddr,
39				  unsigned long *num_entries);
40unsigned long pci_sun4v_msiq_getvalid(unsigned long devhandle,
41				      unsigned long msiqid,
42				      unsigned long *valid);
43unsigned long pci_sun4v_msiq_setvalid(unsigned long devhandle,
44				      unsigned long msiqid,
45				      unsigned long valid);
46unsigned long pci_sun4v_msiq_getstate(unsigned long devhandle,
47				      unsigned long msiqid,
48				      unsigned long *state);
49unsigned long pci_sun4v_msiq_setstate(unsigned long devhandle,
50				      unsigned long msiqid,
51				      unsigned long state);
52unsigned long pci_sun4v_msiq_gethead(unsigned long devhandle,
53				     unsigned long msiqid,
54				     unsigned long *head);
55unsigned long pci_sun4v_msiq_sethead(unsigned long devhandle,
56				     unsigned long msiqid,
57				     unsigned long head);
58unsigned long pci_sun4v_msiq_gettail(unsigned long devhandle,
59				      unsigned long msiqid,
60				      unsigned long *head);
61unsigned long pci_sun4v_msi_getvalid(unsigned long devhandle,
62				     unsigned long msinum,
63				     unsigned long *valid);
64unsigned long pci_sun4v_msi_setvalid(unsigned long devhandle,
65				     unsigned long msinum,
66				     unsigned long valid);
67unsigned long pci_sun4v_msi_getmsiq(unsigned long devhandle,
68				    unsigned long msinum,
69				    unsigned long *msiq);
70unsigned long pci_sun4v_msi_setmsiq(unsigned long devhandle,
71				    unsigned long msinum,
72				    unsigned long msiq,
73				    unsigned long msitype);
74unsigned long pci_sun4v_msi_getstate(unsigned long devhandle,
75				     unsigned long msinum,
76				     unsigned long *state);
77unsigned long pci_sun4v_msi_setstate(unsigned long devhandle,
78				     unsigned long msinum,
79				     unsigned long state);
80unsigned long pci_sun4v_msg_getmsiq(unsigned long devhandle,
81				    unsigned long msinum,
82				    unsigned long *msiq);
83unsigned long pci_sun4v_msg_setmsiq(unsigned long devhandle,
84				    unsigned long msinum,
85				    unsigned long msiq);
86unsigned long pci_sun4v_msg_getvalid(unsigned long devhandle,
87				     unsigned long msinum,
88				     unsigned long *valid);
89unsigned long pci_sun4v_msg_setvalid(unsigned long devhandle,
90				     unsigned long msinum,
91				     unsigned long valid);
92
93/* Sun4v HV IOMMU v2 APIs */
94unsigned long pci_sun4v_iotsb_conf(unsigned long devhandle,
95				   unsigned long ra,
96				   unsigned long table_size,
97				   unsigned long page_size,
98				   unsigned long dvma_base,
99				   u64 *iotsb_num);
100unsigned long pci_sun4v_iotsb_bind(unsigned long devhandle,
101				   unsigned long iotsb_num,
102				   unsigned int pci_device);
103unsigned long pci_sun4v_iotsb_map(unsigned long devhandle,
104				  unsigned long iotsb_num,
105				  unsigned long iotsb_index_iottes,
106				  unsigned long io_attributes,
107				  unsigned long io_page_list_pa,
108				  long *mapped);
109unsigned long pci_sun4v_iotsb_demap(unsigned long devhandle,
110				    unsigned long iotsb_num,
111				    unsigned long iotsb_index,
112				    unsigned long iottes,
113				    unsigned long *demapped);
114#endif /* !(_PCI_SUN4V_H) */
115