linux-headers (unknown)

(root)/
include/
linux/
switchtec_ioctl.h
       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  
      17  #ifndef _LINUX_SWITCHTEC_IOCTL_H
      18  #define _LINUX_SWITCHTEC_IOCTL_H
      19  
      20  #include <linux/types.h>
      21  
      22  #define SWITCHTEC_IOCTL_PART_CFG0	0
      23  #define SWITCHTEC_IOCTL_PART_CFG1	1
      24  #define SWITCHTEC_IOCTL_PART_IMG0	2
      25  #define SWITCHTEC_IOCTL_PART_IMG1	3
      26  #define SWITCHTEC_IOCTL_PART_NVLOG	4
      27  #define SWITCHTEC_IOCTL_PART_VENDOR0	5
      28  #define SWITCHTEC_IOCTL_PART_VENDOR1	6
      29  #define SWITCHTEC_IOCTL_PART_VENDOR2	7
      30  #define SWITCHTEC_IOCTL_PART_VENDOR3	8
      31  #define SWITCHTEC_IOCTL_PART_VENDOR4	9
      32  #define SWITCHTEC_IOCTL_PART_VENDOR5	10
      33  #define SWITCHTEC_IOCTL_PART_VENDOR6	11
      34  #define SWITCHTEC_IOCTL_PART_VENDOR7	12
      35  #define SWITCHTEC_IOCTL_PART_BL2_0	13
      36  #define SWITCHTEC_IOCTL_PART_BL2_1	14
      37  #define SWITCHTEC_IOCTL_PART_MAP_0	15
      38  #define SWITCHTEC_IOCTL_PART_MAP_1	16
      39  #define SWITCHTEC_IOCTL_PART_KEY_0	17
      40  #define SWITCHTEC_IOCTL_PART_KEY_1	18
      41  
      42  #define SWITCHTEC_NUM_PARTITIONS_GEN3	13
      43  #define SWITCHTEC_NUM_PARTITIONS_GEN4	19
      44  
      45  /* obsolete: for compatibility with old userspace software */
      46  #define SWITCHTEC_IOCTL_NUM_PARTITIONS	SWITCHTEC_NUM_PARTITIONS_GEN3
      47  
      48  struct switchtec_ioctl_flash_info {
      49  	__u64 flash_length;
      50  	__u32 num_partitions;
      51  	__u32 padding;
      52  };
      53  
      54  #define SWITCHTEC_IOCTL_PART_ACTIVE  1
      55  #define SWITCHTEC_IOCTL_PART_RUNNING 2
      56  
      57  struct switchtec_ioctl_flash_part_info {
      58  	__u32 flash_partition;
      59  	__u32 address;
      60  	__u32 length;
      61  	__u32 active;
      62  };
      63  
      64  struct switchtec_ioctl_event_summary_legacy {
      65  	__u64 global;
      66  	__u64 part_bitmap;
      67  	__u32 local_part;
      68  	__u32 padding;
      69  	__u32 part[48];
      70  	__u32 pff[48];
      71  };
      72  
      73  struct switchtec_ioctl_event_summary {
      74  	__u64 global;
      75  	__u64 part_bitmap;
      76  	__u32 local_part;
      77  	__u32 padding;
      78  	__u32 part[48];
      79  	__u32 pff[255];
      80  };
      81  
      82  #define SWITCHTEC_IOCTL_EVENT_STACK_ERROR		0
      83  #define SWITCHTEC_IOCTL_EVENT_PPU_ERROR			1
      84  #define SWITCHTEC_IOCTL_EVENT_ISP_ERROR			2
      85  #define SWITCHTEC_IOCTL_EVENT_SYS_RESET			3
      86  #define SWITCHTEC_IOCTL_EVENT_FW_EXC			4
      87  #define SWITCHTEC_IOCTL_EVENT_FW_NMI			5
      88  #define SWITCHTEC_IOCTL_EVENT_FW_NON_FATAL		6
      89  #define SWITCHTEC_IOCTL_EVENT_FW_FATAL			7
      90  #define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP		8
      91  #define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP_ASYNC	9
      92  #define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP		10
      93  #define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP_ASYNC	11
      94  #define SWITCHTEC_IOCTL_EVENT_GPIO_INT			12
      95  #define SWITCHTEC_IOCTL_EVENT_PART_RESET		13
      96  #define SWITCHTEC_IOCTL_EVENT_MRPC_COMP			14
      97  #define SWITCHTEC_IOCTL_EVENT_MRPC_COMP_ASYNC		15
      98  #define SWITCHTEC_IOCTL_EVENT_DYN_PART_BIND_COMP	16
      99  #define SWITCHTEC_IOCTL_EVENT_AER_IN_P2P		17
     100  #define SWITCHTEC_IOCTL_EVENT_AER_IN_VEP		18
     101  #define SWITCHTEC_IOCTL_EVENT_DPC			19
     102  #define SWITCHTEC_IOCTL_EVENT_CTS			20
     103  #define SWITCHTEC_IOCTL_EVENT_HOTPLUG			21
     104  #define SWITCHTEC_IOCTL_EVENT_IER			22
     105  #define SWITCHTEC_IOCTL_EVENT_THRESH			23
     106  #define SWITCHTEC_IOCTL_EVENT_POWER_MGMT		24
     107  #define SWITCHTEC_IOCTL_EVENT_TLP_THROTTLING		25
     108  #define SWITCHTEC_IOCTL_EVENT_FORCE_SPEED		26
     109  #define SWITCHTEC_IOCTL_EVENT_CREDIT_TIMEOUT		27
     110  #define SWITCHTEC_IOCTL_EVENT_LINK_STATE		28
     111  #define SWITCHTEC_IOCTL_EVENT_GFMS			29
     112  #define SWITCHTEC_IOCTL_EVENT_INTERCOMM_REQ_NOTIFY	30
     113  #define SWITCHTEC_IOCTL_EVENT_UEC			31
     114  #define SWITCHTEC_IOCTL_MAX_EVENTS			32
     115  
     116  #define SWITCHTEC_IOCTL_EVENT_LOCAL_PART_IDX -1
     117  #define SWITCHTEC_IOCTL_EVENT_IDX_ALL -2
     118  
     119  #define SWITCHTEC_IOCTL_EVENT_FLAG_CLEAR     (1 << 0)
     120  #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_POLL   (1 << 1)
     121  #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_LOG    (1 << 2)
     122  #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_CLI    (1 << 3)
     123  #define SWITCHTEC_IOCTL_EVENT_FLAG_EN_FATAL  (1 << 4)
     124  #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_POLL  (1 << 5)
     125  #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_LOG   (1 << 6)
     126  #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_CLI   (1 << 7)
     127  #define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_FATAL (1 << 8)
     128  #define SWITCHTEC_IOCTL_EVENT_FLAG_UNUSED    (~0x1ff)
     129  
     130  struct switchtec_ioctl_event_ctl {
     131  	__u32 event_id;
     132  	__s32 index;
     133  	__u32 flags;
     134  	__u32 occurred;
     135  	__u32 count;
     136  	__u32 data[5];
     137  };
     138  
     139  #define SWITCHTEC_IOCTL_PFF_VEP 100
     140  struct switchtec_ioctl_pff_port {
     141  	__u32 pff;
     142  	__u32 partition;
     143  	__u32 port;
     144  };
     145  
     146  #define SWITCHTEC_IOCTL_FLASH_INFO \
     147  	_IOR('W', 0x40, struct switchtec_ioctl_flash_info)
     148  #define SWITCHTEC_IOCTL_FLASH_PART_INFO \
     149  	_IOWR('W', 0x41, struct switchtec_ioctl_flash_part_info)
     150  #define SWITCHTEC_IOCTL_EVENT_SUMMARY \
     151  	_IOR('W', 0x42, struct switchtec_ioctl_event_summary)
     152  #define SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY \
     153  	_IOR('W', 0x42, struct switchtec_ioctl_event_summary_legacy)
     154  #define SWITCHTEC_IOCTL_EVENT_CTL \
     155  	_IOWR('W', 0x43, struct switchtec_ioctl_event_ctl)
     156  #define SWITCHTEC_IOCTL_PFF_TO_PORT \
     157  	_IOWR('W', 0x44, struct switchtec_ioctl_pff_port)
     158  #define SWITCHTEC_IOCTL_PORT_TO_PFF \
     159  	_IOWR('W', 0x45, struct switchtec_ioctl_pff_port)
     160  
     161  #endif