Merge branch 'x86/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip...
[pandora-kernel.git] / include / asm-s390 / chsc.h
1 /*
2  * ioctl interface for /dev/chsc
3  *
4  * Copyright 2008 IBM Corp.
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 <asm/chpid.h>
12 #include <asm/schid.h>
13
14 struct chsc_async_header {
15         __u16 length;
16         __u16 code;
17         __u32 cmd_dependend;
18         __u32 key : 4;
19         __u32 : 28;
20         struct subchannel_id sid;
21 } __attribute__ ((packed));
22
23 struct chsc_async_area {
24         struct chsc_async_header header;
25         __u8 data[PAGE_SIZE - 16 /* size of chsc_async_header */];
26 } __attribute__ ((packed));
27
28
29 struct chsc_response_struct {
30         __u16 length;
31         __u16 code;
32         __u32 parms;
33         __u8 data[PAGE_SIZE - 8];
34 } __attribute__ ((packed));
35
36 struct chsc_chp_cd {
37         struct chp_id chpid;
38         int m;
39         int fmt;
40         struct chsc_response_struct cpcb;
41 };
42
43 struct chsc_cu_cd {
44         __u16 cun;
45         __u8 cssid;
46         int m;
47         int fmt;
48         struct chsc_response_struct cucb;
49 };
50
51 struct chsc_sch_cud {
52         struct subchannel_id schid;
53         int fmt;
54         struct chsc_response_struct scub;
55 };
56
57 struct conf_id {
58         int m;
59         __u8 cssid;
60         __u8 ssid;
61 };
62
63 struct chsc_conf_info {
64         struct conf_id id;
65         int fmt;
66         struct chsc_response_struct scid;
67 };
68
69 struct ccl_parm_chpid {
70         int m;
71         struct chp_id chp;
72 };
73
74 struct ccl_parm_cssids {
75         __u8 f_cssid;
76         __u8 l_cssid;
77 };
78
79 struct chsc_comp_list {
80         struct {
81                 enum {
82                         CCL_CU_ON_CHP = 1,
83                         CCL_CHP_TYPE_CAP = 2,
84                         CCL_CSS_IMG = 4,
85                         CCL_CSS_IMG_CONF_CHAR = 5,
86                         CCL_IOP_CHP = 6,
87                 } ctype;
88                 int fmt;
89                 struct ccl_parm_chpid chpid;
90                 struct ccl_parm_cssids cssids;
91         } req;
92         struct chsc_response_struct sccl;
93 };
94
95 struct chsc_dcal {
96         struct {
97                 enum {
98                         DCAL_CSS_IID_PN = 4,
99                 } atype;
100                 __u32 list_parm[2];
101                 int fmt;
102         } req;
103         struct chsc_response_struct sdcal;
104 };
105
106 struct chsc_cpd_info {
107         struct chp_id chpid;
108         int m;
109         int fmt;
110         int rfmt;
111         int c;
112         struct chsc_response_struct chpdb;
113 };
114
115 #define CHSC_IOCTL_MAGIC 'c'
116
117 #define CHSC_START _IOWR(CHSC_IOCTL_MAGIC, 0x81, struct chsc_async_area)
118 #define CHSC_INFO_CHANNEL_PATH _IOWR(CHSC_IOCTL_MAGIC, 0x82, \
119                                     struct chsc_chp_cd)
120 #define CHSC_INFO_CU _IOWR(CHSC_IOCTL_MAGIC, 0x83, struct chsc_cu_cd)
121 #define CHSC_INFO_SCH_CU _IOWR(CHSC_IOCTL_MAGIC, 0x84, struct chsc_sch_cud)
122 #define CHSC_INFO_CI _IOWR(CHSC_IOCTL_MAGIC, 0x85, struct chsc_conf_info)
123 #define CHSC_INFO_CCL _IOWR(CHSC_IOCTL_MAGIC, 0x86, struct chsc_comp_list)
124 #define CHSC_INFO_CPD _IOWR(CHSC_IOCTL_MAGIC, 0x87, struct chsc_cpd_info)
125 #define CHSC_INFO_DCAL _IOWR(CHSC_IOCTL_MAGIC, 0x88, struct chsc_dcal)
126
127 #endif