aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/chsc.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/cio/chsc.h')
-rw-r--r--drivers/s390/cio/chsc.h46
1 files changed, 41 insertions, 5 deletions
diff --git a/drivers/s390/cio/chsc.h b/drivers/s390/cio/chsc.h
index 5453013f094b..3f15b2aaeaea 100644
--- a/drivers/s390/cio/chsc.h
+++ b/drivers/s390/cio/chsc.h
@@ -35,6 +35,22 @@ struct channel_path_desc {
35 u8 chpp; 35 u8 chpp;
36} __attribute__ ((packed)); 36} __attribute__ ((packed));
37 37
38struct channel_path_desc_fmt1 {
39 u8 flags;
40 u8 lsn;
41 u8 desc;
42 u8 chpid;
43 u32:24;
44 u8 chpp;
45 u32 unused[3];
46 u16 mdc;
47 u16:13;
48 u8 r:1;
49 u8 s:1;
50 u8 f:1;
51 u32 zeros[2];
52} __attribute__ ((packed));
53
38struct channel_path; 54struct channel_path;
39 55
40struct css_chsc_char { 56struct css_chsc_char {
@@ -57,23 +73,43 @@ struct chsc_ssd_info {
57 struct chp_id chpid[8]; 73 struct chp_id chpid[8];
58 u16 fla[8]; 74 u16 fla[8];
59}; 75};
76
77struct chsc_scpd {
78 struct chsc_header request;
79 u32:2;
80 u32 m:1;
81 u32 c:1;
82 u32 fmt:4;
83 u32 cssid:8;
84 u32:4;
85 u32 rfmt:4;
86 u32 first_chpid:8;
87 u32:24;
88 u32 last_chpid:8;
89 u32 zeroes1;
90 struct chsc_header response;
91 u8 data[PAGE_SIZE - 20];
92} __attribute__ ((packed));
93
94
60extern int chsc_get_ssd_info(struct subchannel_id schid, 95extern int chsc_get_ssd_info(struct subchannel_id schid,
61 struct chsc_ssd_info *ssd); 96 struct chsc_ssd_info *ssd);
62extern int chsc_determine_css_characteristics(void); 97extern int chsc_determine_css_characteristics(void);
63extern int chsc_alloc_sei_area(void); 98extern int chsc_init(void);
64extern void chsc_free_sei_area(void); 99extern void chsc_init_cleanup(void);
65 100
66extern int chsc_enable_facility(int); 101extern int chsc_enable_facility(int);
67struct channel_subsystem; 102struct channel_subsystem;
68extern int chsc_secm(struct channel_subsystem *, int); 103extern int chsc_secm(struct channel_subsystem *, int);
69int __chsc_do_secm(struct channel_subsystem *css, int enable, void *page); 104int __chsc_do_secm(struct channel_subsystem *css, int enable);
70 105
71int chsc_chp_vary(struct chp_id chpid, int on); 106int chsc_chp_vary(struct chp_id chpid, int on);
72int chsc_determine_channel_path_desc(struct chp_id chpid, int fmt, int rfmt, 107int chsc_determine_channel_path_desc(struct chp_id chpid, int fmt, int rfmt,
73 int c, int m, 108 int c, int m, void *page);
74 struct chsc_response_struct *resp);
75int chsc_determine_base_channel_path_desc(struct chp_id chpid, 109int chsc_determine_base_channel_path_desc(struct chp_id chpid,
76 struct channel_path_desc *desc); 110 struct channel_path_desc *desc);
111int chsc_determine_fmt1_channel_path_desc(struct chp_id chpid,
112 struct channel_path_desc_fmt1 *desc);
77void chsc_chp_online(struct chp_id chpid); 113void chsc_chp_online(struct chp_id chpid);
78void chsc_chp_offline(struct chp_id chpid); 114void chsc_chp_offline(struct chp_id chpid);
79int chsc_get_channel_measurement_chars(struct channel_path *chp); 115int chsc_get_channel_measurement_chars(struct channel_path *chp);