diff options
-rw-r--r-- | arch/s390/include/asm/chsc.h | 28 | ||||
-rw-r--r-- | arch/s390/include/asm/cio.h | 223 | ||||
-rw-r--r-- | arch/s390/include/asm/scsw.h (renamed from drivers/s390/cio/scsw.c) | 345 | ||||
-rw-r--r-- | drivers/s390/cio/Makefile | 2 | ||||
-rw-r--r-- | drivers/s390/cio/chsc.h | 24 |
5 files changed, 259 insertions, 363 deletions
diff --git a/arch/s390/include/asm/chsc.h b/arch/s390/include/asm/chsc.h index 807997f7414b..4943654ed7fd 100644 --- a/arch/s390/include/asm/chsc.h +++ b/arch/s390/include/asm/chsc.h | |||
@@ -125,4 +125,32 @@ struct chsc_cpd_info { | |||
125 | #define CHSC_INFO_CPD _IOWR(CHSC_IOCTL_MAGIC, 0x87, struct chsc_cpd_info) | 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) | 126 | #define CHSC_INFO_DCAL _IOWR(CHSC_IOCTL_MAGIC, 0x88, struct chsc_dcal) |
127 | 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__ */ | ||
128 | #endif | 156 | #endif |
diff --git a/arch/s390/include/asm/cio.h b/arch/s390/include/asm/cio.h index 619bf94b11f1..e85679af54dd 100644 --- a/arch/s390/include/asm/cio.h +++ b/arch/s390/include/asm/cio.h | |||
@@ -15,228 +15,7 @@ | |||
15 | #define LPM_ANYPATH 0xff | 15 | #define LPM_ANYPATH 0xff |
16 | #define __MAX_CSSID 0 | 16 | #define __MAX_CSSID 0 |
17 | 17 | ||
18 | /** | 18 | #include <asm/scsw.h> |
19 | * struct cmd_scsw - command-mode subchannel status word | ||
20 | * @key: subchannel key | ||
21 | * @sctl: suspend control | ||
22 | * @eswf: esw format | ||
23 | * @cc: deferred condition code | ||
24 | * @fmt: format | ||
25 | * @pfch: prefetch | ||
26 | * @isic: initial-status interruption control | ||
27 | * @alcc: address-limit checking control | ||
28 | * @ssi: suppress-suspended interruption | ||
29 | * @zcc: zero condition code | ||
30 | * @ectl: extended control | ||
31 | * @pno: path not operational | ||
32 | * @res: reserved | ||
33 | * @fctl: function control | ||
34 | * @actl: activity control | ||
35 | * @stctl: status control | ||
36 | * @cpa: channel program address | ||
37 | * @dstat: device status | ||
38 | * @cstat: subchannel status | ||
39 | * @count: residual count | ||
40 | */ | ||
41 | struct cmd_scsw { | ||
42 | __u32 key : 4; | ||
43 | __u32 sctl : 1; | ||
44 | __u32 eswf : 1; | ||
45 | __u32 cc : 2; | ||
46 | __u32 fmt : 1; | ||
47 | __u32 pfch : 1; | ||
48 | __u32 isic : 1; | ||
49 | __u32 alcc : 1; | ||
50 | __u32 ssi : 1; | ||
51 | __u32 zcc : 1; | ||
52 | __u32 ectl : 1; | ||
53 | __u32 pno : 1; | ||
54 | __u32 res : 1; | ||
55 | __u32 fctl : 3; | ||
56 | __u32 actl : 7; | ||
57 | __u32 stctl : 5; | ||
58 | __u32 cpa; | ||
59 | __u32 dstat : 8; | ||
60 | __u32 cstat : 8; | ||
61 | __u32 count : 16; | ||
62 | } __attribute__ ((packed)); | ||
63 | |||
64 | /** | ||
65 | * struct tm_scsw - transport-mode subchannel status word | ||
66 | * @key: subchannel key | ||
67 | * @eswf: esw format | ||
68 | * @cc: deferred condition code | ||
69 | * @fmt: format | ||
70 | * @x: IRB-format control | ||
71 | * @q: interrogate-complete | ||
72 | * @ectl: extended control | ||
73 | * @pno: path not operational | ||
74 | * @fctl: function control | ||
75 | * @actl: activity control | ||
76 | * @stctl: status control | ||
77 | * @tcw: TCW address | ||
78 | * @dstat: device status | ||
79 | * @cstat: subchannel status | ||
80 | * @fcxs: FCX status | ||
81 | * @schxs: subchannel-extended status | ||
82 | */ | ||
83 | struct tm_scsw { | ||
84 | u32 key:4; | ||
85 | u32 :1; | ||
86 | u32 eswf:1; | ||
87 | u32 cc:2; | ||
88 | u32 fmt:3; | ||
89 | u32 x:1; | ||
90 | u32 q:1; | ||
91 | u32 :1; | ||
92 | u32 ectl:1; | ||
93 | u32 pno:1; | ||
94 | u32 :1; | ||
95 | u32 fctl:3; | ||
96 | u32 actl:7; | ||
97 | u32 stctl:5; | ||
98 | u32 tcw; | ||
99 | u32 dstat:8; | ||
100 | u32 cstat:8; | ||
101 | u32 fcxs:8; | ||
102 | u32 schxs:8; | ||
103 | } __attribute__ ((packed)); | ||
104 | |||
105 | /** | ||
106 | * union scsw - subchannel status word | ||
107 | * @cmd: command-mode SCSW | ||
108 | * @tm: transport-mode SCSW | ||
109 | */ | ||
110 | union scsw { | ||
111 | struct cmd_scsw cmd; | ||
112 | struct tm_scsw tm; | ||
113 | } __attribute__ ((packed)); | ||
114 | |||
115 | int scsw_is_tm(union scsw *scsw); | ||
116 | u32 scsw_key(union scsw *scsw); | ||
117 | u32 scsw_eswf(union scsw *scsw); | ||
118 | u32 scsw_cc(union scsw *scsw); | ||
119 | u32 scsw_ectl(union scsw *scsw); | ||
120 | u32 scsw_pno(union scsw *scsw); | ||
121 | u32 scsw_fctl(union scsw *scsw); | ||
122 | u32 scsw_actl(union scsw *scsw); | ||
123 | u32 scsw_stctl(union scsw *scsw); | ||
124 | u32 scsw_dstat(union scsw *scsw); | ||
125 | u32 scsw_cstat(union scsw *scsw); | ||
126 | int scsw_is_solicited(union scsw *scsw); | ||
127 | int scsw_is_valid_key(union scsw *scsw); | ||
128 | int scsw_is_valid_eswf(union scsw *scsw); | ||
129 | int scsw_is_valid_cc(union scsw *scsw); | ||
130 | int scsw_is_valid_ectl(union scsw *scsw); | ||
131 | int scsw_is_valid_pno(union scsw *scsw); | ||
132 | int scsw_is_valid_fctl(union scsw *scsw); | ||
133 | int scsw_is_valid_actl(union scsw *scsw); | ||
134 | int scsw_is_valid_stctl(union scsw *scsw); | ||
135 | int scsw_is_valid_dstat(union scsw *scsw); | ||
136 | int scsw_is_valid_cstat(union scsw *scsw); | ||
137 | int scsw_cmd_is_valid_key(union scsw *scsw); | ||
138 | int scsw_cmd_is_valid_sctl(union scsw *scsw); | ||
139 | int scsw_cmd_is_valid_eswf(union scsw *scsw); | ||
140 | int scsw_cmd_is_valid_cc(union scsw *scsw); | ||
141 | int scsw_cmd_is_valid_fmt(union scsw *scsw); | ||
142 | int scsw_cmd_is_valid_pfch(union scsw *scsw); | ||
143 | int scsw_cmd_is_valid_isic(union scsw *scsw); | ||
144 | int scsw_cmd_is_valid_alcc(union scsw *scsw); | ||
145 | int scsw_cmd_is_valid_ssi(union scsw *scsw); | ||
146 | int scsw_cmd_is_valid_zcc(union scsw *scsw); | ||
147 | int scsw_cmd_is_valid_ectl(union scsw *scsw); | ||
148 | int scsw_cmd_is_valid_pno(union scsw *scsw); | ||
149 | int scsw_cmd_is_valid_fctl(union scsw *scsw); | ||
150 | int scsw_cmd_is_valid_actl(union scsw *scsw); | ||
151 | int scsw_cmd_is_valid_stctl(union scsw *scsw); | ||
152 | int scsw_cmd_is_valid_dstat(union scsw *scsw); | ||
153 | int scsw_cmd_is_valid_cstat(union scsw *scsw); | ||
154 | int scsw_cmd_is_solicited(union scsw *scsw); | ||
155 | int scsw_tm_is_valid_key(union scsw *scsw); | ||
156 | int scsw_tm_is_valid_eswf(union scsw *scsw); | ||
157 | int scsw_tm_is_valid_cc(union scsw *scsw); | ||
158 | int scsw_tm_is_valid_fmt(union scsw *scsw); | ||
159 | int scsw_tm_is_valid_x(union scsw *scsw); | ||
160 | int scsw_tm_is_valid_q(union scsw *scsw); | ||
161 | int scsw_tm_is_valid_ectl(union scsw *scsw); | ||
162 | int scsw_tm_is_valid_pno(union scsw *scsw); | ||
163 | int scsw_tm_is_valid_fctl(union scsw *scsw); | ||
164 | int scsw_tm_is_valid_actl(union scsw *scsw); | ||
165 | int scsw_tm_is_valid_stctl(union scsw *scsw); | ||
166 | int scsw_tm_is_valid_dstat(union scsw *scsw); | ||
167 | int scsw_tm_is_valid_cstat(union scsw *scsw); | ||
168 | int scsw_tm_is_valid_fcxs(union scsw *scsw); | ||
169 | int scsw_tm_is_valid_schxs(union scsw *scsw); | ||
170 | int scsw_tm_is_solicited(union scsw *scsw); | ||
171 | |||
172 | #define SCSW_FCTL_CLEAR_FUNC 0x1 | ||
173 | #define SCSW_FCTL_HALT_FUNC 0x2 | ||
174 | #define SCSW_FCTL_START_FUNC 0x4 | ||
175 | |||
176 | #define SCSW_ACTL_SUSPENDED 0x1 | ||
177 | #define SCSW_ACTL_DEVACT 0x2 | ||
178 | #define SCSW_ACTL_SCHACT 0x4 | ||
179 | #define SCSW_ACTL_CLEAR_PEND 0x8 | ||
180 | #define SCSW_ACTL_HALT_PEND 0x10 | ||
181 | #define SCSW_ACTL_START_PEND 0x20 | ||
182 | #define SCSW_ACTL_RESUME_PEND 0x40 | ||
183 | |||
184 | #define SCSW_STCTL_STATUS_PEND 0x1 | ||
185 | #define SCSW_STCTL_SEC_STATUS 0x2 | ||
186 | #define SCSW_STCTL_PRIM_STATUS 0x4 | ||
187 | #define SCSW_STCTL_INTER_STATUS 0x8 | ||
188 | #define SCSW_STCTL_ALERT_STATUS 0x10 | ||
189 | |||
190 | #define DEV_STAT_ATTENTION 0x80 | ||
191 | #define DEV_STAT_STAT_MOD 0x40 | ||
192 | #define DEV_STAT_CU_END 0x20 | ||
193 | #define DEV_STAT_BUSY 0x10 | ||
194 | #define DEV_STAT_CHN_END 0x08 | ||
195 | #define DEV_STAT_DEV_END 0x04 | ||
196 | #define DEV_STAT_UNIT_CHECK 0x02 | ||
197 | #define DEV_STAT_UNIT_EXCEP 0x01 | ||
198 | |||
199 | #define SCHN_STAT_PCI 0x80 | ||
200 | #define SCHN_STAT_INCORR_LEN 0x40 | ||
201 | #define SCHN_STAT_PROG_CHECK 0x20 | ||
202 | #define SCHN_STAT_PROT_CHECK 0x10 | ||
203 | #define SCHN_STAT_CHN_DATA_CHK 0x08 | ||
204 | #define SCHN_STAT_CHN_CTRL_CHK 0x04 | ||
205 | #define SCHN_STAT_INTF_CTRL_CHK 0x02 | ||
206 | #define SCHN_STAT_CHAIN_CHECK 0x01 | ||
207 | |||
208 | /* | ||
209 | * architectured values for first sense byte | ||
210 | */ | ||
211 | #define SNS0_CMD_REJECT 0x80 | ||
212 | #define SNS_CMD_REJECT SNS0_CMD_REJEC | ||
213 | #define SNS0_INTERVENTION_REQ 0x40 | ||
214 | #define SNS0_BUS_OUT_CHECK 0x20 | ||
215 | #define SNS0_EQUIPMENT_CHECK 0x10 | ||
216 | #define SNS0_DATA_CHECK 0x08 | ||
217 | #define SNS0_OVERRUN 0x04 | ||
218 | #define SNS0_INCOMPL_DOMAIN 0x01 | ||
219 | |||
220 | /* | ||
221 | * architectured values for second sense byte | ||
222 | */ | ||
223 | #define SNS1_PERM_ERR 0x80 | ||
224 | #define SNS1_INV_TRACK_FORMAT 0x40 | ||
225 | #define SNS1_EOC 0x20 | ||
226 | #define SNS1_MESSAGE_TO_OPER 0x10 | ||
227 | #define SNS1_NO_REC_FOUND 0x08 | ||
228 | #define SNS1_FILE_PROTECTED 0x04 | ||
229 | #define SNS1_WRITE_INHIBITED 0x02 | ||
230 | #define SNS1_INPRECISE_END 0x01 | ||
231 | |||
232 | /* | ||
233 | * architectured values for third sense byte | ||
234 | */ | ||
235 | #define SNS2_REQ_INH_WRITE 0x80 | ||
236 | #define SNS2_CORRECTABLE 0x40 | ||
237 | #define SNS2_FIRST_LOG_ERR 0x20 | ||
238 | #define SNS2_ENV_DATA_PRESENT 0x10 | ||
239 | #define SNS2_INPRECISE_END 0x04 | ||
240 | 19 | ||
241 | /** | 20 | /** |
242 | * struct ccw1 - channel command word | 21 | * struct ccw1 - channel command word |
diff --git a/drivers/s390/cio/scsw.c b/arch/s390/include/asm/scsw.h index f8da25ab576d..de389cb54d28 100644 --- a/drivers/s390/cio/scsw.c +++ b/arch/s390/include/asm/scsw.h | |||
@@ -1,15 +1,182 @@ | |||
1 | /* | 1 | /* |
2 | * Helper functions for scsw access. | 2 | * Helper functions for scsw access. |
3 | * | 3 | * |
4 | * Copyright IBM Corp. 2008 | 4 | * Copyright IBM Corp. 2008,2009 |
5 | * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> | 5 | * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> |
6 | */ | 6 | */ |
7 | 7 | ||
8 | #ifndef _ASM_S390_SCSW_H_ | ||
9 | #define _ASM_S390_SCSW_H_ | ||
10 | |||
8 | #include <linux/types.h> | 11 | #include <linux/types.h> |
9 | #include <linux/module.h> | 12 | #include <asm/chsc.h> |
10 | #include <asm/cio.h> | 13 | #include <asm/cio.h> |
11 | #include "css.h" | 14 | |
12 | #include "chsc.h" | 15 | /** |
16 | * struct cmd_scsw - command-mode subchannel status word | ||
17 | * @key: subchannel key | ||
18 | * @sctl: suspend control | ||
19 | * @eswf: esw format | ||
20 | * @cc: deferred condition code | ||
21 | * @fmt: format | ||
22 | * @pfch: prefetch | ||
23 | * @isic: initial-status interruption control | ||
24 | * @alcc: address-limit checking control | ||
25 | * @ssi: suppress-suspended interruption | ||
26 | * @zcc: zero condition code | ||
27 | * @ectl: extended control | ||
28 | * @pno: path not operational | ||
29 | * @res: reserved | ||
30 | * @fctl: function control | ||
31 | * @actl: activity control | ||
32 | * @stctl: status control | ||
33 | * @cpa: channel program address | ||
34 | * @dstat: device status | ||
35 | * @cstat: subchannel status | ||
36 | * @count: residual count | ||
37 | */ | ||
38 | struct cmd_scsw { | ||
39 | __u32 key : 4; | ||
40 | __u32 sctl : 1; | ||
41 | __u32 eswf : 1; | ||
42 | __u32 cc : 2; | ||
43 | __u32 fmt : 1; | ||
44 | __u32 pfch : 1; | ||
45 | __u32 isic : 1; | ||
46 | __u32 alcc : 1; | ||
47 | __u32 ssi : 1; | ||
48 | __u32 zcc : 1; | ||
49 | __u32 ectl : 1; | ||
50 | __u32 pno : 1; | ||
51 | __u32 res : 1; | ||
52 | __u32 fctl : 3; | ||
53 | __u32 actl : 7; | ||
54 | __u32 stctl : 5; | ||
55 | __u32 cpa; | ||
56 | __u32 dstat : 8; | ||
57 | __u32 cstat : 8; | ||
58 | __u32 count : 16; | ||
59 | } __attribute__ ((packed)); | ||
60 | |||
61 | /** | ||
62 | * struct tm_scsw - transport-mode subchannel status word | ||
63 | * @key: subchannel key | ||
64 | * @eswf: esw format | ||
65 | * @cc: deferred condition code | ||
66 | * @fmt: format | ||
67 | * @x: IRB-format control | ||
68 | * @q: interrogate-complete | ||
69 | * @ectl: extended control | ||
70 | * @pno: path not operational | ||
71 | * @fctl: function control | ||
72 | * @actl: activity control | ||
73 | * @stctl: status control | ||
74 | * @tcw: TCW address | ||
75 | * @dstat: device status | ||
76 | * @cstat: subchannel status | ||
77 | * @fcxs: FCX status | ||
78 | * @schxs: subchannel-extended status | ||
79 | */ | ||
80 | struct tm_scsw { | ||
81 | u32 key:4; | ||
82 | u32 :1; | ||
83 | u32 eswf:1; | ||
84 | u32 cc:2; | ||
85 | u32 fmt:3; | ||
86 | u32 x:1; | ||
87 | u32 q:1; | ||
88 | u32 :1; | ||
89 | u32 ectl:1; | ||
90 | u32 pno:1; | ||
91 | u32 :1; | ||
92 | u32 fctl:3; | ||
93 | u32 actl:7; | ||
94 | u32 stctl:5; | ||
95 | u32 tcw; | ||
96 | u32 dstat:8; | ||
97 | u32 cstat:8; | ||
98 | u32 fcxs:8; | ||
99 | u32 schxs:8; | ||
100 | } __attribute__ ((packed)); | ||
101 | |||
102 | /** | ||
103 | * union scsw - subchannel status word | ||
104 | * @cmd: command-mode SCSW | ||
105 | * @tm: transport-mode SCSW | ||
106 | */ | ||
107 | union scsw { | ||
108 | struct cmd_scsw cmd; | ||
109 | struct tm_scsw tm; | ||
110 | } __attribute__ ((packed)); | ||
111 | |||
112 | #define SCSW_FCTL_CLEAR_FUNC 0x1 | ||
113 | #define SCSW_FCTL_HALT_FUNC 0x2 | ||
114 | #define SCSW_FCTL_START_FUNC 0x4 | ||
115 | |||
116 | #define SCSW_ACTL_SUSPENDED 0x1 | ||
117 | #define SCSW_ACTL_DEVACT 0x2 | ||
118 | #define SCSW_ACTL_SCHACT 0x4 | ||
119 | #define SCSW_ACTL_CLEAR_PEND 0x8 | ||
120 | #define SCSW_ACTL_HALT_PEND 0x10 | ||
121 | #define SCSW_ACTL_START_PEND 0x20 | ||
122 | #define SCSW_ACTL_RESUME_PEND 0x40 | ||
123 | |||
124 | #define SCSW_STCTL_STATUS_PEND 0x1 | ||
125 | #define SCSW_STCTL_SEC_STATUS 0x2 | ||
126 | #define SCSW_STCTL_PRIM_STATUS 0x4 | ||
127 | #define SCSW_STCTL_INTER_STATUS 0x8 | ||
128 | #define SCSW_STCTL_ALERT_STATUS 0x10 | ||
129 | |||
130 | #define DEV_STAT_ATTENTION 0x80 | ||
131 | #define DEV_STAT_STAT_MOD 0x40 | ||
132 | #define DEV_STAT_CU_END 0x20 | ||
133 | #define DEV_STAT_BUSY 0x10 | ||
134 | #define DEV_STAT_CHN_END 0x08 | ||
135 | #define DEV_STAT_DEV_END 0x04 | ||
136 | #define DEV_STAT_UNIT_CHECK 0x02 | ||
137 | #define DEV_STAT_UNIT_EXCEP 0x01 | ||
138 | |||
139 | #define SCHN_STAT_PCI 0x80 | ||
140 | #define SCHN_STAT_INCORR_LEN 0x40 | ||
141 | #define SCHN_STAT_PROG_CHECK 0x20 | ||
142 | #define SCHN_STAT_PROT_CHECK 0x10 | ||
143 | #define SCHN_STAT_CHN_DATA_CHK 0x08 | ||
144 | #define SCHN_STAT_CHN_CTRL_CHK 0x04 | ||
145 | #define SCHN_STAT_INTF_CTRL_CHK 0x02 | ||
146 | #define SCHN_STAT_CHAIN_CHECK 0x01 | ||
147 | |||
148 | /* | ||
149 | * architectured values for first sense byte | ||
150 | */ | ||
151 | #define SNS0_CMD_REJECT 0x80 | ||
152 | #define SNS_CMD_REJECT SNS0_CMD_REJEC | ||
153 | #define SNS0_INTERVENTION_REQ 0x40 | ||
154 | #define SNS0_BUS_OUT_CHECK 0x20 | ||
155 | #define SNS0_EQUIPMENT_CHECK 0x10 | ||
156 | #define SNS0_DATA_CHECK 0x08 | ||
157 | #define SNS0_OVERRUN 0x04 | ||
158 | #define SNS0_INCOMPL_DOMAIN 0x01 | ||
159 | |||
160 | /* | ||
161 | * architectured values for second sense byte | ||
162 | */ | ||
163 | #define SNS1_PERM_ERR 0x80 | ||
164 | #define SNS1_INV_TRACK_FORMAT 0x40 | ||
165 | #define SNS1_EOC 0x20 | ||
166 | #define SNS1_MESSAGE_TO_OPER 0x10 | ||
167 | #define SNS1_NO_REC_FOUND 0x08 | ||
168 | #define SNS1_FILE_PROTECTED 0x04 | ||
169 | #define SNS1_WRITE_INHIBITED 0x02 | ||
170 | #define SNS1_INPRECISE_END 0x01 | ||
171 | |||
172 | /* | ||
173 | * architectured values for third sense byte | ||
174 | */ | ||
175 | #define SNS2_REQ_INH_WRITE 0x80 | ||
176 | #define SNS2_CORRECTABLE 0x40 | ||
177 | #define SNS2_FIRST_LOG_ERR 0x20 | ||
178 | #define SNS2_ENV_DATA_PRESENT 0x10 | ||
179 | #define SNS2_INPRECISE_END 0x04 | ||
13 | 180 | ||
14 | /** | 181 | /** |
15 | * scsw_is_tm - check for transport mode scsw | 182 | * scsw_is_tm - check for transport mode scsw |
@@ -18,11 +185,10 @@ | |||
18 | * Return non-zero if the specified scsw is a transport mode scsw, zero | 185 | * Return non-zero if the specified scsw is a transport mode scsw, zero |
19 | * otherwise. | 186 | * otherwise. |
20 | */ | 187 | */ |
21 | int scsw_is_tm(union scsw *scsw) | 188 | static inline int scsw_is_tm(union scsw *scsw) |
22 | { | 189 | { |
23 | return css_general_characteristics.fcx && (scsw->tm.x == 1); | 190 | return css_general_characteristics.fcx && (scsw->tm.x == 1); |
24 | } | 191 | } |
25 | EXPORT_SYMBOL(scsw_is_tm); | ||
26 | 192 | ||
27 | /** | 193 | /** |
28 | * scsw_key - return scsw key field | 194 | * scsw_key - return scsw key field |
@@ -31,14 +197,13 @@ EXPORT_SYMBOL(scsw_is_tm); | |||
31 | * Return the value of the key field of the specified scsw, regardless of | 197 | * Return the value of the key field of the specified scsw, regardless of |
32 | * whether it is a transport mode or command mode scsw. | 198 | * whether it is a transport mode or command mode scsw. |
33 | */ | 199 | */ |
34 | u32 scsw_key(union scsw *scsw) | 200 | static inline u32 scsw_key(union scsw *scsw) |
35 | { | 201 | { |
36 | if (scsw_is_tm(scsw)) | 202 | if (scsw_is_tm(scsw)) |
37 | return scsw->tm.key; | 203 | return scsw->tm.key; |
38 | else | 204 | else |
39 | return scsw->cmd.key; | 205 | return scsw->cmd.key; |
40 | } | 206 | } |
41 | EXPORT_SYMBOL(scsw_key); | ||
42 | 207 | ||
43 | /** | 208 | /** |
44 | * scsw_eswf - return scsw eswf field | 209 | * scsw_eswf - return scsw eswf field |
@@ -47,14 +212,13 @@ EXPORT_SYMBOL(scsw_key); | |||
47 | * Return the value of the eswf field of the specified scsw, regardless of | 212 | * Return the value of the eswf field of the specified scsw, regardless of |
48 | * whether it is a transport mode or command mode scsw. | 213 | * whether it is a transport mode or command mode scsw. |
49 | */ | 214 | */ |
50 | u32 scsw_eswf(union scsw *scsw) | 215 | static inline u32 scsw_eswf(union scsw *scsw) |
51 | { | 216 | { |
52 | if (scsw_is_tm(scsw)) | 217 | if (scsw_is_tm(scsw)) |
53 | return scsw->tm.eswf; | 218 | return scsw->tm.eswf; |
54 | else | 219 | else |
55 | return scsw->cmd.eswf; | 220 | return scsw->cmd.eswf; |
56 | } | 221 | } |
57 | EXPORT_SYMBOL(scsw_eswf); | ||
58 | 222 | ||
59 | /** | 223 | /** |
60 | * scsw_cc - return scsw cc field | 224 | * scsw_cc - return scsw cc field |
@@ -63,14 +227,13 @@ EXPORT_SYMBOL(scsw_eswf); | |||
63 | * Return the value of the cc field of the specified scsw, regardless of | 227 | * Return the value of the cc field of the specified scsw, regardless of |
64 | * whether it is a transport mode or command mode scsw. | 228 | * whether it is a transport mode or command mode scsw. |
65 | */ | 229 | */ |
66 | u32 scsw_cc(union scsw *scsw) | 230 | static inline u32 scsw_cc(union scsw *scsw) |
67 | { | 231 | { |
68 | if (scsw_is_tm(scsw)) | 232 | if (scsw_is_tm(scsw)) |
69 | return scsw->tm.cc; | 233 | return scsw->tm.cc; |
70 | else | 234 | else |
71 | return scsw->cmd.cc; | 235 | return scsw->cmd.cc; |
72 | } | 236 | } |
73 | EXPORT_SYMBOL(scsw_cc); | ||
74 | 237 | ||
75 | /** | 238 | /** |
76 | * scsw_ectl - return scsw ectl field | 239 | * scsw_ectl - return scsw ectl field |
@@ -79,14 +242,13 @@ EXPORT_SYMBOL(scsw_cc); | |||
79 | * Return the value of the ectl field of the specified scsw, regardless of | 242 | * Return the value of the ectl field of the specified scsw, regardless of |
80 | * whether it is a transport mode or command mode scsw. | 243 | * whether it is a transport mode or command mode scsw. |
81 | */ | 244 | */ |
82 | u32 scsw_ectl(union scsw *scsw) | 245 | static inline u32 scsw_ectl(union scsw *scsw) |
83 | { | 246 | { |
84 | if (scsw_is_tm(scsw)) | 247 | if (scsw_is_tm(scsw)) |
85 | return scsw->tm.ectl; | 248 | return scsw->tm.ectl; |
86 | else | 249 | else |
87 | return scsw->cmd.ectl; | 250 | return scsw->cmd.ectl; |
88 | } | 251 | } |
89 | EXPORT_SYMBOL(scsw_ectl); | ||
90 | 252 | ||
91 | /** | 253 | /** |
92 | * scsw_pno - return scsw pno field | 254 | * scsw_pno - return scsw pno field |
@@ -95,14 +257,13 @@ EXPORT_SYMBOL(scsw_ectl); | |||
95 | * Return the value of the pno field of the specified scsw, regardless of | 257 | * Return the value of the pno field of the specified scsw, regardless of |
96 | * whether it is a transport mode or command mode scsw. | 258 | * whether it is a transport mode or command mode scsw. |
97 | */ | 259 | */ |
98 | u32 scsw_pno(union scsw *scsw) | 260 | static inline u32 scsw_pno(union scsw *scsw) |
99 | { | 261 | { |
100 | if (scsw_is_tm(scsw)) | 262 | if (scsw_is_tm(scsw)) |
101 | return scsw->tm.pno; | 263 | return scsw->tm.pno; |
102 | else | 264 | else |
103 | return scsw->cmd.pno; | 265 | return scsw->cmd.pno; |
104 | } | 266 | } |
105 | EXPORT_SYMBOL(scsw_pno); | ||
106 | 267 | ||
107 | /** | 268 | /** |
108 | * scsw_fctl - return scsw fctl field | 269 | * scsw_fctl - return scsw fctl field |
@@ -111,14 +272,13 @@ EXPORT_SYMBOL(scsw_pno); | |||
111 | * Return the value of the fctl field of the specified scsw, regardless of | 272 | * Return the value of the fctl field of the specified scsw, regardless of |
112 | * whether it is a transport mode or command mode scsw. | 273 | * whether it is a transport mode or command mode scsw. |
113 | */ | 274 | */ |
114 | u32 scsw_fctl(union scsw *scsw) | 275 | static inline u32 scsw_fctl(union scsw *scsw) |
115 | { | 276 | { |
116 | if (scsw_is_tm(scsw)) | 277 | if (scsw_is_tm(scsw)) |
117 | return scsw->tm.fctl; | 278 | return scsw->tm.fctl; |
118 | else | 279 | else |
119 | return scsw->cmd.fctl; | 280 | return scsw->cmd.fctl; |
120 | } | 281 | } |
121 | EXPORT_SYMBOL(scsw_fctl); | ||
122 | 282 | ||
123 | /** | 283 | /** |
124 | * scsw_actl - return scsw actl field | 284 | * scsw_actl - return scsw actl field |
@@ -127,14 +287,13 @@ EXPORT_SYMBOL(scsw_fctl); | |||
127 | * Return the value of the actl field of the specified scsw, regardless of | 287 | * Return the value of the actl field of the specified scsw, regardless of |
128 | * whether it is a transport mode or command mode scsw. | 288 | * whether it is a transport mode or command mode scsw. |
129 | */ | 289 | */ |
130 | u32 scsw_actl(union scsw *scsw) | 290 | static inline u32 scsw_actl(union scsw *scsw) |
131 | { | 291 | { |
132 | if (scsw_is_tm(scsw)) | 292 | if (scsw_is_tm(scsw)) |
133 | return scsw->tm.actl; | 293 | return scsw->tm.actl; |
134 | else | 294 | else |
135 | return scsw->cmd.actl; | 295 | return scsw->cmd.actl; |
136 | } | 296 | } |
137 | EXPORT_SYMBOL(scsw_actl); | ||
138 | 297 | ||
139 | /** | 298 | /** |
140 | * scsw_stctl - return scsw stctl field | 299 | * scsw_stctl - return scsw stctl field |
@@ -143,14 +302,13 @@ EXPORT_SYMBOL(scsw_actl); | |||
143 | * Return the value of the stctl field of the specified scsw, regardless of | 302 | * Return the value of the stctl field of the specified scsw, regardless of |
144 | * whether it is a transport mode or command mode scsw. | 303 | * whether it is a transport mode or command mode scsw. |
145 | */ | 304 | */ |
146 | u32 scsw_stctl(union scsw *scsw) | 305 | static inline u32 scsw_stctl(union scsw *scsw) |
147 | { | 306 | { |
148 | if (scsw_is_tm(scsw)) | 307 | if (scsw_is_tm(scsw)) |
149 | return scsw->tm.stctl; | 308 | return scsw->tm.stctl; |
150 | else | 309 | else |
151 | return scsw->cmd.stctl; | 310 | return scsw->cmd.stctl; |
152 | } | 311 | } |
153 | EXPORT_SYMBOL(scsw_stctl); | ||
154 | 312 | ||
155 | /** | 313 | /** |
156 | * scsw_dstat - return scsw dstat field | 314 | * scsw_dstat - return scsw dstat field |
@@ -159,14 +317,13 @@ EXPORT_SYMBOL(scsw_stctl); | |||
159 | * Return the value of the dstat field of the specified scsw, regardless of | 317 | * Return the value of the dstat field of the specified scsw, regardless of |
160 | * whether it is a transport mode or command mode scsw. | 318 | * whether it is a transport mode or command mode scsw. |
161 | */ | 319 | */ |
162 | u32 scsw_dstat(union scsw *scsw) | 320 | static inline u32 scsw_dstat(union scsw *scsw) |
163 | { | 321 | { |
164 | if (scsw_is_tm(scsw)) | 322 | if (scsw_is_tm(scsw)) |
165 | return scsw->tm.dstat; | 323 | return scsw->tm.dstat; |
166 | else | 324 | else |
167 | return scsw->cmd.dstat; | 325 | return scsw->cmd.dstat; |
168 | } | 326 | } |
169 | EXPORT_SYMBOL(scsw_dstat); | ||
170 | 327 | ||
171 | /** | 328 | /** |
172 | * scsw_cstat - return scsw cstat field | 329 | * scsw_cstat - return scsw cstat field |
@@ -175,14 +332,13 @@ EXPORT_SYMBOL(scsw_dstat); | |||
175 | * Return the value of the cstat field of the specified scsw, regardless of | 332 | * Return the value of the cstat field of the specified scsw, regardless of |
176 | * whether it is a transport mode or command mode scsw. | 333 | * whether it is a transport mode or command mode scsw. |
177 | */ | 334 | */ |
178 | u32 scsw_cstat(union scsw *scsw) | 335 | static inline u32 scsw_cstat(union scsw *scsw) |
179 | { | 336 | { |
180 | if (scsw_is_tm(scsw)) | 337 | if (scsw_is_tm(scsw)) |
181 | return scsw->tm.cstat; | 338 | return scsw->tm.cstat; |
182 | else | 339 | else |
183 | return scsw->cmd.cstat; | 340 | return scsw->cmd.cstat; |
184 | } | 341 | } |
185 | EXPORT_SYMBOL(scsw_cstat); | ||
186 | 342 | ||
187 | /** | 343 | /** |
188 | * scsw_cmd_is_valid_key - check key field validity | 344 | * scsw_cmd_is_valid_key - check key field validity |
@@ -191,11 +347,10 @@ EXPORT_SYMBOL(scsw_cstat); | |||
191 | * Return non-zero if the key field of the specified command mode scsw is | 347 | * Return non-zero if the key field of the specified command mode scsw is |
192 | * valid, zero otherwise. | 348 | * valid, zero otherwise. |
193 | */ | 349 | */ |
194 | int scsw_cmd_is_valid_key(union scsw *scsw) | 350 | static inline int scsw_cmd_is_valid_key(union scsw *scsw) |
195 | { | 351 | { |
196 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); | 352 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); |
197 | } | 353 | } |
198 | EXPORT_SYMBOL(scsw_cmd_is_valid_key); | ||
199 | 354 | ||
200 | /** | 355 | /** |
201 | * scsw_cmd_is_valid_sctl - check fctl field validity | 356 | * scsw_cmd_is_valid_sctl - check fctl field validity |
@@ -204,11 +359,10 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_key); | |||
204 | * Return non-zero if the fctl field of the specified command mode scsw is | 359 | * Return non-zero if the fctl field of the specified command mode scsw is |
205 | * valid, zero otherwise. | 360 | * valid, zero otherwise. |
206 | */ | 361 | */ |
207 | int scsw_cmd_is_valid_sctl(union scsw *scsw) | 362 | static inline int scsw_cmd_is_valid_sctl(union scsw *scsw) |
208 | { | 363 | { |
209 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); | 364 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); |
210 | } | 365 | } |
211 | EXPORT_SYMBOL(scsw_cmd_is_valid_sctl); | ||
212 | 366 | ||
213 | /** | 367 | /** |
214 | * scsw_cmd_is_valid_eswf - check eswf field validity | 368 | * scsw_cmd_is_valid_eswf - check eswf field validity |
@@ -217,11 +371,10 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_sctl); | |||
217 | * Return non-zero if the eswf field of the specified command mode scsw is | 371 | * Return non-zero if the eswf field of the specified command mode scsw is |
218 | * valid, zero otherwise. | 372 | * valid, zero otherwise. |
219 | */ | 373 | */ |
220 | int scsw_cmd_is_valid_eswf(union scsw *scsw) | 374 | static inline int scsw_cmd_is_valid_eswf(union scsw *scsw) |
221 | { | 375 | { |
222 | return (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND); | 376 | return (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND); |
223 | } | 377 | } |
224 | EXPORT_SYMBOL(scsw_cmd_is_valid_eswf); | ||
225 | 378 | ||
226 | /** | 379 | /** |
227 | * scsw_cmd_is_valid_cc - check cc field validity | 380 | * scsw_cmd_is_valid_cc - check cc field validity |
@@ -230,12 +383,11 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_eswf); | |||
230 | * Return non-zero if the cc field of the specified command mode scsw is | 383 | * Return non-zero if the cc field of the specified command mode scsw is |
231 | * valid, zero otherwise. | 384 | * valid, zero otherwise. |
232 | */ | 385 | */ |
233 | int scsw_cmd_is_valid_cc(union scsw *scsw) | 386 | static inline int scsw_cmd_is_valid_cc(union scsw *scsw) |
234 | { | 387 | { |
235 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC) && | 388 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC) && |
236 | (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND); | 389 | (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND); |
237 | } | 390 | } |
238 | EXPORT_SYMBOL(scsw_cmd_is_valid_cc); | ||
239 | 391 | ||
240 | /** | 392 | /** |
241 | * scsw_cmd_is_valid_fmt - check fmt field validity | 393 | * scsw_cmd_is_valid_fmt - check fmt field validity |
@@ -244,11 +396,10 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_cc); | |||
244 | * Return non-zero if the fmt field of the specified command mode scsw is | 396 | * Return non-zero if the fmt field of the specified command mode scsw is |
245 | * valid, zero otherwise. | 397 | * valid, zero otherwise. |
246 | */ | 398 | */ |
247 | int scsw_cmd_is_valid_fmt(union scsw *scsw) | 399 | static inline int scsw_cmd_is_valid_fmt(union scsw *scsw) |
248 | { | 400 | { |
249 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); | 401 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); |
250 | } | 402 | } |
251 | EXPORT_SYMBOL(scsw_cmd_is_valid_fmt); | ||
252 | 403 | ||
253 | /** | 404 | /** |
254 | * scsw_cmd_is_valid_pfch - check pfch field validity | 405 | * scsw_cmd_is_valid_pfch - check pfch field validity |
@@ -257,11 +408,10 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_fmt); | |||
257 | * Return non-zero if the pfch field of the specified command mode scsw is | 408 | * Return non-zero if the pfch field of the specified command mode scsw is |
258 | * valid, zero otherwise. | 409 | * valid, zero otherwise. |
259 | */ | 410 | */ |
260 | int scsw_cmd_is_valid_pfch(union scsw *scsw) | 411 | static inline int scsw_cmd_is_valid_pfch(union scsw *scsw) |
261 | { | 412 | { |
262 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); | 413 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); |
263 | } | 414 | } |
264 | EXPORT_SYMBOL(scsw_cmd_is_valid_pfch); | ||
265 | 415 | ||
266 | /** | 416 | /** |
267 | * scsw_cmd_is_valid_isic - check isic field validity | 417 | * scsw_cmd_is_valid_isic - check isic field validity |
@@ -270,11 +420,10 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_pfch); | |||
270 | * Return non-zero if the isic field of the specified command mode scsw is | 420 | * Return non-zero if the isic field of the specified command mode scsw is |
271 | * valid, zero otherwise. | 421 | * valid, zero otherwise. |
272 | */ | 422 | */ |
273 | int scsw_cmd_is_valid_isic(union scsw *scsw) | 423 | static inline int scsw_cmd_is_valid_isic(union scsw *scsw) |
274 | { | 424 | { |
275 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); | 425 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); |
276 | } | 426 | } |
277 | EXPORT_SYMBOL(scsw_cmd_is_valid_isic); | ||
278 | 427 | ||
279 | /** | 428 | /** |
280 | * scsw_cmd_is_valid_alcc - check alcc field validity | 429 | * scsw_cmd_is_valid_alcc - check alcc field validity |
@@ -283,11 +432,10 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_isic); | |||
283 | * Return non-zero if the alcc field of the specified command mode scsw is | 432 | * Return non-zero if the alcc field of the specified command mode scsw is |
284 | * valid, zero otherwise. | 433 | * valid, zero otherwise. |
285 | */ | 434 | */ |
286 | int scsw_cmd_is_valid_alcc(union scsw *scsw) | 435 | static inline int scsw_cmd_is_valid_alcc(union scsw *scsw) |
287 | { | 436 | { |
288 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); | 437 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); |
289 | } | 438 | } |
290 | EXPORT_SYMBOL(scsw_cmd_is_valid_alcc); | ||
291 | 439 | ||
292 | /** | 440 | /** |
293 | * scsw_cmd_is_valid_ssi - check ssi field validity | 441 | * scsw_cmd_is_valid_ssi - check ssi field validity |
@@ -296,11 +444,10 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_alcc); | |||
296 | * Return non-zero if the ssi field of the specified command mode scsw is | 444 | * Return non-zero if the ssi field of the specified command mode scsw is |
297 | * valid, zero otherwise. | 445 | * valid, zero otherwise. |
298 | */ | 446 | */ |
299 | int scsw_cmd_is_valid_ssi(union scsw *scsw) | 447 | static inline int scsw_cmd_is_valid_ssi(union scsw *scsw) |
300 | { | 448 | { |
301 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); | 449 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC); |
302 | } | 450 | } |
303 | EXPORT_SYMBOL(scsw_cmd_is_valid_ssi); | ||
304 | 451 | ||
305 | /** | 452 | /** |
306 | * scsw_cmd_is_valid_zcc - check zcc field validity | 453 | * scsw_cmd_is_valid_zcc - check zcc field validity |
@@ -309,12 +456,11 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_ssi); | |||
309 | * Return non-zero if the zcc field of the specified command mode scsw is | 456 | * Return non-zero if the zcc field of the specified command mode scsw is |
310 | * valid, zero otherwise. | 457 | * valid, zero otherwise. |
311 | */ | 458 | */ |
312 | int scsw_cmd_is_valid_zcc(union scsw *scsw) | 459 | static inline int scsw_cmd_is_valid_zcc(union scsw *scsw) |
313 | { | 460 | { |
314 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC) && | 461 | return (scsw->cmd.fctl & SCSW_FCTL_START_FUNC) && |
315 | (scsw->cmd.stctl & SCSW_STCTL_INTER_STATUS); | 462 | (scsw->cmd.stctl & SCSW_STCTL_INTER_STATUS); |
316 | } | 463 | } |
317 | EXPORT_SYMBOL(scsw_cmd_is_valid_zcc); | ||
318 | 464 | ||
319 | /** | 465 | /** |
320 | * scsw_cmd_is_valid_ectl - check ectl field validity | 466 | * scsw_cmd_is_valid_ectl - check ectl field validity |
@@ -323,13 +469,12 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_zcc); | |||
323 | * Return non-zero if the ectl field of the specified command mode scsw is | 469 | * Return non-zero if the ectl field of the specified command mode scsw is |
324 | * valid, zero otherwise. | 470 | * valid, zero otherwise. |
325 | */ | 471 | */ |
326 | int scsw_cmd_is_valid_ectl(union scsw *scsw) | 472 | static inline int scsw_cmd_is_valid_ectl(union scsw *scsw) |
327 | { | 473 | { |
328 | return (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND) && | 474 | return (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND) && |
329 | !(scsw->cmd.stctl & SCSW_STCTL_INTER_STATUS) && | 475 | !(scsw->cmd.stctl & SCSW_STCTL_INTER_STATUS) && |
330 | (scsw->cmd.stctl & SCSW_STCTL_ALERT_STATUS); | 476 | (scsw->cmd.stctl & SCSW_STCTL_ALERT_STATUS); |
331 | } | 477 | } |
332 | EXPORT_SYMBOL(scsw_cmd_is_valid_ectl); | ||
333 | 478 | ||
334 | /** | 479 | /** |
335 | * scsw_cmd_is_valid_pno - check pno field validity | 480 | * scsw_cmd_is_valid_pno - check pno field validity |
@@ -338,7 +483,7 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_ectl); | |||
338 | * Return non-zero if the pno field of the specified command mode scsw is | 483 | * Return non-zero if the pno field of the specified command mode scsw is |
339 | * valid, zero otherwise. | 484 | * valid, zero otherwise. |
340 | */ | 485 | */ |
341 | int scsw_cmd_is_valid_pno(union scsw *scsw) | 486 | static inline int scsw_cmd_is_valid_pno(union scsw *scsw) |
342 | { | 487 | { |
343 | return (scsw->cmd.fctl != 0) && | 488 | return (scsw->cmd.fctl != 0) && |
344 | (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND) && | 489 | (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND) && |
@@ -346,7 +491,6 @@ int scsw_cmd_is_valid_pno(union scsw *scsw) | |||
346 | ((scsw->cmd.stctl & SCSW_STCTL_INTER_STATUS) && | 491 | ((scsw->cmd.stctl & SCSW_STCTL_INTER_STATUS) && |
347 | (scsw->cmd.actl & SCSW_ACTL_SUSPENDED))); | 492 | (scsw->cmd.actl & SCSW_ACTL_SUSPENDED))); |
348 | } | 493 | } |
349 | EXPORT_SYMBOL(scsw_cmd_is_valid_pno); | ||
350 | 494 | ||
351 | /** | 495 | /** |
352 | * scsw_cmd_is_valid_fctl - check fctl field validity | 496 | * scsw_cmd_is_valid_fctl - check fctl field validity |
@@ -355,12 +499,11 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_pno); | |||
355 | * Return non-zero if the fctl field of the specified command mode scsw is | 499 | * Return non-zero if the fctl field of the specified command mode scsw is |
356 | * valid, zero otherwise. | 500 | * valid, zero otherwise. |
357 | */ | 501 | */ |
358 | int scsw_cmd_is_valid_fctl(union scsw *scsw) | 502 | static inline int scsw_cmd_is_valid_fctl(union scsw *scsw) |
359 | { | 503 | { |
360 | /* Only valid if pmcw.dnv == 1*/ | 504 | /* Only valid if pmcw.dnv == 1*/ |
361 | return 1; | 505 | return 1; |
362 | } | 506 | } |
363 | EXPORT_SYMBOL(scsw_cmd_is_valid_fctl); | ||
364 | 507 | ||
365 | /** | 508 | /** |
366 | * scsw_cmd_is_valid_actl - check actl field validity | 509 | * scsw_cmd_is_valid_actl - check actl field validity |
@@ -369,12 +512,11 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_fctl); | |||
369 | * Return non-zero if the actl field of the specified command mode scsw is | 512 | * Return non-zero if the actl field of the specified command mode scsw is |
370 | * valid, zero otherwise. | 513 | * valid, zero otherwise. |
371 | */ | 514 | */ |
372 | int scsw_cmd_is_valid_actl(union scsw *scsw) | 515 | static inline int scsw_cmd_is_valid_actl(union scsw *scsw) |
373 | { | 516 | { |
374 | /* Only valid if pmcw.dnv == 1*/ | 517 | /* Only valid if pmcw.dnv == 1*/ |
375 | return 1; | 518 | return 1; |
376 | } | 519 | } |
377 | EXPORT_SYMBOL(scsw_cmd_is_valid_actl); | ||
378 | 520 | ||
379 | /** | 521 | /** |
380 | * scsw_cmd_is_valid_stctl - check stctl field validity | 522 | * scsw_cmd_is_valid_stctl - check stctl field validity |
@@ -383,12 +525,11 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_actl); | |||
383 | * Return non-zero if the stctl field of the specified command mode scsw is | 525 | * Return non-zero if the stctl field of the specified command mode scsw is |
384 | * valid, zero otherwise. | 526 | * valid, zero otherwise. |
385 | */ | 527 | */ |
386 | int scsw_cmd_is_valid_stctl(union scsw *scsw) | 528 | static inline int scsw_cmd_is_valid_stctl(union scsw *scsw) |
387 | { | 529 | { |
388 | /* Only valid if pmcw.dnv == 1*/ | 530 | /* Only valid if pmcw.dnv == 1*/ |
389 | return 1; | 531 | return 1; |
390 | } | 532 | } |
391 | EXPORT_SYMBOL(scsw_cmd_is_valid_stctl); | ||
392 | 533 | ||
393 | /** | 534 | /** |
394 | * scsw_cmd_is_valid_dstat - check dstat field validity | 535 | * scsw_cmd_is_valid_dstat - check dstat field validity |
@@ -397,12 +538,11 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_stctl); | |||
397 | * Return non-zero if the dstat field of the specified command mode scsw is | 538 | * Return non-zero if the dstat field of the specified command mode scsw is |
398 | * valid, zero otherwise. | 539 | * valid, zero otherwise. |
399 | */ | 540 | */ |
400 | int scsw_cmd_is_valid_dstat(union scsw *scsw) | 541 | static inline int scsw_cmd_is_valid_dstat(union scsw *scsw) |
401 | { | 542 | { |
402 | return (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND) && | 543 | return (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND) && |
403 | (scsw->cmd.cc != 3); | 544 | (scsw->cmd.cc != 3); |
404 | } | 545 | } |
405 | EXPORT_SYMBOL(scsw_cmd_is_valid_dstat); | ||
406 | 546 | ||
407 | /** | 547 | /** |
408 | * scsw_cmd_is_valid_cstat - check cstat field validity | 548 | * scsw_cmd_is_valid_cstat - check cstat field validity |
@@ -411,12 +551,11 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_dstat); | |||
411 | * Return non-zero if the cstat field of the specified command mode scsw is | 551 | * Return non-zero if the cstat field of the specified command mode scsw is |
412 | * valid, zero otherwise. | 552 | * valid, zero otherwise. |
413 | */ | 553 | */ |
414 | int scsw_cmd_is_valid_cstat(union scsw *scsw) | 554 | static inline int scsw_cmd_is_valid_cstat(union scsw *scsw) |
415 | { | 555 | { |
416 | return (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND) && | 556 | return (scsw->cmd.stctl & SCSW_STCTL_STATUS_PEND) && |
417 | (scsw->cmd.cc != 3); | 557 | (scsw->cmd.cc != 3); |
418 | } | 558 | } |
419 | EXPORT_SYMBOL(scsw_cmd_is_valid_cstat); | ||
420 | 559 | ||
421 | /** | 560 | /** |
422 | * scsw_tm_is_valid_key - check key field validity | 561 | * scsw_tm_is_valid_key - check key field validity |
@@ -425,11 +564,10 @@ EXPORT_SYMBOL(scsw_cmd_is_valid_cstat); | |||
425 | * Return non-zero if the key field of the specified transport mode scsw is | 564 | * Return non-zero if the key field of the specified transport mode scsw is |
426 | * valid, zero otherwise. | 565 | * valid, zero otherwise. |
427 | */ | 566 | */ |
428 | int scsw_tm_is_valid_key(union scsw *scsw) | 567 | static inline int scsw_tm_is_valid_key(union scsw *scsw) |
429 | { | 568 | { |
430 | return (scsw->tm.fctl & SCSW_FCTL_START_FUNC); | 569 | return (scsw->tm.fctl & SCSW_FCTL_START_FUNC); |
431 | } | 570 | } |
432 | EXPORT_SYMBOL(scsw_tm_is_valid_key); | ||
433 | 571 | ||
434 | /** | 572 | /** |
435 | * scsw_tm_is_valid_eswf - check eswf field validity | 573 | * scsw_tm_is_valid_eswf - check eswf field validity |
@@ -438,11 +576,10 @@ EXPORT_SYMBOL(scsw_tm_is_valid_key); | |||
438 | * Return non-zero if the eswf field of the specified transport mode scsw is | 576 | * Return non-zero if the eswf field of the specified transport mode scsw is |
439 | * valid, zero otherwise. | 577 | * valid, zero otherwise. |
440 | */ | 578 | */ |
441 | int scsw_tm_is_valid_eswf(union scsw *scsw) | 579 | static inline int scsw_tm_is_valid_eswf(union scsw *scsw) |
442 | { | 580 | { |
443 | return (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND); | 581 | return (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND); |
444 | } | 582 | } |
445 | EXPORT_SYMBOL(scsw_tm_is_valid_eswf); | ||
446 | 583 | ||
447 | /** | 584 | /** |
448 | * scsw_tm_is_valid_cc - check cc field validity | 585 | * scsw_tm_is_valid_cc - check cc field validity |
@@ -451,12 +588,11 @@ EXPORT_SYMBOL(scsw_tm_is_valid_eswf); | |||
451 | * Return non-zero if the cc field of the specified transport mode scsw is | 588 | * Return non-zero if the cc field of the specified transport mode scsw is |
452 | * valid, zero otherwise. | 589 | * valid, zero otherwise. |
453 | */ | 590 | */ |
454 | int scsw_tm_is_valid_cc(union scsw *scsw) | 591 | static inline int scsw_tm_is_valid_cc(union scsw *scsw) |
455 | { | 592 | { |
456 | return (scsw->tm.fctl & SCSW_FCTL_START_FUNC) && | 593 | return (scsw->tm.fctl & SCSW_FCTL_START_FUNC) && |
457 | (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND); | 594 | (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND); |
458 | } | 595 | } |
459 | EXPORT_SYMBOL(scsw_tm_is_valid_cc); | ||
460 | 596 | ||
461 | /** | 597 | /** |
462 | * scsw_tm_is_valid_fmt - check fmt field validity | 598 | * scsw_tm_is_valid_fmt - check fmt field validity |
@@ -465,11 +601,10 @@ EXPORT_SYMBOL(scsw_tm_is_valid_cc); | |||
465 | * Return non-zero if the fmt field of the specified transport mode scsw is | 601 | * Return non-zero if the fmt field of the specified transport mode scsw is |
466 | * valid, zero otherwise. | 602 | * valid, zero otherwise. |
467 | */ | 603 | */ |
468 | int scsw_tm_is_valid_fmt(union scsw *scsw) | 604 | static inline int scsw_tm_is_valid_fmt(union scsw *scsw) |
469 | { | 605 | { |
470 | return 1; | 606 | return 1; |
471 | } | 607 | } |
472 | EXPORT_SYMBOL(scsw_tm_is_valid_fmt); | ||
473 | 608 | ||
474 | /** | 609 | /** |
475 | * scsw_tm_is_valid_x - check x field validity | 610 | * scsw_tm_is_valid_x - check x field validity |
@@ -478,11 +613,10 @@ EXPORT_SYMBOL(scsw_tm_is_valid_fmt); | |||
478 | * Return non-zero if the x field of the specified transport mode scsw is | 613 | * Return non-zero if the x field of the specified transport mode scsw is |
479 | * valid, zero otherwise. | 614 | * valid, zero otherwise. |
480 | */ | 615 | */ |
481 | int scsw_tm_is_valid_x(union scsw *scsw) | 616 | static inline int scsw_tm_is_valid_x(union scsw *scsw) |
482 | { | 617 | { |
483 | return 1; | 618 | return 1; |
484 | } | 619 | } |
485 | EXPORT_SYMBOL(scsw_tm_is_valid_x); | ||
486 | 620 | ||
487 | /** | 621 | /** |
488 | * scsw_tm_is_valid_q - check q field validity | 622 | * scsw_tm_is_valid_q - check q field validity |
@@ -491,11 +625,10 @@ EXPORT_SYMBOL(scsw_tm_is_valid_x); | |||
491 | * Return non-zero if the q field of the specified transport mode scsw is | 625 | * Return non-zero if the q field of the specified transport mode scsw is |
492 | * valid, zero otherwise. | 626 | * valid, zero otherwise. |
493 | */ | 627 | */ |
494 | int scsw_tm_is_valid_q(union scsw *scsw) | 628 | static inline int scsw_tm_is_valid_q(union scsw *scsw) |
495 | { | 629 | { |
496 | return 1; | 630 | return 1; |
497 | } | 631 | } |
498 | EXPORT_SYMBOL(scsw_tm_is_valid_q); | ||
499 | 632 | ||
500 | /** | 633 | /** |
501 | * scsw_tm_is_valid_ectl - check ectl field validity | 634 | * scsw_tm_is_valid_ectl - check ectl field validity |
@@ -504,13 +637,12 @@ EXPORT_SYMBOL(scsw_tm_is_valid_q); | |||
504 | * Return non-zero if the ectl field of the specified transport mode scsw is | 637 | * Return non-zero if the ectl field of the specified transport mode scsw is |
505 | * valid, zero otherwise. | 638 | * valid, zero otherwise. |
506 | */ | 639 | */ |
507 | int scsw_tm_is_valid_ectl(union scsw *scsw) | 640 | static inline int scsw_tm_is_valid_ectl(union scsw *scsw) |
508 | { | 641 | { |
509 | return (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND) && | 642 | return (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND) && |
510 | !(scsw->tm.stctl & SCSW_STCTL_INTER_STATUS) && | 643 | !(scsw->tm.stctl & SCSW_STCTL_INTER_STATUS) && |
511 | (scsw->tm.stctl & SCSW_STCTL_ALERT_STATUS); | 644 | (scsw->tm.stctl & SCSW_STCTL_ALERT_STATUS); |
512 | } | 645 | } |
513 | EXPORT_SYMBOL(scsw_tm_is_valid_ectl); | ||
514 | 646 | ||
515 | /** | 647 | /** |
516 | * scsw_tm_is_valid_pno - check pno field validity | 648 | * scsw_tm_is_valid_pno - check pno field validity |
@@ -519,7 +651,7 @@ EXPORT_SYMBOL(scsw_tm_is_valid_ectl); | |||
519 | * Return non-zero if the pno field of the specified transport mode scsw is | 651 | * Return non-zero if the pno field of the specified transport mode scsw is |
520 | * valid, zero otherwise. | 652 | * valid, zero otherwise. |
521 | */ | 653 | */ |
522 | int scsw_tm_is_valid_pno(union scsw *scsw) | 654 | static inline int scsw_tm_is_valid_pno(union scsw *scsw) |
523 | { | 655 | { |
524 | return (scsw->tm.fctl != 0) && | 656 | return (scsw->tm.fctl != 0) && |
525 | (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND) && | 657 | (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND) && |
@@ -527,7 +659,6 @@ int scsw_tm_is_valid_pno(union scsw *scsw) | |||
527 | ((scsw->tm.stctl & SCSW_STCTL_INTER_STATUS) && | 659 | ((scsw->tm.stctl & SCSW_STCTL_INTER_STATUS) && |
528 | (scsw->tm.actl & SCSW_ACTL_SUSPENDED))); | 660 | (scsw->tm.actl & SCSW_ACTL_SUSPENDED))); |
529 | } | 661 | } |
530 | EXPORT_SYMBOL(scsw_tm_is_valid_pno); | ||
531 | 662 | ||
532 | /** | 663 | /** |
533 | * scsw_tm_is_valid_fctl - check fctl field validity | 664 | * scsw_tm_is_valid_fctl - check fctl field validity |
@@ -536,12 +667,11 @@ EXPORT_SYMBOL(scsw_tm_is_valid_pno); | |||
536 | * Return non-zero if the fctl field of the specified transport mode scsw is | 667 | * Return non-zero if the fctl field of the specified transport mode scsw is |
537 | * valid, zero otherwise. | 668 | * valid, zero otherwise. |
538 | */ | 669 | */ |
539 | int scsw_tm_is_valid_fctl(union scsw *scsw) | 670 | static inline int scsw_tm_is_valid_fctl(union scsw *scsw) |
540 | { | 671 | { |
541 | /* Only valid if pmcw.dnv == 1*/ | 672 | /* Only valid if pmcw.dnv == 1*/ |
542 | return 1; | 673 | return 1; |
543 | } | 674 | } |
544 | EXPORT_SYMBOL(scsw_tm_is_valid_fctl); | ||
545 | 675 | ||
546 | /** | 676 | /** |
547 | * scsw_tm_is_valid_actl - check actl field validity | 677 | * scsw_tm_is_valid_actl - check actl field validity |
@@ -550,12 +680,11 @@ EXPORT_SYMBOL(scsw_tm_is_valid_fctl); | |||
550 | * Return non-zero if the actl field of the specified transport mode scsw is | 680 | * Return non-zero if the actl field of the specified transport mode scsw is |
551 | * valid, zero otherwise. | 681 | * valid, zero otherwise. |
552 | */ | 682 | */ |
553 | int scsw_tm_is_valid_actl(union scsw *scsw) | 683 | static inline int scsw_tm_is_valid_actl(union scsw *scsw) |
554 | { | 684 | { |
555 | /* Only valid if pmcw.dnv == 1*/ | 685 | /* Only valid if pmcw.dnv == 1*/ |
556 | return 1; | 686 | return 1; |
557 | } | 687 | } |
558 | EXPORT_SYMBOL(scsw_tm_is_valid_actl); | ||
559 | 688 | ||
560 | /** | 689 | /** |
561 | * scsw_tm_is_valid_stctl - check stctl field validity | 690 | * scsw_tm_is_valid_stctl - check stctl field validity |
@@ -564,12 +693,11 @@ EXPORT_SYMBOL(scsw_tm_is_valid_actl); | |||
564 | * Return non-zero if the stctl field of the specified transport mode scsw is | 693 | * Return non-zero if the stctl field of the specified transport mode scsw is |
565 | * valid, zero otherwise. | 694 | * valid, zero otherwise. |
566 | */ | 695 | */ |
567 | int scsw_tm_is_valid_stctl(union scsw *scsw) | 696 | static inline int scsw_tm_is_valid_stctl(union scsw *scsw) |
568 | { | 697 | { |
569 | /* Only valid if pmcw.dnv == 1*/ | 698 | /* Only valid if pmcw.dnv == 1*/ |
570 | return 1; | 699 | return 1; |
571 | } | 700 | } |
572 | EXPORT_SYMBOL(scsw_tm_is_valid_stctl); | ||
573 | 701 | ||
574 | /** | 702 | /** |
575 | * scsw_tm_is_valid_dstat - check dstat field validity | 703 | * scsw_tm_is_valid_dstat - check dstat field validity |
@@ -578,12 +706,11 @@ EXPORT_SYMBOL(scsw_tm_is_valid_stctl); | |||
578 | * Return non-zero if the dstat field of the specified transport mode scsw is | 706 | * Return non-zero if the dstat field of the specified transport mode scsw is |
579 | * valid, zero otherwise. | 707 | * valid, zero otherwise. |
580 | */ | 708 | */ |
581 | int scsw_tm_is_valid_dstat(union scsw *scsw) | 709 | static inline int scsw_tm_is_valid_dstat(union scsw *scsw) |
582 | { | 710 | { |
583 | return (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND) && | 711 | return (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND) && |
584 | (scsw->tm.cc != 3); | 712 | (scsw->tm.cc != 3); |
585 | } | 713 | } |
586 | EXPORT_SYMBOL(scsw_tm_is_valid_dstat); | ||
587 | 714 | ||
588 | /** | 715 | /** |
589 | * scsw_tm_is_valid_cstat - check cstat field validity | 716 | * scsw_tm_is_valid_cstat - check cstat field validity |
@@ -592,12 +719,11 @@ EXPORT_SYMBOL(scsw_tm_is_valid_dstat); | |||
592 | * Return non-zero if the cstat field of the specified transport mode scsw is | 719 | * Return non-zero if the cstat field of the specified transport mode scsw is |
593 | * valid, zero otherwise. | 720 | * valid, zero otherwise. |
594 | */ | 721 | */ |
595 | int scsw_tm_is_valid_cstat(union scsw *scsw) | 722 | static inline int scsw_tm_is_valid_cstat(union scsw *scsw) |
596 | { | 723 | { |
597 | return (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND) && | 724 | return (scsw->tm.stctl & SCSW_STCTL_STATUS_PEND) && |
598 | (scsw->tm.cc != 3); | 725 | (scsw->tm.cc != 3); |
599 | } | 726 | } |
600 | EXPORT_SYMBOL(scsw_tm_is_valid_cstat); | ||
601 | 727 | ||
602 | /** | 728 | /** |
603 | * scsw_tm_is_valid_fcxs - check fcxs field validity | 729 | * scsw_tm_is_valid_fcxs - check fcxs field validity |
@@ -606,11 +732,10 @@ EXPORT_SYMBOL(scsw_tm_is_valid_cstat); | |||
606 | * Return non-zero if the fcxs field of the specified transport mode scsw is | 732 | * Return non-zero if the fcxs field of the specified transport mode scsw is |
607 | * valid, zero otherwise. | 733 | * valid, zero otherwise. |
608 | */ | 734 | */ |
609 | int scsw_tm_is_valid_fcxs(union scsw *scsw) | 735 | static inline int scsw_tm_is_valid_fcxs(union scsw *scsw) |
610 | { | 736 | { |
611 | return 1; | 737 | return 1; |
612 | } | 738 | } |
613 | EXPORT_SYMBOL(scsw_tm_is_valid_fcxs); | ||
614 | 739 | ||
615 | /** | 740 | /** |
616 | * scsw_tm_is_valid_schxs - check schxs field validity | 741 | * scsw_tm_is_valid_schxs - check schxs field validity |
@@ -619,14 +744,13 @@ EXPORT_SYMBOL(scsw_tm_is_valid_fcxs); | |||
619 | * Return non-zero if the schxs field of the specified transport mode scsw is | 744 | * Return non-zero if the schxs field of the specified transport mode scsw is |
620 | * valid, zero otherwise. | 745 | * valid, zero otherwise. |
621 | */ | 746 | */ |
622 | int scsw_tm_is_valid_schxs(union scsw *scsw) | 747 | static inline int scsw_tm_is_valid_schxs(union scsw *scsw) |
623 | { | 748 | { |
624 | return (scsw->tm.cstat & (SCHN_STAT_PROG_CHECK | | 749 | return (scsw->tm.cstat & (SCHN_STAT_PROG_CHECK | |
625 | SCHN_STAT_INTF_CTRL_CHK | | 750 | SCHN_STAT_INTF_CTRL_CHK | |
626 | SCHN_STAT_PROT_CHECK | | 751 | SCHN_STAT_PROT_CHECK | |
627 | SCHN_STAT_CHN_DATA_CHK)); | 752 | SCHN_STAT_CHN_DATA_CHK)); |
628 | } | 753 | } |
629 | EXPORT_SYMBOL(scsw_tm_is_valid_schxs); | ||
630 | 754 | ||
631 | /** | 755 | /** |
632 | * scsw_is_valid_actl - check actl field validity | 756 | * scsw_is_valid_actl - check actl field validity |
@@ -636,14 +760,13 @@ EXPORT_SYMBOL(scsw_tm_is_valid_schxs); | |||
636 | * regardless of whether it is a transport mode or command mode scsw. | 760 | * regardless of whether it is a transport mode or command mode scsw. |
637 | * Return zero if the field does not contain a valid value. | 761 | * Return zero if the field does not contain a valid value. |
638 | */ | 762 | */ |
639 | int scsw_is_valid_actl(union scsw *scsw) | 763 | static inline int scsw_is_valid_actl(union scsw *scsw) |
640 | { | 764 | { |
641 | if (scsw_is_tm(scsw)) | 765 | if (scsw_is_tm(scsw)) |
642 | return scsw_tm_is_valid_actl(scsw); | 766 | return scsw_tm_is_valid_actl(scsw); |
643 | else | 767 | else |
644 | return scsw_cmd_is_valid_actl(scsw); | 768 | return scsw_cmd_is_valid_actl(scsw); |
645 | } | 769 | } |
646 | EXPORT_SYMBOL(scsw_is_valid_actl); | ||
647 | 770 | ||
648 | /** | 771 | /** |
649 | * scsw_is_valid_cc - check cc field validity | 772 | * scsw_is_valid_cc - check cc field validity |
@@ -653,14 +776,13 @@ EXPORT_SYMBOL(scsw_is_valid_actl); | |||
653 | * regardless of whether it is a transport mode or command mode scsw. | 776 | * regardless of whether it is a transport mode or command mode scsw. |
654 | * Return zero if the field does not contain a valid value. | 777 | * Return zero if the field does not contain a valid value. |
655 | */ | 778 | */ |
656 | int scsw_is_valid_cc(union scsw *scsw) | 779 | static inline int scsw_is_valid_cc(union scsw *scsw) |
657 | { | 780 | { |
658 | if (scsw_is_tm(scsw)) | 781 | if (scsw_is_tm(scsw)) |
659 | return scsw_tm_is_valid_cc(scsw); | 782 | return scsw_tm_is_valid_cc(scsw); |
660 | else | 783 | else |
661 | return scsw_cmd_is_valid_cc(scsw); | 784 | return scsw_cmd_is_valid_cc(scsw); |
662 | } | 785 | } |
663 | EXPORT_SYMBOL(scsw_is_valid_cc); | ||
664 | 786 | ||
665 | /** | 787 | /** |
666 | * scsw_is_valid_cstat - check cstat field validity | 788 | * scsw_is_valid_cstat - check cstat field validity |
@@ -670,14 +792,13 @@ EXPORT_SYMBOL(scsw_is_valid_cc); | |||
670 | * regardless of whether it is a transport mode or command mode scsw. | 792 | * regardless of whether it is a transport mode or command mode scsw. |
671 | * Return zero if the field does not contain a valid value. | 793 | * Return zero if the field does not contain a valid value. |
672 | */ | 794 | */ |
673 | int scsw_is_valid_cstat(union scsw *scsw) | 795 | static inline int scsw_is_valid_cstat(union scsw *scsw) |
674 | { | 796 | { |
675 | if (scsw_is_tm(scsw)) | 797 | if (scsw_is_tm(scsw)) |
676 | return scsw_tm_is_valid_cstat(scsw); | 798 | return scsw_tm_is_valid_cstat(scsw); |
677 | else | 799 | else |
678 | return scsw_cmd_is_valid_cstat(scsw); | 800 | return scsw_cmd_is_valid_cstat(scsw); |
679 | } | 801 | } |
680 | EXPORT_SYMBOL(scsw_is_valid_cstat); | ||
681 | 802 | ||
682 | /** | 803 | /** |
683 | * scsw_is_valid_dstat - check dstat field validity | 804 | * scsw_is_valid_dstat - check dstat field validity |
@@ -687,14 +808,13 @@ EXPORT_SYMBOL(scsw_is_valid_cstat); | |||
687 | * regardless of whether it is a transport mode or command mode scsw. | 808 | * regardless of whether it is a transport mode or command mode scsw. |
688 | * Return zero if the field does not contain a valid value. | 809 | * Return zero if the field does not contain a valid value. |
689 | */ | 810 | */ |
690 | int scsw_is_valid_dstat(union scsw *scsw) | 811 | static inline int scsw_is_valid_dstat(union scsw *scsw) |
691 | { | 812 | { |
692 | if (scsw_is_tm(scsw)) | 813 | if (scsw_is_tm(scsw)) |
693 | return scsw_tm_is_valid_dstat(scsw); | 814 | return scsw_tm_is_valid_dstat(scsw); |
694 | else | 815 | else |
695 | return scsw_cmd_is_valid_dstat(scsw); | 816 | return scsw_cmd_is_valid_dstat(scsw); |
696 | } | 817 | } |
697 | EXPORT_SYMBOL(scsw_is_valid_dstat); | ||
698 | 818 | ||
699 | /** | 819 | /** |
700 | * scsw_is_valid_ectl - check ectl field validity | 820 | * scsw_is_valid_ectl - check ectl field validity |
@@ -704,14 +824,13 @@ EXPORT_SYMBOL(scsw_is_valid_dstat); | |||
704 | * regardless of whether it is a transport mode or command mode scsw. | 824 | * regardless of whether it is a transport mode or command mode scsw. |
705 | * Return zero if the field does not contain a valid value. | 825 | * Return zero if the field does not contain a valid value. |
706 | */ | 826 | */ |
707 | int scsw_is_valid_ectl(union scsw *scsw) | 827 | static inline int scsw_is_valid_ectl(union scsw *scsw) |
708 | { | 828 | { |
709 | if (scsw_is_tm(scsw)) | 829 | if (scsw_is_tm(scsw)) |
710 | return scsw_tm_is_valid_ectl(scsw); | 830 | return scsw_tm_is_valid_ectl(scsw); |
711 | else | 831 | else |
712 | return scsw_cmd_is_valid_ectl(scsw); | 832 | return scsw_cmd_is_valid_ectl(scsw); |
713 | } | 833 | } |
714 | EXPORT_SYMBOL(scsw_is_valid_ectl); | ||
715 | 834 | ||
716 | /** | 835 | /** |
717 | * scsw_is_valid_eswf - check eswf field validity | 836 | * scsw_is_valid_eswf - check eswf field validity |
@@ -721,14 +840,13 @@ EXPORT_SYMBOL(scsw_is_valid_ectl); | |||
721 | * regardless of whether it is a transport mode or command mode scsw. | 840 | * regardless of whether it is a transport mode or command mode scsw. |
722 | * Return zero if the field does not contain a valid value. | 841 | * Return zero if the field does not contain a valid value. |
723 | */ | 842 | */ |
724 | int scsw_is_valid_eswf(union scsw *scsw) | 843 | static inline int scsw_is_valid_eswf(union scsw *scsw) |
725 | { | 844 | { |
726 | if (scsw_is_tm(scsw)) | 845 | if (scsw_is_tm(scsw)) |
727 | return scsw_tm_is_valid_eswf(scsw); | 846 | return scsw_tm_is_valid_eswf(scsw); |
728 | else | 847 | else |
729 | return scsw_cmd_is_valid_eswf(scsw); | 848 | return scsw_cmd_is_valid_eswf(scsw); |
730 | } | 849 | } |
731 | EXPORT_SYMBOL(scsw_is_valid_eswf); | ||
732 | 850 | ||
733 | /** | 851 | /** |
734 | * scsw_is_valid_fctl - check fctl field validity | 852 | * scsw_is_valid_fctl - check fctl field validity |
@@ -738,14 +856,13 @@ EXPORT_SYMBOL(scsw_is_valid_eswf); | |||
738 | * regardless of whether it is a transport mode or command mode scsw. | 856 | * regardless of whether it is a transport mode or command mode scsw. |
739 | * Return zero if the field does not contain a valid value. | 857 | * Return zero if the field does not contain a valid value. |
740 | */ | 858 | */ |
741 | int scsw_is_valid_fctl(union scsw *scsw) | 859 | static inline int scsw_is_valid_fctl(union scsw *scsw) |
742 | { | 860 | { |
743 | if (scsw_is_tm(scsw)) | 861 | if (scsw_is_tm(scsw)) |
744 | return scsw_tm_is_valid_fctl(scsw); | 862 | return scsw_tm_is_valid_fctl(scsw); |
745 | else | 863 | else |
746 | return scsw_cmd_is_valid_fctl(scsw); | 864 | return scsw_cmd_is_valid_fctl(scsw); |
747 | } | 865 | } |
748 | EXPORT_SYMBOL(scsw_is_valid_fctl); | ||
749 | 866 | ||
750 | /** | 867 | /** |
751 | * scsw_is_valid_key - check key field validity | 868 | * scsw_is_valid_key - check key field validity |
@@ -755,14 +872,13 @@ EXPORT_SYMBOL(scsw_is_valid_fctl); | |||
755 | * regardless of whether it is a transport mode or command mode scsw. | 872 | * regardless of whether it is a transport mode or command mode scsw. |
756 | * Return zero if the field does not contain a valid value. | 873 | * Return zero if the field does not contain a valid value. |
757 | */ | 874 | */ |
758 | int scsw_is_valid_key(union scsw *scsw) | 875 | static inline int scsw_is_valid_key(union scsw *scsw) |
759 | { | 876 | { |
760 | if (scsw_is_tm(scsw)) | 877 | if (scsw_is_tm(scsw)) |
761 | return scsw_tm_is_valid_key(scsw); | 878 | return scsw_tm_is_valid_key(scsw); |
762 | else | 879 | else |
763 | return scsw_cmd_is_valid_key(scsw); | 880 | return scsw_cmd_is_valid_key(scsw); |
764 | } | 881 | } |
765 | EXPORT_SYMBOL(scsw_is_valid_key); | ||
766 | 882 | ||
767 | /** | 883 | /** |
768 | * scsw_is_valid_pno - check pno field validity | 884 | * scsw_is_valid_pno - check pno field validity |
@@ -772,14 +888,13 @@ EXPORT_SYMBOL(scsw_is_valid_key); | |||
772 | * regardless of whether it is a transport mode or command mode scsw. | 888 | * regardless of whether it is a transport mode or command mode scsw. |
773 | * Return zero if the field does not contain a valid value. | 889 | * Return zero if the field does not contain a valid value. |
774 | */ | 890 | */ |
775 | int scsw_is_valid_pno(union scsw *scsw) | 891 | static inline int scsw_is_valid_pno(union scsw *scsw) |
776 | { | 892 | { |
777 | if (scsw_is_tm(scsw)) | 893 | if (scsw_is_tm(scsw)) |
778 | return scsw_tm_is_valid_pno(scsw); | 894 | return scsw_tm_is_valid_pno(scsw); |
779 | else | 895 | else |
780 | return scsw_cmd_is_valid_pno(scsw); | 896 | return scsw_cmd_is_valid_pno(scsw); |
781 | } | 897 | } |
782 | EXPORT_SYMBOL(scsw_is_valid_pno); | ||
783 | 898 | ||
784 | /** | 899 | /** |
785 | * scsw_is_valid_stctl - check stctl field validity | 900 | * scsw_is_valid_stctl - check stctl field validity |
@@ -789,14 +904,13 @@ EXPORT_SYMBOL(scsw_is_valid_pno); | |||
789 | * regardless of whether it is a transport mode or command mode scsw. | 904 | * regardless of whether it is a transport mode or command mode scsw. |
790 | * Return zero if the field does not contain a valid value. | 905 | * Return zero if the field does not contain a valid value. |
791 | */ | 906 | */ |
792 | int scsw_is_valid_stctl(union scsw *scsw) | 907 | static inline int scsw_is_valid_stctl(union scsw *scsw) |
793 | { | 908 | { |
794 | if (scsw_is_tm(scsw)) | 909 | if (scsw_is_tm(scsw)) |
795 | return scsw_tm_is_valid_stctl(scsw); | 910 | return scsw_tm_is_valid_stctl(scsw); |
796 | else | 911 | else |
797 | return scsw_cmd_is_valid_stctl(scsw); | 912 | return scsw_cmd_is_valid_stctl(scsw); |
798 | } | 913 | } |
799 | EXPORT_SYMBOL(scsw_is_valid_stctl); | ||
800 | 914 | ||
801 | /** | 915 | /** |
802 | * scsw_cmd_is_solicited - check for solicited scsw | 916 | * scsw_cmd_is_solicited - check for solicited scsw |
@@ -805,12 +919,11 @@ EXPORT_SYMBOL(scsw_is_valid_stctl); | |||
805 | * Return non-zero if the command mode scsw indicates that the associated | 919 | * Return non-zero if the command mode scsw indicates that the associated |
806 | * status condition is solicited, zero if it is unsolicited. | 920 | * status condition is solicited, zero if it is unsolicited. |
807 | */ | 921 | */ |
808 | int scsw_cmd_is_solicited(union scsw *scsw) | 922 | static inline int scsw_cmd_is_solicited(union scsw *scsw) |
809 | { | 923 | { |
810 | return (scsw->cmd.cc != 0) || (scsw->cmd.stctl != | 924 | return (scsw->cmd.cc != 0) || (scsw->cmd.stctl != |
811 | (SCSW_STCTL_STATUS_PEND | SCSW_STCTL_ALERT_STATUS)); | 925 | (SCSW_STCTL_STATUS_PEND | SCSW_STCTL_ALERT_STATUS)); |
812 | } | 926 | } |
813 | EXPORT_SYMBOL(scsw_cmd_is_solicited); | ||
814 | 927 | ||
815 | /** | 928 | /** |
816 | * scsw_tm_is_solicited - check for solicited scsw | 929 | * scsw_tm_is_solicited - check for solicited scsw |
@@ -819,12 +932,11 @@ EXPORT_SYMBOL(scsw_cmd_is_solicited); | |||
819 | * Return non-zero if the transport mode scsw indicates that the associated | 932 | * Return non-zero if the transport mode scsw indicates that the associated |
820 | * status condition is solicited, zero if it is unsolicited. | 933 | * status condition is solicited, zero if it is unsolicited. |
821 | */ | 934 | */ |
822 | int scsw_tm_is_solicited(union scsw *scsw) | 935 | static inline int scsw_tm_is_solicited(union scsw *scsw) |
823 | { | 936 | { |
824 | return (scsw->tm.cc != 0) || (scsw->tm.stctl != | 937 | return (scsw->tm.cc != 0) || (scsw->tm.stctl != |
825 | (SCSW_STCTL_STATUS_PEND | SCSW_STCTL_ALERT_STATUS)); | 938 | (SCSW_STCTL_STATUS_PEND | SCSW_STCTL_ALERT_STATUS)); |
826 | } | 939 | } |
827 | EXPORT_SYMBOL(scsw_tm_is_solicited); | ||
828 | 940 | ||
829 | /** | 941 | /** |
830 | * scsw_is_solicited - check for solicited scsw | 942 | * scsw_is_solicited - check for solicited scsw |
@@ -833,11 +945,12 @@ EXPORT_SYMBOL(scsw_tm_is_solicited); | |||
833 | * Return non-zero if the transport or command mode scsw indicates that the | 945 | * Return non-zero if the transport or command mode scsw indicates that the |
834 | * associated status condition is solicited, zero if it is unsolicited. | 946 | * associated status condition is solicited, zero if it is unsolicited. |
835 | */ | 947 | */ |
836 | int scsw_is_solicited(union scsw *scsw) | 948 | static inline int scsw_is_solicited(union scsw *scsw) |
837 | { | 949 | { |
838 | if (scsw_is_tm(scsw)) | 950 | if (scsw_is_tm(scsw)) |
839 | return scsw_tm_is_solicited(scsw); | 951 | return scsw_tm_is_solicited(scsw); |
840 | else | 952 | else |
841 | return scsw_cmd_is_solicited(scsw); | 953 | return scsw_cmd_is_solicited(scsw); |
842 | } | 954 | } |
843 | EXPORT_SYMBOL(scsw_is_solicited); | 955 | |
956 | #endif /* _ASM_S390_SCSW_H_ */ | ||
diff --git a/drivers/s390/cio/Makefile b/drivers/s390/cio/Makefile index adb3dd301528..fa4c9662f65e 100644 --- a/drivers/s390/cio/Makefile +++ b/drivers/s390/cio/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | # Makefile for the S/390 common i/o drivers | 2 | # Makefile for the S/390 common i/o drivers |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y += airq.o blacklist.o chsc.o cio.o css.o chp.o idset.o isc.o scsw.o \ | 5 | obj-y += airq.o blacklist.o chsc.o cio.o css.o chp.o idset.o isc.o \ |
6 | fcx.o itcw.o crw.o | 6 | fcx.o itcw.o crw.o |
7 | ccw_device-objs += device.o device_fsm.o device_ops.o | 7 | ccw_device-objs += device.o device_fsm.o device_ops.o |
8 | ccw_device-objs += device_id.o device_pgid.o device_status.o | 8 | ccw_device-objs += device_id.o device_pgid.o device_status.o |
diff --git a/drivers/s390/cio/chsc.h b/drivers/s390/cio/chsc.h index 425e8f89a6c5..37aa611d4ac5 100644 --- a/drivers/s390/cio/chsc.h +++ b/drivers/s390/cio/chsc.h | |||
@@ -37,29 +37,6 @@ struct channel_path_desc { | |||
37 | 37 | ||
38 | struct channel_path; | 38 | struct channel_path; |
39 | 39 | ||
40 | struct css_general_char { | ||
41 | u64 : 12; | ||
42 | u32 dynio : 1; /* bit 12 */ | ||
43 | u32 : 28; | ||
44 | u32 aif : 1; /* bit 41 */ | ||
45 | u32 : 3; | ||
46 | u32 mcss : 1; /* bit 45 */ | ||
47 | u32 fcs : 1; /* bit 46 */ | ||
48 | u32 : 1; | ||
49 | u32 ext_mb : 1; /* bit 48 */ | ||
50 | u32 : 7; | ||
51 | u32 aif_tdd : 1; /* bit 56 */ | ||
52 | u32 : 1; | ||
53 | u32 qebsm : 1; /* bit 58 */ | ||
54 | u32 : 8; | ||
55 | u32 aif_osa : 1; /* bit 67 */ | ||
56 | u32 : 14; | ||
57 | u32 cib : 1; /* bit 82 */ | ||
58 | u32 : 5; | ||
59 | u32 fcx : 1; /* bit 88 */ | ||
60 | u32 : 7; | ||
61 | }__attribute__((packed)); | ||
62 | |||
63 | struct css_chsc_char { | 40 | struct css_chsc_char { |
64 | u64 res; | 41 | u64 res; |
65 | u64 : 20; | 42 | u64 : 20; |
@@ -72,7 +49,6 @@ struct css_chsc_char { | |||
72 | u32 : 19; | 49 | u32 : 19; |
73 | }__attribute__((packed)); | 50 | }__attribute__((packed)); |
74 | 51 | ||
75 | extern struct css_general_char css_general_characteristics; | ||
76 | extern struct css_chsc_char css_chsc_characteristics; | 52 | extern struct css_chsc_char css_chsc_characteristics; |
77 | 53 | ||
78 | struct chsc_ssd_info { | 54 | struct chsc_ssd_info { |