|
@@ -10,6 +10,7 @@
|
|
|
struct io_subchannel_private {
|
|
|
union orb orb; /* operation request block */
|
|
|
struct ccw1 sense_ccw; /* static ccw for sense command */
|
|
|
+ struct ccw_device *cdev;/* pointer to the child ccw device */
|
|
|
struct {
|
|
|
unsigned int suspend:1; /* allow suspend */
|
|
|
unsigned int prefetch:1;/* deny prefetch */
|
|
@@ -18,8 +19,20 @@ struct io_subchannel_private {
|
|
|
} __aligned(8);
|
|
|
|
|
|
#define to_io_private(n) ((struct io_subchannel_private *)n->private)
|
|
|
-#define sch_get_cdev(n) (dev_get_drvdata(&n->dev))
|
|
|
-#define sch_set_cdev(n, c) (dev_set_drvdata(&n->dev, c))
|
|
|
+
|
|
|
+static inline struct ccw_device *sch_get_cdev(struct subchannel *sch)
|
|
|
+{
|
|
|
+ struct io_subchannel_private *priv = to_io_private(sch);
|
|
|
+ return priv ? priv->cdev : NULL;
|
|
|
+}
|
|
|
+
|
|
|
+static inline void sch_set_cdev(struct subchannel *sch,
|
|
|
+ struct ccw_device *cdev)
|
|
|
+{
|
|
|
+ struct io_subchannel_private *priv = to_io_private(sch);
|
|
|
+ if (priv)
|
|
|
+ priv->cdev = cdev;
|
|
|
+}
|
|
|
|
|
|
#define MAX_CIWS 8
|
|
|
|