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