adf_os_pci.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /*
  2. * Copyright (c) 2013 Qualcomm Atheros, Inc.
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted (subject to the limitations in the
  7. * disclaimer below) provided that the following conditions are met:
  8. *
  9. * * Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. *
  12. * * Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the
  15. * distribution.
  16. *
  17. * * Neither the name of Qualcomm Atheros nor the names of its
  18. * contributors may be used to endorse or promote products derived
  19. * from this software without specific prior written permission.
  20. *
  21. * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
  22. * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
  23. * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
  24. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  25. * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  26. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  27. * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  28. * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  29. * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  30. * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  31. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
  32. * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
  33. * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34. */
  35. /**
  36. * @ingroup adf_os_public
  37. * @file adf_os_pci.h
  38. * This file abstracts the PCI subsystem.
  39. */
  40. #ifndef __ADF_OS_PCI_H
  41. #define __ADF_OS_PCI_H
  42. #include <adf_os_pci_pvt.h>
  43. /**
  44. * @brief Define the entry point for the PCI module.
  45. */
  46. #define adf_os_pci_module_init(_fn) __adf_os_pci_module_init(_fn)
  47. /**
  48. * @brief Define the exit point for the PCI module.
  49. */
  50. #define adf_os_pci_module_exit(_fn) __adf_os_pci_module_exit(_fn)
  51. /**
  52. * @brief Setup the following driver information: name, PCI IDs of devices
  53. * supported and some device handlers.
  54. */
  55. #define adf_os_pci_set_drv_info(_name, _pci_ids, _attach, _detach, _suspend, _resume) \
  56. __adf_os_pci_set_drv_info(_name, _pci_ids, _attach, _detach, _suspend, _resume)
  57. /**
  58. * @brief Read a byte of PCI config space.
  59. *
  60. * @param[in] osdev platform device instance
  61. * @param[in] offset offset to read
  62. * @param[out] val value read
  63. *
  64. * @return status of operation
  65. */
  66. static inline int
  67. adf_os_pci_config_read8(adf_os_device_t osdev, int offset, a_uint8_t *val)
  68. {
  69. return __adf_os_pci_config_read8(osdev, offset, val);
  70. }
  71. /**
  72. * @brief Write a byte to PCI config space.
  73. *
  74. * @param[in] osdev platform device instance
  75. * @param[in] offset offset to write
  76. * @param[in] val value to write
  77. *
  78. * @return status of operation
  79. */
  80. static inline int
  81. adf_os_pci_config_write8(adf_os_device_t osdev, int offset, a_uint8_t val)
  82. {
  83. return __adf_os_pci_config_write8(osdev, offset, val);
  84. }
  85. /**
  86. * @brief Read 2 bytes of PCI config space.
  87. *
  88. * @param[in] osdev platform device instance
  89. * @param[in] offset offset to read
  90. * @param[out] val value read
  91. *
  92. * @return status of operation
  93. */
  94. static inline int
  95. adf_os_pci_config_read16(adf_os_device_t osdev, int offset, a_uint16_t *val)
  96. {
  97. return __adf_os_pci_config_read16(osdev, offset, val);
  98. }
  99. /**
  100. * @brief Write 2 bytes to PCI config space.
  101. *
  102. * @param[in] osdev platform device instance
  103. * @param[in] offset offset to write
  104. * @param[in] val value to write
  105. *
  106. * @return status of operation
  107. */
  108. static inline int
  109. adf_os_pci_config_write16(adf_os_device_t osdev, int offset, a_uint16_t val)
  110. {
  111. return __adf_os_pci_config_write16(osdev, offset, val);
  112. }
  113. /**
  114. * @brief Read 4 bytes of PCI config space.
  115. *
  116. * @param[in] osdev platform device instance
  117. * @param[in] offset offset to read
  118. * @param[out] val value read
  119. *
  120. * @return status of operation
  121. */
  122. static inline int
  123. adf_os_pci_config_read32(adf_os_device_t osdev, int offset, a_uint32_t *val)
  124. {
  125. return __adf_os_pci_config_read32(osdev, offset, val);
  126. }
  127. /**
  128. * @brief Write 4 bytes to PCI config space.
  129. *
  130. * @param[in] osdev platform device instance
  131. * @param[in] offset offset to write
  132. * @param[in] val value to write
  133. *
  134. * @return status of operation
  135. */
  136. static inline int
  137. adf_os_pci_config_write32(adf_os_device_t osdev, int offset, a_uint32_t val)
  138. {
  139. return __adf_os_pci_config_write32(osdev, offset, val);
  140. }
  141. #endif