1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2a755a45dSJan Glauber #ifndef _ASM_S390_CLP_H 3a755a45dSJan Glauber #define _ASM_S390_CLP_H 4a755a45dSJan Glauber 5a755a45dSJan Glauber /* CLP common request & response block size */ 6add09d61SSebastian Ott #define CLP_BLK_SIZE PAGE_SIZE 7a755a45dSJan Glauber 8*b02002ccSNiklas Schnelle /* Call Logical Processor - Command Code */ 9*b02002ccSNiklas Schnelle #define CLP_SLPC 0x0001 10*b02002ccSNiklas Schnelle 11988b86e6SMartin Schwidefsky #define CLP_LPS_BASE 0 12988b86e6SMartin Schwidefsky #define CLP_LPS_PCI 2 13988b86e6SMartin Schwidefsky 14a755a45dSJan Glauber struct clp_req_hdr { 15a755a45dSJan Glauber u16 len; 16a755a45dSJan Glauber u16 cmd; 17988b86e6SMartin Schwidefsky u32 fmt : 4; 18988b86e6SMartin Schwidefsky u32 reserved1 : 28; 19988b86e6SMartin Schwidefsky u64 reserved2; 20a755a45dSJan Glauber } __packed; 21a755a45dSJan Glauber 22a755a45dSJan Glauber struct clp_rsp_hdr { 23a755a45dSJan Glauber u16 len; 24a755a45dSJan Glauber u16 rsp; 25988b86e6SMartin Schwidefsky u32 fmt : 4; 26988b86e6SMartin Schwidefsky u32 reserved1 : 28; 27988b86e6SMartin Schwidefsky u64 reserved2; 28a755a45dSJan Glauber } __packed; 29a755a45dSJan Glauber 30a755a45dSJan Glauber /* CLP Response Codes */ 31a755a45dSJan Glauber #define CLP_RC_OK 0x0010 /* Command request successfully */ 32a755a45dSJan Glauber #define CLP_RC_CMD 0x0020 /* Command code not recognized */ 33a755a45dSJan Glauber #define CLP_RC_PERM 0x0030 /* Command not authorized */ 34a755a45dSJan Glauber #define CLP_RC_FMT 0x0040 /* Invalid command request format */ 35a755a45dSJan Glauber #define CLP_RC_LEN 0x0050 /* Invalid command request length */ 36a755a45dSJan Glauber #define CLP_RC_8K 0x0060 /* Command requires 8K LPCB */ 37a755a45dSJan Glauber #define CLP_RC_RESNOT0 0x0070 /* Reserved field not zero */ 38a755a45dSJan Glauber #define CLP_RC_NODATA 0x0080 /* No data available */ 39a755a45dSJan Glauber #define CLP_RC_FC_UNKNOWN 0x0100 /* Function code not recognized */ 40a755a45dSJan Glauber 41988b86e6SMartin Schwidefsky /* Store logical-processor characteristics request */ 42988b86e6SMartin Schwidefsky struct clp_req_slpc { 43988b86e6SMartin Schwidefsky struct clp_req_hdr hdr; 44988b86e6SMartin Schwidefsky } __packed; 45988b86e6SMartin Schwidefsky 46988b86e6SMartin Schwidefsky struct clp_rsp_slpc { 47988b86e6SMartin Schwidefsky struct clp_rsp_hdr hdr; 48988b86e6SMartin Schwidefsky u32 reserved2[4]; 49988b86e6SMartin Schwidefsky u32 lpif[8]; 50988b86e6SMartin Schwidefsky u32 reserved3[8]; 51988b86e6SMartin Schwidefsky u32 lpic[8]; 52988b86e6SMartin Schwidefsky } __packed; 53988b86e6SMartin Schwidefsky 54988b86e6SMartin Schwidefsky struct clp_req_rsp_slpc { 55988b86e6SMartin Schwidefsky struct clp_req_slpc request; 56988b86e6SMartin Schwidefsky struct clp_rsp_slpc response; 57988b86e6SMartin Schwidefsky } __packed; 58988b86e6SMartin Schwidefsky 59a755a45dSJan Glauber #endif 60