aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/chsc.h
diff options
context:
space:
mode:
authorCornelia Huck <cornelia.huck@de.ibm.com>2008-07-14 03:59:05 -0400
committerHeiko Carstens <heiko.carstens@de.ibm.com>2008-07-14 04:02:12 -0400
commit9d92a7e1b0d095c8be96ce5e592c6c5541684631 (patch)
tree22cfca810de07a7d7f87f17a89de0ae10d462038 /drivers/s390/cio/chsc.h
parent683c5418e6ac9f40f925dab6f547a5b0a4ad43c6 (diff)
[S390] cio: Add chsc subchannel driver.
This patch adds a driver for subchannels of type chsc. A device /dev/chsc is created which may be used to issue ioctls to: - obtain information about the machine's I/O configuration - dynamically change the machine's I/O configuration via asynchronous chsc commands Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/chsc.h')
-rw-r--r--drivers/s390/cio/chsc.h21
1 files changed, 15 insertions, 6 deletions
diff --git a/drivers/s390/cio/chsc.h b/drivers/s390/cio/chsc.h
index 2a38b5090228..fb6c4d6c45b4 100644
--- a/drivers/s390/cio/chsc.h
+++ b/drivers/s390/cio/chsc.h
@@ -4,7 +4,8 @@
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/device.h> 5#include <linux/device.h>
6#include <asm/chpid.h> 6#include <asm/chpid.h>
7#include "schid.h" 7#include <asm/chsc.h>
8#include <asm/schid.h>
8 9
9#define CHSC_SDA_OC_MSS 0x2 10#define CHSC_SDA_OC_MSS 0x2
10 11
@@ -37,11 +38,14 @@ struct channel_path_desc {
37struct channel_path; 38struct channel_path;
38 39
39struct css_general_char { 40struct css_general_char {
40 u64 : 41; 41 u64 : 12;
42 u32 dynio : 1; /* bit 12 */
43 u32 : 28;
41 u32 aif : 1; /* bit 41 */ 44 u32 aif : 1; /* bit 41 */
42 u32 : 3; 45 u32 : 3;
43 u32 mcss : 1; /* bit 45 */ 46 u32 mcss : 1; /* bit 45 */
44 u32 : 2; 47 u32 fcs : 1; /* bit 46 */
48 u32 : 1;
45 u32 ext_mb : 1; /* bit 48 */ 49 u32 ext_mb : 1; /* bit 48 */
46 u32 : 7; 50 u32 : 7;
47 u32 aif_tdd : 1; /* bit 56 */ 51 u32 aif_tdd : 1; /* bit 56 */
@@ -49,7 +53,9 @@ struct css_general_char {
49 u32 qebsm : 1; /* bit 58 */ 53 u32 qebsm : 1; /* bit 58 */
50 u32 : 8; 54 u32 : 8;
51 u32 aif_osa : 1; /* bit 67 */ 55 u32 aif_osa : 1; /* bit 67 */
52 u32 : 20; 56 u32 : 14;
57 u32 cib : 1; /* bit 82 */
58 u32 : 5;
53 u32 fcx : 1; /* bit 88 */ 59 u32 fcx : 1; /* bit 88 */
54 u32 : 7; 60 u32 : 7;
55}__attribute__((packed)); 61}__attribute__((packed));
@@ -86,8 +92,11 @@ struct channel_subsystem;
86extern int chsc_secm(struct channel_subsystem *, int); 92extern int chsc_secm(struct channel_subsystem *, int);
87 93
88int chsc_chp_vary(struct chp_id chpid, int on); 94int chsc_chp_vary(struct chp_id chpid, int on);
89int chsc_determine_channel_path_description(struct chp_id chpid, 95int chsc_determine_channel_path_desc(struct chp_id chpid, int fmt, int rfmt,
90 struct channel_path_desc *desc); 96 int c, int m,
97 struct chsc_response_struct *resp);
98int chsc_determine_base_channel_path_desc(struct chp_id chpid,
99 struct channel_path_desc *desc);
91void chsc_chp_online(struct chp_id chpid); 100void chsc_chp_online(struct chp_id chpid);
92void chsc_chp_offline(struct chp_id chpid); 101void chsc_chp_offline(struct chp_id chpid);
93int chsc_get_channel_measurement_chars(struct channel_path *chp); 102int chsc_get_channel_measurement_chars(struct channel_path *chp);