pci_sun4v.h 4.1 KB

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