1*b2441318SGreg 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