]> err.no Git - linux-2.6/blobdiff - drivers/s390/cio/chsc.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6
[linux-2.6] / drivers / s390 / cio / chsc.h
index a259245780ae7465d1be49fe442c076d32324585..d1f5db1e69b94d6eee24aef06351fdb515abc1e4 100644 (file)
@@ -1,26 +1,27 @@
 #ifndef S390_CHSC_H
 #define S390_CHSC_H
 
-#define CHSC_SEI_ACC_CHPID        1
-#define CHSC_SEI_ACC_LINKADDR     2
-#define CHSC_SEI_ACC_FULLLINKADDR 3
+#include <linux/types.h>
+#include <linux/device.h>
+#include <asm/chpid.h>
+#include "schid.h"
 
 #define CHSC_SDA_OC_MSS   0x2
 
 struct chsc_header {
        u16 length;
        u16 code;
-};
+} __attribute__ ((packed));
 
 #define NR_MEASUREMENT_CHARS 5
 struct cmg_chars {
        u32 values[NR_MEASUREMENT_CHARS];
-};
+} __attribute__ ((packed));
 
 #define NR_MEASUREMENT_ENTRIES 8
 struct cmg_entry {
        u32 values[NR_MEASUREMENT_ENTRIES];
-};
+} __attribute__ ((packed));
 
 struct channel_path_desc {
        u8 flags;
@@ -31,22 +32,11 @@ struct channel_path_desc {
        u8 zeroes;
        u8 chla;
        u8 chpp;
-};
+} __attribute__ ((packed));
 
-struct channel_path {
-       int id;
-       int state;
-       struct channel_path_desc desc;
-       /* Channel-measurement related stuff: */
-       int cmg;
-       int shared;
-       void *cmg_chars;
-       struct device dev;
-};
+struct channel_path;
 
-extern void s390_process_css( void );
-extern void chsc_validate_chpids(struct subchannel *);
-extern void chpid_is_actually_online(int);
+extern void chsc_process_crw(void);
 
 struct css_general_char {
        u64 : 41;
@@ -79,15 +69,28 @@ struct css_chsc_char {
 extern struct css_general_char css_general_characteristics;
 extern struct css_chsc_char css_chsc_characteristics;
 
+struct chsc_ssd_info {
+       u8 path_mask;
+       u8 fla_valid_mask;
+       struct chp_id chpid[8];
+       u16 fla[8];
+};
+extern int chsc_get_ssd_info(struct subchannel_id schid,
+                            struct chsc_ssd_info *ssd);
 extern int chsc_determine_css_characteristics(void);
 extern int css_characteristics_avail;
-
-extern void *chsc_get_chp_desc(struct subchannel*, int);
+extern int chsc_alloc_sei_area(void);
+extern void chsc_free_sei_area(void);
 
 extern int chsc_enable_facility(int);
 struct channel_subsystem;
 extern int chsc_secm(struct channel_subsystem *, int);
 
-#define to_channelpath(device) container_of(device, struct channel_path, dev)
+int chsc_chp_vary(struct chp_id chpid, int on);
+int chsc_determine_channel_path_description(struct chp_id chpid,
+                                           struct channel_path_desc *desc);
+void chsc_chp_online(struct chp_id chpid);
+void chsc_chp_offline(struct chp_id chpid);
+int chsc_get_channel_measurement_chars(struct channel_path *chp);
 
 #endif