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