| /* | 
 |  * ioctl interface for /dev/chsc | 
 |  * | 
 |  * Copyright 2008 IBM Corp. | 
 |  * Author(s): Cornelia Huck <[email protected]> | 
 |  */ | 
 |  | 
 | #ifndef _ASM_CHSC_H | 
 | #define _ASM_CHSC_H | 
 |  | 
 | #include <linux/types.h> | 
 | #include <asm/chpid.h> | 
 | #include <asm/schid.h> | 
 |  | 
 | struct chsc_async_header { | 
 | 	__u16 length; | 
 | 	__u16 code; | 
 | 	__u32 cmd_dependend; | 
 | 	__u32 key : 4; | 
 | 	__u32 : 28; | 
 | 	struct subchannel_id sid; | 
 | } __attribute__ ((packed)); | 
 |  | 
 | struct chsc_async_area { | 
 | 	struct chsc_async_header header; | 
 | 	__u8 data[PAGE_SIZE - 16 /* size of chsc_async_header */]; | 
 | } __attribute__ ((packed)); | 
 |  | 
 |  | 
 | struct chsc_response_struct { | 
 | 	__u16 length; | 
 | 	__u16 code; | 
 | 	__u32 parms; | 
 | 	__u8 data[PAGE_SIZE - 8]; | 
 | } __attribute__ ((packed)); | 
 |  | 
 | struct chsc_chp_cd { | 
 | 	struct chp_id chpid; | 
 | 	int m; | 
 | 	int fmt; | 
 | 	struct chsc_response_struct cpcb; | 
 | }; | 
 |  | 
 | struct chsc_cu_cd { | 
 | 	__u16 cun; | 
 | 	__u8 cssid; | 
 | 	int m; | 
 | 	int fmt; | 
 | 	struct chsc_response_struct cucb; | 
 | }; | 
 |  | 
 | struct chsc_sch_cud { | 
 | 	struct subchannel_id schid; | 
 | 	int fmt; | 
 | 	struct chsc_response_struct scub; | 
 | }; | 
 |  | 
 | struct conf_id { | 
 | 	int m; | 
 | 	__u8 cssid; | 
 | 	__u8 ssid; | 
 | }; | 
 |  | 
 | struct chsc_conf_info { | 
 | 	struct conf_id id; | 
 | 	int fmt; | 
 | 	struct chsc_response_struct scid; | 
 | }; | 
 |  | 
 | struct ccl_parm_chpid { | 
 | 	int m; | 
 | 	struct chp_id chp; | 
 | }; | 
 |  | 
 | struct ccl_parm_cssids { | 
 | 	__u8 f_cssid; | 
 | 	__u8 l_cssid; | 
 | }; | 
 |  | 
 | struct chsc_comp_list { | 
 | 	struct { | 
 | 		enum { | 
 | 			CCL_CU_ON_CHP = 1, | 
 | 			CCL_CHP_TYPE_CAP = 2, | 
 | 			CCL_CSS_IMG = 4, | 
 | 			CCL_CSS_IMG_CONF_CHAR = 5, | 
 | 			CCL_IOP_CHP = 6, | 
 | 		} ctype; | 
 | 		int fmt; | 
 | 		struct ccl_parm_chpid chpid; | 
 | 		struct ccl_parm_cssids cssids; | 
 | 	} req; | 
 | 	struct chsc_response_struct sccl; | 
 | }; | 
 |  | 
 | struct chsc_dcal { | 
 | 	struct { | 
 | 		enum { | 
 | 			DCAL_CSS_IID_PN = 4, | 
 | 		} atype; | 
 | 		__u32 list_parm[2]; | 
 | 		int fmt; | 
 | 	} req; | 
 | 	struct chsc_response_struct sdcal; | 
 | }; | 
 |  | 
 | struct chsc_cpd_info { | 
 | 	struct chp_id chpid; | 
 | 	int m; | 
 | 	int fmt; | 
 | 	int rfmt; | 
 | 	int c; | 
 | 	struct chsc_response_struct chpdb; | 
 | }; | 
 |  | 
 | #define CHSC_IOCTL_MAGIC 'c' | 
 |  | 
 | #define CHSC_START _IOWR(CHSC_IOCTL_MAGIC, 0x81, struct chsc_async_area) | 
 | #define CHSC_INFO_CHANNEL_PATH _IOWR(CHSC_IOCTL_MAGIC, 0x82, \ | 
 | 				    struct chsc_chp_cd) | 
 | #define CHSC_INFO_CU _IOWR(CHSC_IOCTL_MAGIC, 0x83, struct chsc_cu_cd) | 
 | #define CHSC_INFO_SCH_CU _IOWR(CHSC_IOCTL_MAGIC, 0x84, struct chsc_sch_cud) | 
 | #define CHSC_INFO_CI _IOWR(CHSC_IOCTL_MAGIC, 0x85, struct chsc_conf_info) | 
 | #define CHSC_INFO_CCL _IOWR(CHSC_IOCTL_MAGIC, 0x86, struct chsc_comp_list) | 
 | #define CHSC_INFO_CPD _IOWR(CHSC_IOCTL_MAGIC, 0x87, struct chsc_cpd_info) | 
 | #define CHSC_INFO_DCAL _IOWR(CHSC_IOCTL_MAGIC, 0x88, struct chsc_dcal) | 
 |  | 
 | #ifdef __KERNEL__ | 
 |  | 
 | struct css_general_char { | 
 | 	u64 : 12; | 
 | 	u32 dynio : 1;	 /* bit 12 */ | 
 | 	u32 : 28; | 
 | 	u32 aif : 1;	 /* bit 41 */ | 
 | 	u32 : 3; | 
 | 	u32 mcss : 1;	 /* bit 45 */ | 
 | 	u32 fcs : 1;	 /* bit 46 */ | 
 | 	u32 : 1; | 
 | 	u32 ext_mb : 1;  /* bit 48 */ | 
 | 	u32 : 7; | 
 | 	u32 aif_tdd : 1; /* bit 56 */ | 
 | 	u32 : 1; | 
 | 	u32 qebsm : 1;	 /* bit 58 */ | 
 | 	u32 : 8; | 
 | 	u32 aif_osa : 1; /* bit 67 */ | 
 | 	u32 : 14; | 
 | 	u32 cib : 1;	 /* bit 82 */ | 
 | 	u32 : 5; | 
 | 	u32 fcx : 1;	 /* bit 88 */ | 
 | 	u32 : 7; | 
 | }__attribute__((packed)); | 
 |  | 
 | extern struct css_general_char css_general_characteristics; | 
 |  | 
 | #endif /* __KERNEL__ */ | 
 | #endif |