]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/s390/cio/chp.h
Merge branch 'master' into csb1725
[mv-sheeva.git] / drivers / s390 / cio / chp.h
index 26c3d22461764b56630958bbbfa6cb9714b166b0..12b4903d6fe373f171b83a8a8a7d9ffc2e9a8b26 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  drivers/s390/cio/chp.h
  *
- *    Copyright IBM Corp. 2007
+ *    Copyright IBM Corp. 2007,2010
  *    Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
  */
 
@@ -10,6 +10,7 @@
 
 #include <linux/types.h>
 #include <linux/device.h>
+#include <linux/mutex.h>
 #include <asm/chpid.h>
 #include "chsc.h"
 #include "css.h"
@@ -40,16 +41,23 @@ static inline int chp_test_bit(u8 *bitmap, int num)
 
 
 struct channel_path {
+       struct device dev;
        struct chp_id chpid;
+       struct mutex lock; /* Serialize access to below members. */
        int state;
        struct channel_path_desc desc;
        /* Channel-measurement related stuff: */
        int cmg;
        int shared;
        void *cmg_chars;
-       struct device dev;
 };
 
+/* Return channel_path struct for given chpid. */
+static inline struct channel_path *chpid_to_chp(struct chp_id chpid)
+{
+       return channel_subsystems[chpid.cssid]->chps[chpid.id];
+}
+
 int chp_get_status(struct chp_id chpid);
 u8 chp_get_sch_opm(struct subchannel *sch);
 int chp_is_registered(struct chp_id chpid);