xref: /linux/arch/s390/include/uapi/asm/chsc.h (revision c0c914eca7f251c70facc37dfebeaf176601918d)
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 
18 struct 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 
27 struct chsc_async_area {
28 	struct chsc_async_header header;
29 	__u8 data[CHSC_SIZE - sizeof(struct chsc_async_header)];
30 } __attribute__ ((packed));
31 
32 struct chsc_header {
33 	__u16 length;
34 	__u16 code;
35 } __attribute__ ((packed));
36 
37 struct chsc_sync_area {
38 	struct chsc_header header;
39 	__u8 data[CHSC_SIZE - sizeof(struct chsc_header)];
40 } __attribute__ ((packed));
41 
42 struct 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 
49 struct chsc_chp_cd {
50 	struct chp_id chpid;
51 	int m;
52 	int fmt;
53 	struct chsc_response_struct cpcb;
54 };
55 
56 struct chsc_cu_cd {
57 	__u16 cun;
58 	__u8 cssid;
59 	int m;
60 	int fmt;
61 	struct chsc_response_struct cucb;
62 };
63 
64 struct chsc_sch_cud {
65 	struct subchannel_id schid;
66 	int fmt;
67 	struct chsc_response_struct scub;
68 };
69 
70 struct conf_id {
71 	int m;
72 	__u8 cssid;
73 	__u8 ssid;
74 };
75 
76 struct chsc_conf_info {
77 	struct conf_id id;
78 	int fmt;
79 	struct chsc_response_struct scid;
80 };
81 
82 struct ccl_parm_chpid {
83 	int m;
84 	struct chp_id chp;
85 };
86 
87 struct ccl_parm_cssids {
88 	__u8 f_cssid;
89 	__u8 l_cssid;
90 };
91 
92 struct 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 
108 struct 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 
119 struct 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