^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _ASM_S390_CLP_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _ASM_S390_CLP_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) /* CLP common request & response block size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define CLP_BLK_SIZE PAGE_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) /* Call Logical Processor - Command Code */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define CLP_SLPC 0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define CLP_LPS_BASE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define CLP_LPS_PCI 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) struct clp_req_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) u16 len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) u16 cmd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) u32 fmt : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) u32 reserved1 : 28;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) u64 reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) struct clp_rsp_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) u16 len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) u16 rsp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) u32 fmt : 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) u32 reserved1 : 28;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) u64 reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) /* CLP Response Codes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define CLP_RC_OK 0x0010 /* Command request successfully */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define CLP_RC_CMD 0x0020 /* Command code not recognized */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define CLP_RC_PERM 0x0030 /* Command not authorized */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define CLP_RC_FMT 0x0040 /* Invalid command request format */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define CLP_RC_LEN 0x0050 /* Invalid command request length */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define CLP_RC_8K 0x0060 /* Command requires 8K LPCB */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define CLP_RC_RESNOT0 0x0070 /* Reserved field not zero */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define CLP_RC_NODATA 0x0080 /* No data available */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define CLP_RC_FC_UNKNOWN 0x0100 /* Function code not recognized */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) /* Store logical-processor characteristics request */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) struct clp_req_slpc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) struct clp_req_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) struct clp_rsp_slpc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) struct clp_rsp_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) u32 reserved2[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) u32 lpif[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) u32 reserved3[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) u32 lpic[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) struct clp_req_rsp_slpc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) struct clp_req_slpc request;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) struct clp_rsp_slpc response;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #endif