]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/s390/cio/chsc.h
[S390] cio: Cleanup crw interface.
[linux-2.6-omap-h63xx.git] / drivers / s390 / cio / chsc.h
index 0fb2b024208f2ce07faea9661fb1eefe4f0cf737..3b7c044d8453411c4be0aee3daf93935285fc5f1 100644 (file)
@@ -1,9 +1,10 @@
 #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
 
@@ -33,23 +34,7 @@ struct channel_path_desc {
        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;
-};
-
-extern void s390_process_css( void );
-extern void chsc_validate_chpids(struct subchannel *);
-extern void chpid_is_actually_online(int);
-extern int css_get_ssd_info(struct subchannel *);
-extern int chsc_process_crw(void);
-extern int chp_process_crw(int, int);
+struct channel_path;
 
 struct css_general_char {
        u64 : 41;
@@ -82,15 +67,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