1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Data definitions for channel report processing 4*4882a593Smuzhiyun * Copyright IBM Corp. 2000, 2009 5*4882a593Smuzhiyun * Author(s): Ingo Adlung <adlung@de.ibm.com>, 6*4882a593Smuzhiyun * Martin Schwidefsky <schwidefsky@de.ibm.com>, 7*4882a593Smuzhiyun * Cornelia Huck <cornelia.huck@de.ibm.com>, 8*4882a593Smuzhiyun * Heiko Carstens <heiko.carstens@de.ibm.com>, 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef _ASM_S390_CRW_H 12*4882a593Smuzhiyun #define _ASM_S390_CRW_H 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #include <linux/types.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* 17*4882a593Smuzhiyun * Channel Report Word 18*4882a593Smuzhiyun */ 19*4882a593Smuzhiyun struct crw { 20*4882a593Smuzhiyun __u32 res1 : 1; /* reserved zero */ 21*4882a593Smuzhiyun __u32 slct : 1; /* solicited */ 22*4882a593Smuzhiyun __u32 oflw : 1; /* overflow */ 23*4882a593Smuzhiyun __u32 chn : 1; /* chained */ 24*4882a593Smuzhiyun __u32 rsc : 4; /* reporting source code */ 25*4882a593Smuzhiyun __u32 anc : 1; /* ancillary report */ 26*4882a593Smuzhiyun __u32 res2 : 1; /* reserved zero */ 27*4882a593Smuzhiyun __u32 erc : 6; /* error-recovery code */ 28*4882a593Smuzhiyun __u32 rsid : 16; /* reporting-source ID */ 29*4882a593Smuzhiyun } __attribute__ ((packed)); 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun typedef void (*crw_handler_t)(struct crw *, struct crw *, int); 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun extern int crw_register_handler(int rsc, crw_handler_t handler); 34*4882a593Smuzhiyun extern void crw_unregister_handler(int rsc); 35*4882a593Smuzhiyun extern void crw_handle_channel_report(void); 36*4882a593Smuzhiyun void crw_wait_for_channel_report(void); 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #define NR_RSCS 16 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #define CRW_RSC_MONITOR 0x2 /* monitoring facility */ 41*4882a593Smuzhiyun #define CRW_RSC_SCH 0x3 /* subchannel */ 42*4882a593Smuzhiyun #define CRW_RSC_CPATH 0x4 /* channel path */ 43*4882a593Smuzhiyun #define CRW_RSC_CONFIG 0x9 /* configuration-alert facility */ 44*4882a593Smuzhiyun #define CRW_RSC_CSS 0xB /* channel subsystem */ 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun #define CRW_ERC_EVENT 0x00 /* event information pending */ 47*4882a593Smuzhiyun #define CRW_ERC_AVAIL 0x01 /* available */ 48*4882a593Smuzhiyun #define CRW_ERC_INIT 0x02 /* initialized */ 49*4882a593Smuzhiyun #define CRW_ERC_TERROR 0x03 /* temporary error */ 50*4882a593Smuzhiyun #define CRW_ERC_IPARM 0x04 /* installed parm initialized */ 51*4882a593Smuzhiyun #define CRW_ERC_TERM 0x05 /* terminal */ 52*4882a593Smuzhiyun #define CRW_ERC_PERRN 0x06 /* perm. error, fac. not init */ 53*4882a593Smuzhiyun #define CRW_ERC_PERRI 0x07 /* perm. error, facility init */ 54*4882a593Smuzhiyun #define CRW_ERC_PMOD 0x08 /* installed parameters modified */ 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun #endif /* _ASM_S390_CRW_H */ 57