1/* 2 * ioctl interface for /dev/chsc 3 * 4 * Copyright IBM Corp. 2008, 2012 5 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 6 */ 7 8#ifndef _ASM_CHSC_H 9#define _ASM_CHSC_H 10 11#include <linux/types.h> 12#include <linux/ioctl.h> 13#include <asm/chpid.h> 14#include <asm/schid.h> 15 16#define CHSC_SIZE 0x1000 17 18struct chsc_async_header { 19 __u16 length; 20 __u16 code; 21 __u32 cmd_dependend; 22 __u32 key : 4; 23 __u32 : 28; 24 struct subchannel_id sid; 25} __attribute__ ((packed)); 26 27struct chsc_async_area { 28 struct chsc_async_header header; 29 __u8 data[CHSC_SIZE - sizeof(struct chsc_async_header)]; 30} __attribute__ ((packed)); 31 32struct chsc_header { 33 __u16 length; 34 __u16 code; 35} __attribute__ ((packed)); 36 37struct chsc_sync_area { 38 struct chsc_header header; 39 __u8 data[CHSC_SIZE - sizeof(struct chsc_header)]; 40} __attribute__ ((packed)); 41 42struct chsc_response_struct { 43 __u16 length; 44 __u16 code; 45 __u32 parms; 46 __u8 data[CHSC_SIZE - 2 * sizeof(__u16) - sizeof(__u32)]; 47} __attribute__ ((packed)); 48 49struct chsc_chp_cd { 50 struct chp_id chpid; 51 int m; 52 int fmt; 53 struct chsc_response_struct cpcb; 54}; 55 56struct chsc_cu_cd { 57 __u16 cun; 58 __u8 cssid; 59 int m; 60 int fmt; 61 struct chsc_response_struct cucb; 62}; 63 64struct chsc_sch_cud { 65 struct subchannel_id schid; 66 int fmt; 67 struct chsc_response_struct scub; 68}; 69 70struct conf_id { 71 int m; 72 __u8 cssid; 73 __u8 ssid; 74}; 75 76struct chsc_conf_info { 77 struct conf_id id; 78 int fmt; 79 struct chsc_response_struct scid; 80}; 81 82struct ccl_parm_chpid { 83 int m; 84 struct chp_id chp; 85}; 86 87struct ccl_parm_cssids { 88 __u8 f_cssid; 89 __u8 l_cssid; 90}; 91 92struct chsc_comp_list { 93 struct { 94 enum { 95 CCL_CU_ON_CHP = 1, 96 CCL_CHP_TYPE_CAP = 2, 97 CCL_CSS_IMG = 4, 98 CCL_CSS_IMG_CONF_CHAR = 5, 99 CCL_IOP_CHP = 6, 100 } ctype; 101 int fmt; 102 struct ccl_parm_chpid chpid; 103 struct ccl_parm_cssids cssids; 104 } req; 105 struct chsc_response_struct sccl; 106}; 107 108struct chsc_dcal { 109 struct { 110 enum { 111 DCAL_CSS_IID_PN = 4, 112 } atype; 113 __u32 list_parm[2]; 114 int fmt; 115 } req; 116 struct chsc_response_struct sdcal; 117}; 118 119struct chsc_cpd_info { 120 struct chp_id chpid; 121 int m; 122 int fmt; 123 int rfmt; 124 int c; 125 struct chsc_response_struct chpdb; 126}; 127 128#define CHSC_IOCTL_MAGIC 'c' 129 130#define CHSC_START _IOWR(CHSC_IOCTL_MAGIC, 0x81, struct chsc_async_area) 131#define CHSC_INFO_CHANNEL_PATH _IOWR(CHSC_IOCTL_MAGIC, 0x82, \ 132 struct chsc_chp_cd) 133#define CHSC_INFO_CU _IOWR(CHSC_IOCTL_MAGIC, 0x83, struct chsc_cu_cd) 134#define CHSC_INFO_SCH_CU _IOWR(CHSC_IOCTL_MAGIC, 0x84, struct chsc_sch_cud) 135#define CHSC_INFO_CI _IOWR(CHSC_IOCTL_MAGIC, 0x85, struct chsc_conf_info) 136#define CHSC_INFO_CCL _IOWR(CHSC_IOCTL_MAGIC, 0x86, struct chsc_comp_list) 137#define CHSC_INFO_CPD _IOWR(CHSC_IOCTL_MAGIC, 0x87, struct chsc_cpd_info) 138#define CHSC_INFO_DCAL _IOWR(CHSC_IOCTL_MAGIC, 0x88, struct chsc_dcal) 139#define CHSC_START_SYNC _IOWR(CHSC_IOCTL_MAGIC, 0x89, struct chsc_sync_area) 140#define CHSC_ON_CLOSE_SET _IOWR(CHSC_IOCTL_MAGIC, 0x8a, struct chsc_async_area) 141#define CHSC_ON_CLOSE_REMOVE _IO(CHSC_IOCTL_MAGIC, 0x8b) 142 143#endif 144