/* INTx IRQ Domain operations */
 static const struct irq_domain_ops intx_domain_ops = {
        .map = xilinx_pcie_intx_map,
+       .xlate = pci_irqd_intx_xlate,
 };
 
 /* PCIe HW Functions */
                                   XILINX_PCIE_REG_RPIFR1);
 
                        /* Handle INTx Interrupt */
-                       val = ((val & XILINX_PCIE_RPIFR1_INTR_MASK) >>
-                               XILINX_PCIE_RPIFR1_INTR_SHIFT) + 1;
+                       val = (val & XILINX_PCIE_RPIFR1_INTR_MASK) >>
+                               XILINX_PCIE_RPIFR1_INTR_SHIFT;
                        generic_handle_irq(irq_find_mapping(port->leg_domain,
                                                            val));
                }
                return -ENODEV;
        }
 
-       port->leg_domain = irq_domain_add_linear(pcie_intc_node, 4,
+       port->leg_domain = irq_domain_add_linear(pcie_intc_node, PCI_NUM_INTX,
                                                 &intx_domain_ops,
                                                 port);
        if (!port->leg_domain) {