#include "vfio_ccw_private.h"
 
-static int vfio_ccw_mdev_reset(struct mdev_device *mdev)
+static int vfio_ccw_mdev_reset(struct vfio_ccw_private *private)
 {
-       struct vfio_ccw_private *private;
        struct subchannel *sch;
        int ret;
 
-       private = dev_get_drvdata(mdev_parent_dev(mdev));
        sch = private->sch;
        /*
         * TODO:
                if (!cp_iova_pinned(&private->cp, unmap->iova))
                        return NOTIFY_OK;
 
-               if (vfio_ccw_mdev_reset(private->mdev))
+               if (vfio_ccw_mdev_reset(private))
                        return NOTIFY_BAD;
 
                cp_free(&private->cp);
 
        if ((private->state != VFIO_CCW_STATE_NOT_OPER) &&
            (private->state != VFIO_CCW_STATE_STANDBY)) {
-               if (!vfio_ccw_mdev_reset(mdev))
+               if (!vfio_ccw_mdev_reset(private))
                        private->state = VFIO_CCW_STATE_STANDBY;
                /* The state will be NOT_OPER on error. */
        }
        return -EINVAL;
 }
 
-static int vfio_ccw_mdev_get_device_info(struct vfio_device_info *info,
-                                        struct mdev_device *mdev)
+static int vfio_ccw_mdev_get_device_info(struct vfio_ccw_private *private,
+                                        struct vfio_device_info *info)
 {
-       struct vfio_ccw_private *private;
-
-       private = dev_get_drvdata(mdev_parent_dev(mdev));
        info->flags = VFIO_DEVICE_FLAGS_CCW | VFIO_DEVICE_FLAGS_RESET;
        info->num_regions = VFIO_CCW_NUM_REGIONS + private->num_regions;
        info->num_irqs = VFIO_CCW_NUM_IRQS;
        return 0;
 }
 
-static int vfio_ccw_mdev_get_region_info(struct vfio_region_info *info,
-                                        struct mdev_device *mdev,
+static int vfio_ccw_mdev_get_region_info(struct vfio_ccw_private *private,
+                                        struct vfio_region_info *info,
                                         unsigned long arg)
 {
-       struct vfio_ccw_private *private;
        int i;
 
-       private = dev_get_drvdata(mdev_parent_dev(mdev));
        switch (info->index) {
        case VFIO_CCW_CONFIG_REGION_INDEX:
                info->offset = 0;
        return 0;
 }
 
-static int vfio_ccw_mdev_set_irqs(struct mdev_device *mdev,
+static int vfio_ccw_mdev_set_irqs(struct vfio_ccw_private *private,
                                  uint32_t flags,
                                  uint32_t index,
                                  void __user *data)
 {
-       struct vfio_ccw_private *private;
        struct eventfd_ctx **ctx;
 
        if (!(flags & VFIO_IRQ_SET_ACTION_TRIGGER))
                return -EINVAL;
 
-       private = dev_get_drvdata(mdev_parent_dev(mdev));
-
        switch (index) {
        case VFIO_CCW_IO_IRQ_INDEX:
                ctx = &private->io_trigger;
                                   unsigned int cmd,
                                   unsigned long arg)
 {
+       struct vfio_ccw_private *private =
+               dev_get_drvdata(mdev_parent_dev(mdev));
        int ret = 0;
        unsigned long minsz;
 
                if (info.argsz < minsz)
                        return -EINVAL;
 
-               ret = vfio_ccw_mdev_get_device_info(&info, mdev);
+               ret = vfio_ccw_mdev_get_device_info(private, &info);
                if (ret)
                        return ret;
 
                if (info.argsz < minsz)
                        return -EINVAL;
 
-               ret = vfio_ccw_mdev_get_region_info(&info, mdev, arg);
+               ret = vfio_ccw_mdev_get_region_info(private, &info, arg);
                if (ret)
                        return ret;
 
                        return ret;
 
                data = (void __user *)(arg + minsz);
-               return vfio_ccw_mdev_set_irqs(mdev, hdr.flags, hdr.index, data);
+               return vfio_ccw_mdev_set_irqs(private, hdr.flags, hdr.index,
+                                             data);
        }
        case VFIO_DEVICE_RESET:
-               return vfio_ccw_mdev_reset(mdev);
+               return vfio_ccw_mdev_reset(private);
        default:
                return -ENOTTY;
        }