* @desc_size: HW descriptor size
  * @npendings: number of pending descriptors (for which tx_submit has
  * @hw_queue_idx: HW queue index
- * @msi_desc: local interrupt descriptor information
+ * @irq: The Linux interrupt number
  * been called, but not yet issue_pending)
  */
 struct mv_xor_v2_device {
        int desc_size;
        unsigned int npendings;
        unsigned int hw_queue_idx;
-       struct msi_desc *msi_desc;
+       unsigned int irq;
 };
 
 /**
        int i, ret = 0;
        struct dma_device *dma_dev;
        struct mv_xor_v2_sw_desc *sw_desc;
-       struct msi_desc *msi_desc;
 
        BUILD_BUG_ON(sizeof(struct mv_xor_v2_descriptor) !=
                     MV_XOR_V2_EXT_DESC_SIZE);
        if (ret)
                goto disable_clk;
 
-       msi_desc = first_msi_entry(&pdev->dev);
-       if (!msi_desc) {
-               ret = -ENODEV;
-               goto free_msi_irqs;
-       }
-       xor_dev->msi_desc = msi_desc;
+       xor_dev->irq = msi_get_virq(&pdev->dev, 0);
 
-       ret = devm_request_irq(&pdev->dev, msi_desc->irq,
+       ret = devm_request_irq(&pdev->dev, xor_dev->irq,
                               mv_xor_v2_interrupt_handler, 0,
                               dev_name(&pdev->dev), xor_dev);
        if (ret)
                          xor_dev->desc_size * MV_XOR_V2_DESC_NUM,
                          xor_dev->hw_desq_virt, xor_dev->hw_desq);
 
-       devm_free_irq(&pdev->dev, xor_dev->msi_desc->irq, xor_dev);
+       devm_free_irq(&pdev->dev, xor_dev->irq, xor_dev);
 
        platform_msi_domain_free_irqs(&pdev->dev);