Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
0002 #ifndef _UAPI_LINUX_FSI_H
0003 #define _UAPI_LINUX_FSI_H
0004 
0005 #include <linux/types.h>
0006 #include <linux/ioctl.h>
0007 
0008 /*
0009  * /dev/scom "raw" ioctl interface
0010  *
0011  * The driver supports a high level "read/write" interface which
0012  * handles retries and converts the status to Linux error codes,
0013  * however low level tools an debugger need to access the "raw"
0014  * HW status information and interpret it themselves, so this
0015  * ioctl interface is also provided for their use case.
0016  */
0017 
0018 /* Structure for SCOM read/write */
0019 struct scom_access {
0020     __u64   addr;       /* SCOM address, supports indirect */
0021     __u64   data;       /* SCOM data (in for write, out for read) */
0022     __u64   mask;       /* Data mask for writes */
0023     __u32   intf_errors;    /* Interface error flags */
0024 #define SCOM_INTF_ERR_PARITY        0x00000001 /* Parity error */
0025 #define SCOM_INTF_ERR_PROTECTION    0x00000002 /* Blocked by secure boot */
0026 #define SCOM_INTF_ERR_ABORT     0x00000004 /* PIB reset during access */
0027 #define SCOM_INTF_ERR_UNKNOWN       0x80000000 /* Unknown error */
0028     /*
0029      * Note: Any other bit set in intf_errors need to be considered as an
0030      * error. Future implementations may define new error conditions. The
0031      * pib_status below is only valid if intf_errors is 0.
0032      */
0033     __u8    pib_status; /* 3-bit PIB status */
0034 #define SCOM_PIB_SUCCESS    0   /* Access successful */
0035 #define SCOM_PIB_BLOCKED    1   /* PIB blocked, pls retry */
0036 #define SCOM_PIB_OFFLINE    2   /* Chiplet offline */
0037 #define SCOM_PIB_PARTIAL    3   /* Partial good */
0038 #define SCOM_PIB_BAD_ADDR   4   /* Invalid address */
0039 #define SCOM_PIB_CLK_ERR    5   /* Clock error */
0040 #define SCOM_PIB_PARITY_ERR 6   /* Parity error on the PIB bus */
0041 #define SCOM_PIB_TIMEOUT    7   /* Bus timeout */
0042     __u8    pad;
0043 };
0044 
0045 /* Flags for SCOM check */
0046 #define SCOM_CHECK_SUPPORTED    0x00000001  /* Interface supported */
0047 #define SCOM_CHECK_PROTECTED    0x00000002  /* Interface blocked by secure boot */
0048 
0049 /* Flags for SCOM reset */
0050 #define SCOM_RESET_INTF     0x00000001  /* Reset interface */
0051 #define SCOM_RESET_PIB      0x00000002  /* Reset PIB */
0052 
0053 #define FSI_SCOM_CHECK  _IOR('s', 0x00, __u32)
0054 #define FSI_SCOM_READ   _IOWR('s', 0x01, struct scom_access)
0055 #define FSI_SCOM_WRITE  _IOWR('s', 0x02, struct scom_access)
0056 #define FSI_SCOM_RESET  _IOW('s', 0x03, __u32)
0057 
0058 /*
0059  * /dev/sbefifo* ioctl interface
0060  */
0061 
0062 /**
0063  * FSI_SBEFIFO_READ_TIMEOUT sets the read timeout for response from SBE.
0064  *
0065  * The read timeout is specified in seconds.  The minimum value of read
0066  * timeout is 10 seconds (default) and the maximum value of read timeout is
0067  * 120 seconds.  A read timeout of 0 will reset the value to the default of
0068  * (10 seconds).
0069  */
0070 #define FSI_SBEFIFO_READ_TIMEOUT_SECONDS    _IOW('s', 0x00, __u32)
0071 
0072 #endif /* _UAPI_LINUX_FSI_H */