/* * ioctl interface for /dev/chsc * * Copyright 2008 IBM Corp. * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> */ #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