0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _UAPI_LINUX_SWITCHTEC_IOCTL_H
0018 #define _UAPI_LINUX_SWITCHTEC_IOCTL_H
0019
0020 #include <linux/types.h>
0021
0022 #define SWITCHTEC_IOCTL_PART_CFG0 0
0023 #define SWITCHTEC_IOCTL_PART_CFG1 1
0024 #define SWITCHTEC_IOCTL_PART_IMG0 2
0025 #define SWITCHTEC_IOCTL_PART_IMG1 3
0026 #define SWITCHTEC_IOCTL_PART_NVLOG 4
0027 #define SWITCHTEC_IOCTL_PART_VENDOR0 5
0028 #define SWITCHTEC_IOCTL_PART_VENDOR1 6
0029 #define SWITCHTEC_IOCTL_PART_VENDOR2 7
0030 #define SWITCHTEC_IOCTL_PART_VENDOR3 8
0031 #define SWITCHTEC_IOCTL_PART_VENDOR4 9
0032 #define SWITCHTEC_IOCTL_PART_VENDOR5 10
0033 #define SWITCHTEC_IOCTL_PART_VENDOR6 11
0034 #define SWITCHTEC_IOCTL_PART_VENDOR7 12
0035 #define SWITCHTEC_IOCTL_PART_BL2_0 13
0036 #define SWITCHTEC_IOCTL_PART_BL2_1 14
0037 #define SWITCHTEC_IOCTL_PART_MAP_0 15
0038 #define SWITCHTEC_IOCTL_PART_MAP_1 16
0039 #define SWITCHTEC_IOCTL_PART_KEY_0 17
0040 #define SWITCHTEC_IOCTL_PART_KEY_1 18
0041
0042 #define SWITCHTEC_NUM_PARTITIONS_GEN3 13
0043 #define SWITCHTEC_NUM_PARTITIONS_GEN4 19
0044
0045
0046 #define SWITCHTEC_IOCTL_NUM_PARTITIONS SWITCHTEC_NUM_PARTITIONS_GEN3
0047
0048 struct switchtec_ioctl_flash_info {
0049 __u64 flash_length;
0050 __u32 num_partitions;
0051 __u32 padding;
0052 };
0053
0054 #define SWITCHTEC_IOCTL_PART_ACTIVE 1
0055 #define SWITCHTEC_IOCTL_PART_RUNNING 2
0056
0057 struct switchtec_ioctl_flash_part_info {
0058 __u32 flash_partition;
0059 __u32 address;
0060 __u32 length;
0061 __u32 active;
0062 };
0063
0064 struct switchtec_ioctl_event_summary_legacy {
0065 __u64 global;
0066 __u64 part_bitmap;
0067 __u32 local_part;
0068 __u32 padding;
0069 __u32 part[48];
0070 __u32 pff[48];
0071 };
0072
0073 struct switchtec_ioctl_event_summary {
0074 __u64 global;
0075 __u64 part_bitmap;
0076 __u32 local_part;
0077 __u32 padding;
0078 __u32 part[48];
0079 __u32 pff[255];
0080 };
0081
0082 #define SWITCHTEC_IOCTL_EVENT_STACK_ERROR 0
0083 #define SWITCHTEC_IOCTL_EVENT_PPU_ERROR 1
0084 #define SWITCHTEC_IOCTL_EVENT_ISP_ERROR 2
0085 #define SWITCHTEC_IOCTL_EVENT_SYS_RESET 3
0086 #define SWITCHTEC_IOCTL_EVENT_FW_EXC 4
0087 #define SWITCHTEC_IOCTL_EVENT_FW_NMI 5
0088 #define SWITCHTEC_IOCTL_EVENT_FW_NON_FATAL 6
0089 #define SWITCHTEC_IOCTL_EVENT_FW_FATAL 7
0090 #define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP 8
0091 #define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP_ASYNC 9
0092 #define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP 10
0093 #define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP_ASYNC 11
0094 #define SWITCHTEC_IOCTL_EVENT_GPIO_INT 12
0095 #define SWITCHTEC_IOCTL_EVENT_PART_RESET 13
0096 #define SWITCHTEC_IOCTL_EVENT_MRPC_COMP 14
0097 #define SWITCHTEC_IOCTL_EVENT_MRPC_COMP_ASYNC 15
0098 #define SWITCHTEC_IOCTL_EVENT_DYN_PART_BIND_COMP 16
0099 #define SWITCHTEC_IOCTL_EVENT_AER_IN_P2P 17
0100 #define SWITCHTEC_IOCTL_EVENT_AER_IN_VEP 18
0101 #define SWITCHTEC_IOCTL_EVENT_DPC 19
0102 #define SWITCHTEC_IOCTL_EVENT_CTS 20
0103 #define SWITCHTEC_IOCTL_EVENT_HOTPLUG 21
0104 #define SWITCHTEC_IOCTL_EVENT_IER 22
0105 #define SWITCHTEC_IOCTL_EVENT_THRESH 23
0106 #define SWITCHTEC_IOCTL_EVENT_POWER_MGMT 24
0107 #define SWITCHTEC_IOCTL_EVENT_TLP_THROTTLING 25
0108 #define SWITCHTEC_IOCTL_EVENT_FORCE_SPEED 26
0109 #define SWITCHTEC_IOCTL_EVENT_CREDIT_TIMEOUT 27
0110 #define SWITCHTEC_IOCTL_EVENT_LINK_STATE 28
0111 #define SWITCHTEC_IOCTL_EVENT_GFMS 29
0112 #define SWITCHTEC_IOCTL_EVENT_INTERCOMM_REQ_NOTIFY 30
0113 #define SWITCHTEC_IOCTL_EVENT_UEC 31
0114 #define SWITCHTEC_IOCTL_MAX_EVENTS 32
0115
0116 #define SWITCHTEC_IOCTL_EVENT_LOCAL_PART_IDX -1
0117 #define SWITCHTEC_IOCTL_EVENT_IDX_ALL -2
0118
0119 #define SWITCHTEC_IOCTL_EVENT_FLAG_CLEAR (1 << 0)
0120 #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_POLL (1 << 1)
0121 #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_LOG (1 << 2)
0122 #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_CLI (1 << 3)
0123 #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_FATAL (1 << 4)
0124 #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_POLL (1 << 5)
0125 #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_LOG (1 << 6)
0126 #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_CLI (1 << 7)
0127 #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_FATAL (1 << 8)
0128 #define SWITCHTEC_IOCTL_EVENT_FLAG_UNUSED (~0x1ff)
0129
0130 struct switchtec_ioctl_event_ctl {
0131 __u32 event_id;
0132 __s32 index;
0133 __u32 flags;
0134 __u32 occurred;
0135 __u32 count;
0136 __u32 data[5];
0137 };
0138
0139 #define SWITCHTEC_IOCTL_PFF_VEP 100
0140 struct switchtec_ioctl_pff_port {
0141 __u32 pff;
0142 __u32 partition;
0143 __u32 port;
0144 };
0145
0146 #define SWITCHTEC_IOCTL_FLASH_INFO \
0147 _IOR('W', 0x40, struct switchtec_ioctl_flash_info)
0148 #define SWITCHTEC_IOCTL_FLASH_PART_INFO \
0149 _IOWR('W', 0x41, struct switchtec_ioctl_flash_part_info)
0150 #define SWITCHTEC_IOCTL_EVENT_SUMMARY \
0151 _IOR('W', 0x42, struct switchtec_ioctl_event_summary)
0152 #define SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY \
0153 _IOR('W', 0x42, struct switchtec_ioctl_event_summary_legacy)
0154 #define SWITCHTEC_IOCTL_EVENT_CTL \
0155 _IOWR('W', 0x43, struct switchtec_ioctl_event_ctl)
0156 #define SWITCHTEC_IOCTL_PFF_TO_PORT \
0157 _IOWR('W', 0x44, struct switchtec_ioctl_pff_port)
0158 #define SWITCHTEC_IOCTL_PORT_TO_PFF \
0159 _IOWR('W', 0x45, struct switchtec_ioctl_pff_port)
0160
0161 #endif