diff options
Diffstat (limited to 'drivers/s390/cio/chsc.h')
-rw-r--r-- | drivers/s390/cio/chsc.h | 46 |
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 | ||
38 | struct 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 | |||
38 | struct channel_path; | 54 | struct channel_path; |
39 | 55 | ||
40 | struct css_chsc_char { | 56 | struct 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 | |||
77 | struct 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 | |||
60 | extern int chsc_get_ssd_info(struct subchannel_id schid, | 95 | extern int chsc_get_ssd_info(struct subchannel_id schid, |
61 | struct chsc_ssd_info *ssd); | 96 | struct chsc_ssd_info *ssd); |
62 | extern int chsc_determine_css_characteristics(void); | 97 | extern int chsc_determine_css_characteristics(void); |
63 | extern int chsc_alloc_sei_area(void); | 98 | extern int chsc_init(void); |
64 | extern void chsc_free_sei_area(void); | 99 | extern void chsc_init_cleanup(void); |
65 | 100 | ||
66 | extern int chsc_enable_facility(int); | 101 | extern int chsc_enable_facility(int); |
67 | struct channel_subsystem; | 102 | struct channel_subsystem; |
68 | extern int chsc_secm(struct channel_subsystem *, int); | 103 | extern int chsc_secm(struct channel_subsystem *, int); |
69 | int __chsc_do_secm(struct channel_subsystem *css, int enable, void *page); | 104 | int __chsc_do_secm(struct channel_subsystem *css, int enable); |
70 | 105 | ||
71 | int chsc_chp_vary(struct chp_id chpid, int on); | 106 | int chsc_chp_vary(struct chp_id chpid, int on); |
72 | int chsc_determine_channel_path_desc(struct chp_id chpid, int fmt, int rfmt, | 107 | int 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); | ||
75 | int chsc_determine_base_channel_path_desc(struct chp_id chpid, | 109 | int chsc_determine_base_channel_path_desc(struct chp_id chpid, |
76 | struct channel_path_desc *desc); | 110 | struct channel_path_desc *desc); |
111 | int chsc_determine_fmt1_channel_path_desc(struct chp_id chpid, | ||
112 | struct channel_path_desc_fmt1 *desc); | ||
77 | void chsc_chp_online(struct chp_id chpid); | 113 | void chsc_chp_online(struct chp_id chpid); |
78 | void chsc_chp_offline(struct chp_id chpid); | 114 | void chsc_chp_offline(struct chp_id chpid); |
79 | int chsc_get_channel_measurement_chars(struct channel_path *chp); | 115 | int chsc_get_channel_measurement_chars(struct channel_path *chp); |