Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  * Microsemi Switchtec PCIe Driver
0004  * Copyright (c) 2017, Microsemi Corporation
0005  *
0006  * This program is free software; you can redistribute it and/or modify it
0007  * under the terms and conditions of the GNU General Public License,
0008  * version 2, as published by the Free Software Foundation.
0009  *
0010  * This program is distributed in the hope it will be useful, but WITHOUT
0011  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0012  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
0013  * more details.
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 /* obsolete: for compatibility with old userspace software */
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