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