switchtec_ioctl.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2. /*
  3. * Microsemi Switchtec PCIe Driver
  4. * Copyright (c) 2017, Microsemi Corporation
  5. *
  6. * This program is free software; you can redistribute it and/or modify it
  7. * under the terms and conditions of the GNU General Public License,
  8. * version 2, as published by the Free Software Foundation.
  9. *
  10. * This program is distributed in the hope it will be useful, but WITHOUT
  11. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  13. * more details.
  14. *
  15. */
  16. #ifndef _UAPI_LINUX_SWITCHTEC_IOCTL_H
  17. #define _UAPI_LINUX_SWITCHTEC_IOCTL_H
  18. #include <linux/types.h>
  19. #define SWITCHTEC_IOCTL_PART_CFG0 0
  20. #define SWITCHTEC_IOCTL_PART_CFG1 1
  21. #define SWITCHTEC_IOCTL_PART_IMG0 2
  22. #define SWITCHTEC_IOCTL_PART_IMG1 3
  23. #define SWITCHTEC_IOCTL_PART_NVLOG 4
  24. #define SWITCHTEC_IOCTL_PART_VENDOR0 5
  25. #define SWITCHTEC_IOCTL_PART_VENDOR1 6
  26. #define SWITCHTEC_IOCTL_PART_VENDOR2 7
  27. #define SWITCHTEC_IOCTL_PART_VENDOR3 8
  28. #define SWITCHTEC_IOCTL_PART_VENDOR4 9
  29. #define SWITCHTEC_IOCTL_PART_VENDOR5 10
  30. #define SWITCHTEC_IOCTL_PART_VENDOR6 11
  31. #define SWITCHTEC_IOCTL_PART_VENDOR7 12
  32. #define SWITCHTEC_IOCTL_PART_BL2_0 13
  33. #define SWITCHTEC_IOCTL_PART_BL2_1 14
  34. #define SWITCHTEC_IOCTL_PART_MAP_0 15
  35. #define SWITCHTEC_IOCTL_PART_MAP_1 16
  36. #define SWITCHTEC_IOCTL_PART_KEY_0 17
  37. #define SWITCHTEC_IOCTL_PART_KEY_1 18
  38. #define SWITCHTEC_NUM_PARTITIONS_GEN3 13
  39. #define SWITCHTEC_NUM_PARTITIONS_GEN4 19
  40. /* obsolete: for compatibility with old userspace software */
  41. #define SWITCHTEC_IOCTL_NUM_PARTITIONS SWITCHTEC_NUM_PARTITIONS_GEN3
  42. struct switchtec_ioctl_flash_info {
  43. __u64 flash_length;
  44. __u32 num_partitions;
  45. __u32 padding;
  46. };
  47. #define SWITCHTEC_IOCTL_PART_ACTIVE 1
  48. #define SWITCHTEC_IOCTL_PART_RUNNING 2
  49. struct switchtec_ioctl_flash_part_info {
  50. __u32 flash_partition;
  51. __u32 address;
  52. __u32 length;
  53. __u32 active;
  54. };
  55. struct switchtec_ioctl_event_summary_legacy {
  56. __u64 global;
  57. __u64 part_bitmap;
  58. __u32 local_part;
  59. __u32 padding;
  60. __u32 part[48];
  61. __u32 pff[48];
  62. };
  63. struct switchtec_ioctl_event_summary {
  64. __u64 global;
  65. __u64 part_bitmap;
  66. __u32 local_part;
  67. __u32 padding;
  68. __u32 part[48];
  69. __u32 pff[255];
  70. };
  71. #define SWITCHTEC_IOCTL_EVENT_STACK_ERROR 0
  72. #define SWITCHTEC_IOCTL_EVENT_PPU_ERROR 1
  73. #define SWITCHTEC_IOCTL_EVENT_ISP_ERROR 2
  74. #define SWITCHTEC_IOCTL_EVENT_SYS_RESET 3
  75. #define SWITCHTEC_IOCTL_EVENT_FW_EXC 4
  76. #define SWITCHTEC_IOCTL_EVENT_FW_NMI 5
  77. #define SWITCHTEC_IOCTL_EVENT_FW_NON_FATAL 6
  78. #define SWITCHTEC_IOCTL_EVENT_FW_FATAL 7
  79. #define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP 8
  80. #define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP_ASYNC 9
  81. #define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP 10
  82. #define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP_ASYNC 11
  83. #define SWITCHTEC_IOCTL_EVENT_GPIO_INT 12
  84. #define SWITCHTEC_IOCTL_EVENT_PART_RESET 13
  85. #define SWITCHTEC_IOCTL_EVENT_MRPC_COMP 14
  86. #define SWITCHTEC_IOCTL_EVENT_MRPC_COMP_ASYNC 15
  87. #define SWITCHTEC_IOCTL_EVENT_DYN_PART_BIND_COMP 16
  88. #define SWITCHTEC_IOCTL_EVENT_AER_IN_P2P 17
  89. #define SWITCHTEC_IOCTL_EVENT_AER_IN_VEP 18
  90. #define SWITCHTEC_IOCTL_EVENT_DPC 19
  91. #define SWITCHTEC_IOCTL_EVENT_CTS 20
  92. #define SWITCHTEC_IOCTL_EVENT_HOTPLUG 21
  93. #define SWITCHTEC_IOCTL_EVENT_IER 22
  94. #define SWITCHTEC_IOCTL_EVENT_THRESH 23
  95. #define SWITCHTEC_IOCTL_EVENT_POWER_MGMT 24
  96. #define SWITCHTEC_IOCTL_EVENT_TLP_THROTTLING 25
  97. #define SWITCHTEC_IOCTL_EVENT_FORCE_SPEED 26
  98. #define SWITCHTEC_IOCTL_EVENT_CREDIT_TIMEOUT 27
  99. #define SWITCHTEC_IOCTL_EVENT_LINK_STATE 28
  100. #define SWITCHTEC_IOCTL_EVENT_GFMS 29
  101. #define SWITCHTEC_IOCTL_EVENT_INTERCOMM_REQ_NOTIFY 30
  102. #define SWITCHTEC_IOCTL_EVENT_UEC 31
  103. #define SWITCHTEC_IOCTL_MAX_EVENTS 32
  104. #define SWITCHTEC_IOCTL_EVENT_LOCAL_PART_IDX -1
  105. #define SWITCHTEC_IOCTL_EVENT_IDX_ALL -2
  106. #define SWITCHTEC_IOCTL_EVENT_FLAG_CLEAR (1 << 0)
  107. #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_POLL (1 << 1)
  108. #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_LOG (1 << 2)
  109. #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_CLI (1 << 3)
  110. #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_FATAL (1 << 4)
  111. #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_POLL (1 << 5)
  112. #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_LOG (1 << 6)
  113. #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_CLI (1 << 7)
  114. #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_FATAL (1 << 8)
  115. #define SWITCHTEC_IOCTL_EVENT_FLAG_UNUSED (~0x1ff)
  116. struct switchtec_ioctl_event_ctl {
  117. __u32 event_id;
  118. __s32 index;
  119. __u32 flags;
  120. __u32 occurred;
  121. __u32 count;
  122. __u32 data[5];
  123. };
  124. #define SWITCHTEC_IOCTL_PFF_VEP 100
  125. struct switchtec_ioctl_pff_port {
  126. __u32 pff;
  127. __u32 partition;
  128. __u32 port;
  129. };
  130. #define SWITCHTEC_IOCTL_FLASH_INFO \
  131. _IOR('W', 0x40, struct switchtec_ioctl_flash_info)
  132. #define SWITCHTEC_IOCTL_FLASH_PART_INFO \
  133. _IOWR('W', 0x41, struct switchtec_ioctl_flash_part_info)
  134. #define SWITCHTEC_IOCTL_EVENT_SUMMARY \
  135. _IOR('W', 0x42, struct switchtec_ioctl_event_summary)
  136. #define SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY \
  137. _IOR('W', 0x42, struct switchtec_ioctl_event_summary_legacy)
  138. #define SWITCHTEC_IOCTL_EVENT_CTL \
  139. _IOWR('W', 0x43, struct switchtec_ioctl_event_ctl)
  140. #define SWITCHTEC_IOCTL_PFF_TO_PORT \
  141. _IOWR('W', 0x44, struct switchtec_ioctl_pff_port)
  142. #define SWITCHTEC_IOCTL_PORT_TO_PFF \
  143. _IOWR('W', 0x45, struct switchtec_ioctl_pff_port)
  144. #endif