Merge tag 's390-5.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[platform/kernel/linux-starfive.git] / drivers / s390 / cio / qdio_main.c
index 02ced59..c890848 100644 (file)
@@ -1100,9 +1100,8 @@ int qdio_get_ssqd_desc(struct ccw_device *cdev,
 }
 EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc);
 
-static void qdio_shutdown_queues(struct ccw_device *cdev)
+static void qdio_shutdown_queues(struct qdio_irq *irq_ptr)
 {
-       struct qdio_irq *irq_ptr = cdev->private->qdio_data;
        struct qdio_q *q;
        int i;
 
@@ -1150,7 +1149,7 @@ int qdio_shutdown(struct ccw_device *cdev, int how)
        qdio_set_state(irq_ptr, QDIO_IRQ_STATE_STOPPED);
 
        tiqdio_remove_device(irq_ptr);
-       qdio_shutdown_queues(cdev);
+       qdio_shutdown_queues(irq_ptr);
        qdio_shutdown_debug_entries(irq_ptr);
 
        /* cleanup subchannel */
@@ -1225,10 +1224,11 @@ EXPORT_SYMBOL_GPL(qdio_free);
  */
 int qdio_allocate(struct qdio_initialize *init_data)
 {
+       struct ccw_device *cdev = init_data->cdev;
        struct subchannel_id schid;
        struct qdio_irq *irq_ptr;
 
-       ccw_device_get_schid(init_data->cdev, &schid);
+       ccw_device_get_schid(cdev, &schid);
        DBF_EVENT("qallocate:%4x", schid.sch_no);
 
        if ((init_data->no_input_qs && !init_data->input_handler) ||
@@ -1248,6 +1248,7 @@ int qdio_allocate(struct qdio_initialize *init_data)
        if (!irq_ptr)
                goto out_err;
 
+       irq_ptr->cdev = cdev;
        mutex_init(&irq_ptr->setup_mutex);
        if (qdio_allocate_dbf(init_data, irq_ptr))
                goto out_rel;
@@ -1272,7 +1273,7 @@ int qdio_allocate(struct qdio_initialize *init_data)
                goto out_rel;
 
        INIT_LIST_HEAD(&irq_ptr->entry);
-       init_data->cdev->private->qdio_data = irq_ptr;
+       cdev->private->qdio_data = irq_ptr;
        qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE);
        return 0;
 out_rel:
@@ -1311,19 +1312,18 @@ static void qdio_detect_hsicq(struct qdio_irq *irq_ptr)
 int qdio_establish(struct qdio_initialize *init_data)
 {
        struct ccw_device *cdev = init_data->cdev;
+       struct qdio_irq *irq_ptr = cdev->private->qdio_data;
        struct subchannel_id schid;
-       struct qdio_irq *irq_ptr;
        int rc;
 
        ccw_device_get_schid(cdev, &schid);
        DBF_EVENT("qestablish:%4x", schid.sch_no);
 
-       irq_ptr = cdev->private->qdio_data;
        if (!irq_ptr)
                return -ENODEV;
 
        mutex_lock(&irq_ptr->setup_mutex);
-       qdio_setup_irq(init_data);
+       qdio_setup_irq(irq_ptr, init_data);
 
        rc = qdio_establish_thinint(irq_ptr);
        if (rc) {
@@ -1369,8 +1369,8 @@ int qdio_establish(struct qdio_initialize *init_data)
        qdio_init_buf_states(irq_ptr);
 
        mutex_unlock(&irq_ptr->setup_mutex);
-       qdio_print_subchannel_info(irq_ptr, cdev);
-       qdio_setup_debug_entries(irq_ptr, cdev);
+       qdio_print_subchannel_info(irq_ptr);
+       qdio_setup_debug_entries(irq_ptr);
        return 0;
 }
 EXPORT_SYMBOL_GPL(qdio_establish);
@@ -1381,14 +1381,13 @@ EXPORT_SYMBOL_GPL(qdio_establish);
  */
 int qdio_activate(struct ccw_device *cdev)
 {
+       struct qdio_irq *irq_ptr = cdev->private->qdio_data;
        struct subchannel_id schid;
-       struct qdio_irq *irq_ptr;
        int rc;
 
        ccw_device_get_schid(cdev, &schid);
        DBF_EVENT("qactivate:%4x", schid.sch_no);
 
-       irq_ptr = cdev->private->qdio_data;
        if (!irq_ptr)
                return -ENODEV;