Commit 9256608a authored by Jens Korinth's avatar Jens Korinth
Browse files

Merge branch 'vc709-driver-improvements' into '2017.2'

Vc709 driver improvements

See merge request !10
parents e9cffe94 9487b61b
......@@ -300,18 +300,6 @@ static int dma_initialize(void) {
fflink_notice("Initializing private data");
dma_init_pdata(&priv_data);
dma_set_mask_and_coherent(&get_pcie_dev()->dev, DMA_BIT_MASK(DMA_MAX_BIT));
/* get buffers for dma, this could possibly go wrong */
if(DMA_MAX_BIT == 32) {
zone = GFP_DMA32;
} else if (DMA_MAX_BIT == 64) {
zone = GFP_DMA32;
} else {
fflink_warn("Wrong bit mask setting - only 32/64 supported, but have %d\n", DMA_MAX_BIT);
err_return = -EFAULT;
goto open_failed;
}
err_1 = dma_alloc_pbufs(&priv_data.kvirt_h2l, &priv_data.dma_handle_h2l, zone, PCI_DMA_TODEVICE);
err_2 = dma_alloc_pbufs(&priv_data.kvirt_l2h, &priv_data.dma_handle_l2h, zone, PCI_DMA_FROMDEVICE);
......@@ -327,7 +315,6 @@ static int dma_initialize(void) {
open_failed_deinit:
dma_free_pbufs(priv_data.kvirt_h2l, priv_data.dma_handle_h2l, PCI_DMA_TODEVICE);
dma_free_pbufs(priv_data.kvirt_l2h, priv_data.dma_handle_l2h, PCI_DMA_FROMDEVICE);
open_failed:
return err_return;
}
......
......@@ -309,19 +309,143 @@ static int user_mmap(struct file *filp, struct vm_area_struct *vma)
* @param dev_id magic number for interrupt sharing (not needed)
* @return Tells OS, that irq is handled properly
* */
irqreturn_t intr_handler_user(int irq, void * dev_id)
{
int irq_translated = pcie_translate_irq_number(irq) - 4;
if (irq_translated != -1) {
fflink_info("User interrupt for IRQ %d called with irq %d\n", irq_translated, irq);
priv_data.user_condition[irq_translated] += 1;
wake_up_interruptible_sync(&priv_data.user_wait_queue[irq_translated]);
} else {
fflink_info("Illegal interrupt %d\n", irq);
}
return IRQ_HANDLED;
#define DEFINE_USER_INTR_HANDLER(nr) \
irqreturn_t intr_handler_user_ ## nr(int irq, void * dev_id) \
{ \
priv_data.user_condition[nr] += 1; \
wake_up_interruptible_sync(&priv_data.user_wait_queue[nr]); \
return IRQ_HANDLED; \
}
DEFINE_USER_INTR_HANDLER(0);
DEFINE_USER_INTR_HANDLER(1);
DEFINE_USER_INTR_HANDLER(2);
DEFINE_USER_INTR_HANDLER(3);
DEFINE_USER_INTR_HANDLER(4);
DEFINE_USER_INTR_HANDLER(5);
DEFINE_USER_INTR_HANDLER(6);
DEFINE_USER_INTR_HANDLER(7);
DEFINE_USER_INTR_HANDLER(8);
DEFINE_USER_INTR_HANDLER(9);
DEFINE_USER_INTR_HANDLER(10);
DEFINE_USER_INTR_HANDLER(11);
DEFINE_USER_INTR_HANDLER(12);
DEFINE_USER_INTR_HANDLER(13);
DEFINE_USER_INTR_HANDLER(14);
DEFINE_USER_INTR_HANDLER(15);
DEFINE_USER_INTR_HANDLER(16);
DEFINE_USER_INTR_HANDLER(17);
DEFINE_USER_INTR_HANDLER(18);
DEFINE_USER_INTR_HANDLER(19);
DEFINE_USER_INTR_HANDLER(20);
DEFINE_USER_INTR_HANDLER(21);
DEFINE_USER_INTR_HANDLER(22);
DEFINE_USER_INTR_HANDLER(23);
DEFINE_USER_INTR_HANDLER(24);
DEFINE_USER_INTR_HANDLER(25);
DEFINE_USER_INTR_HANDLER(26);
DEFINE_USER_INTR_HANDLER(27);
DEFINE_USER_INTR_HANDLER(28);
DEFINE_USER_INTR_HANDLER(29);
DEFINE_USER_INTR_HANDLER(30);
DEFINE_USER_INTR_HANDLER(31);
DEFINE_USER_INTR_HANDLER(32);
DEFINE_USER_INTR_HANDLER(33);
DEFINE_USER_INTR_HANDLER(34);
DEFINE_USER_INTR_HANDLER(35);
DEFINE_USER_INTR_HANDLER(36);
DEFINE_USER_INTR_HANDLER(37);
DEFINE_USER_INTR_HANDLER(38);
DEFINE_USER_INTR_HANDLER(39);
DEFINE_USER_INTR_HANDLER(40);
DEFINE_USER_INTR_HANDLER(41);
DEFINE_USER_INTR_HANDLER(42);
DEFINE_USER_INTR_HANDLER(43);
DEFINE_USER_INTR_HANDLER(44);
DEFINE_USER_INTR_HANDLER(45);
DEFINE_USER_INTR_HANDLER(46);
DEFINE_USER_INTR_HANDLER(47);
DEFINE_USER_INTR_HANDLER(48);
DEFINE_USER_INTR_HANDLER(49);
DEFINE_USER_INTR_HANDLER(50);
DEFINE_USER_INTR_HANDLER(51);
DEFINE_USER_INTR_HANDLER(52);
DEFINE_USER_INTR_HANDLER(53);
DEFINE_USER_INTR_HANDLER(54);
DEFINE_USER_INTR_HANDLER(55);
DEFINE_USER_INTR_HANDLER(56);
DEFINE_USER_INTR_HANDLER(57);
DEFINE_USER_INTR_HANDLER(58);
DEFINE_USER_INTR_HANDLER(59);
DEFINE_USER_INTR_HANDLER(60);
DEFINE_USER_INTR_HANDLER(61);
DEFINE_USER_INTR_HANDLER(62);
DEFINE_USER_INTR_HANDLER(63);
DEFINE_USER_INTR_HANDLER(64);
DEFINE_USER_INTR_HANDLER(65);
DEFINE_USER_INTR_HANDLER(66);
DEFINE_USER_INTR_HANDLER(67);
DEFINE_USER_INTR_HANDLER(68);
DEFINE_USER_INTR_HANDLER(69);
DEFINE_USER_INTR_HANDLER(70);
DEFINE_USER_INTR_HANDLER(71);
DEFINE_USER_INTR_HANDLER(72);
DEFINE_USER_INTR_HANDLER(73);
DEFINE_USER_INTR_HANDLER(74);
DEFINE_USER_INTR_HANDLER(75);
DEFINE_USER_INTR_HANDLER(76);
DEFINE_USER_INTR_HANDLER(77);
DEFINE_USER_INTR_HANDLER(78);
DEFINE_USER_INTR_HANDLER(79);
DEFINE_USER_INTR_HANDLER(80);
DEFINE_USER_INTR_HANDLER(81);
DEFINE_USER_INTR_HANDLER(82);
DEFINE_USER_INTR_HANDLER(83);
DEFINE_USER_INTR_HANDLER(84);
DEFINE_USER_INTR_HANDLER(85);
DEFINE_USER_INTR_HANDLER(86);
DEFINE_USER_INTR_HANDLER(87);
DEFINE_USER_INTR_HANDLER(88);
DEFINE_USER_INTR_HANDLER(89);
DEFINE_USER_INTR_HANDLER(90);
DEFINE_USER_INTR_HANDLER(91);
DEFINE_USER_INTR_HANDLER(92);
DEFINE_USER_INTR_HANDLER(93);
DEFINE_USER_INTR_HANDLER(94);
DEFINE_USER_INTR_HANDLER(95);
DEFINE_USER_INTR_HANDLER(96);
DEFINE_USER_INTR_HANDLER(97);
DEFINE_USER_INTR_HANDLER(98);
DEFINE_USER_INTR_HANDLER(99);
DEFINE_USER_INTR_HANDLER(100);
DEFINE_USER_INTR_HANDLER(101);
DEFINE_USER_INTR_HANDLER(102);
DEFINE_USER_INTR_HANDLER(103);
DEFINE_USER_INTR_HANDLER(104);
DEFINE_USER_INTR_HANDLER(105);
DEFINE_USER_INTR_HANDLER(106);
DEFINE_USER_INTR_HANDLER(107);
DEFINE_USER_INTR_HANDLER(108);
DEFINE_USER_INTR_HANDLER(109);
DEFINE_USER_INTR_HANDLER(110);
DEFINE_USER_INTR_HANDLER(111);
DEFINE_USER_INTR_HANDLER(112);
DEFINE_USER_INTR_HANDLER(113);
DEFINE_USER_INTR_HANDLER(114);
DEFINE_USER_INTR_HANDLER(115);
DEFINE_USER_INTR_HANDLER(116);
DEFINE_USER_INTR_HANDLER(117);
DEFINE_USER_INTR_HANDLER(118);
DEFINE_USER_INTR_HANDLER(119);
DEFINE_USER_INTR_HANDLER(120);
DEFINE_USER_INTR_HANDLER(121);
DEFINE_USER_INTR_HANDLER(122);
DEFINE_USER_INTR_HANDLER(123);
DEFINE_USER_INTR_HANDLER(124);
DEFINE_USER_INTR_HANDLER(125);
DEFINE_USER_INTR_HANDLER(126);
DEFINE_USER_INTR_HANDLER(127);
/******************************************************************************/
/* helper functions externally called e.g. to (un/)load this char device */
......
......@@ -35,7 +35,136 @@ void char_user_unregister(void);
/******************************************************************************/
/* interrupt handler used by user cores registered in pcie_device.c */
irqreturn_t intr_handler_user(int irq, void * dev_id);
#define DECLARE_INTR_HANDLER_USER(nr) irqreturn_t intr_handler_user_ ## nr(int irq, void * dev_id)
DECLARE_INTR_HANDLER_USER(0);
DECLARE_INTR_HANDLER_USER(1);
DECLARE_INTR_HANDLER_USER(2);
DECLARE_INTR_HANDLER_USER(3);
DECLARE_INTR_HANDLER_USER(4);
DECLARE_INTR_HANDLER_USER(5);
DECLARE_INTR_HANDLER_USER(6);
DECLARE_INTR_HANDLER_USER(7);
DECLARE_INTR_HANDLER_USER(8);
DECLARE_INTR_HANDLER_USER(9);
DECLARE_INTR_HANDLER_USER(10);
DECLARE_INTR_HANDLER_USER(11);
DECLARE_INTR_HANDLER_USER(12);
DECLARE_INTR_HANDLER_USER(13);
DECLARE_INTR_HANDLER_USER(14);
DECLARE_INTR_HANDLER_USER(15);
DECLARE_INTR_HANDLER_USER(16);
DECLARE_INTR_HANDLER_USER(17);
DECLARE_INTR_HANDLER_USER(18);
DECLARE_INTR_HANDLER_USER(19);
DECLARE_INTR_HANDLER_USER(20);
DECLARE_INTR_HANDLER_USER(21);
DECLARE_INTR_HANDLER_USER(22);
DECLARE_INTR_HANDLER_USER(23);
DECLARE_INTR_HANDLER_USER(24);
DECLARE_INTR_HANDLER_USER(25);
DECLARE_INTR_HANDLER_USER(26);
DECLARE_INTR_HANDLER_USER(27);
DECLARE_INTR_HANDLER_USER(28);
DECLARE_INTR_HANDLER_USER(29);
DECLARE_INTR_HANDLER_USER(30);
DECLARE_INTR_HANDLER_USER(31);
DECLARE_INTR_HANDLER_USER(32);
DECLARE_INTR_HANDLER_USER(33);
DECLARE_INTR_HANDLER_USER(34);
DECLARE_INTR_HANDLER_USER(35);
DECLARE_INTR_HANDLER_USER(36);
DECLARE_INTR_HANDLER_USER(37);
DECLARE_INTR_HANDLER_USER(38);
DECLARE_INTR_HANDLER_USER(39);
DECLARE_INTR_HANDLER_USER(40);
DECLARE_INTR_HANDLER_USER(41);
DECLARE_INTR_HANDLER_USER(42);
DECLARE_INTR_HANDLER_USER(43);
DECLARE_INTR_HANDLER_USER(44);
DECLARE_INTR_HANDLER_USER(45);
DECLARE_INTR_HANDLER_USER(46);
DECLARE_INTR_HANDLER_USER(47);
DECLARE_INTR_HANDLER_USER(48);
DECLARE_INTR_HANDLER_USER(49);
DECLARE_INTR_HANDLER_USER(50);
DECLARE_INTR_HANDLER_USER(51);
DECLARE_INTR_HANDLER_USER(52);
DECLARE_INTR_HANDLER_USER(53);
DECLARE_INTR_HANDLER_USER(54);
DECLARE_INTR_HANDLER_USER(55);
DECLARE_INTR_HANDLER_USER(56);
DECLARE_INTR_HANDLER_USER(57);
DECLARE_INTR_HANDLER_USER(58);
DECLARE_INTR_HANDLER_USER(59);
DECLARE_INTR_HANDLER_USER(60);
DECLARE_INTR_HANDLER_USER(61);
DECLARE_INTR_HANDLER_USER(62);
DECLARE_INTR_HANDLER_USER(63);
DECLARE_INTR_HANDLER_USER(64);
DECLARE_INTR_HANDLER_USER(65);
DECLARE_INTR_HANDLER_USER(66);
DECLARE_INTR_HANDLER_USER(67);
DECLARE_INTR_HANDLER_USER(68);
DECLARE_INTR_HANDLER_USER(69);
DECLARE_INTR_HANDLER_USER(70);
DECLARE_INTR_HANDLER_USER(71);
DECLARE_INTR_HANDLER_USER(72);
DECLARE_INTR_HANDLER_USER(73);
DECLARE_INTR_HANDLER_USER(74);
DECLARE_INTR_HANDLER_USER(75);
DECLARE_INTR_HANDLER_USER(76);
DECLARE_INTR_HANDLER_USER(77);
DECLARE_INTR_HANDLER_USER(78);
DECLARE_INTR_HANDLER_USER(79);
DECLARE_INTR_HANDLER_USER(80);
DECLARE_INTR_HANDLER_USER(81);
DECLARE_INTR_HANDLER_USER(82);
DECLARE_INTR_HANDLER_USER(83);
DECLARE_INTR_HANDLER_USER(84);
DECLARE_INTR_HANDLER_USER(85);
DECLARE_INTR_HANDLER_USER(86);
DECLARE_INTR_HANDLER_USER(87);
DECLARE_INTR_HANDLER_USER(88);
DECLARE_INTR_HANDLER_USER(89);
DECLARE_INTR_HANDLER_USER(90);
DECLARE_INTR_HANDLER_USER(91);
DECLARE_INTR_HANDLER_USER(92);
DECLARE_INTR_HANDLER_USER(93);
DECLARE_INTR_HANDLER_USER(94);
DECLARE_INTR_HANDLER_USER(95);
DECLARE_INTR_HANDLER_USER(96);
DECLARE_INTR_HANDLER_USER(97);
DECLARE_INTR_HANDLER_USER(98);
DECLARE_INTR_HANDLER_USER(99);
DECLARE_INTR_HANDLER_USER(100);
DECLARE_INTR_HANDLER_USER(101);
DECLARE_INTR_HANDLER_USER(102);
DECLARE_INTR_HANDLER_USER(103);
DECLARE_INTR_HANDLER_USER(104);
DECLARE_INTR_HANDLER_USER(105);
DECLARE_INTR_HANDLER_USER(106);
DECLARE_INTR_HANDLER_USER(107);
DECLARE_INTR_HANDLER_USER(108);
DECLARE_INTR_HANDLER_USER(109);
DECLARE_INTR_HANDLER_USER(110);
DECLARE_INTR_HANDLER_USER(111);
DECLARE_INTR_HANDLER_USER(112);
DECLARE_INTR_HANDLER_USER(113);
DECLARE_INTR_HANDLER_USER(114);
DECLARE_INTR_HANDLER_USER(115);
DECLARE_INTR_HANDLER_USER(116);
DECLARE_INTR_HANDLER_USER(117);
DECLARE_INTR_HANDLER_USER(118);
DECLARE_INTR_HANDLER_USER(119);
DECLARE_INTR_HANDLER_USER(120);
DECLARE_INTR_HANDLER_USER(121);
DECLARE_INTR_HANDLER_USER(122);
DECLARE_INTR_HANDLER_USER(123);
DECLARE_INTR_HANDLER_USER(124);
DECLARE_INTR_HANDLER_USER(125);
DECLARE_INTR_HANDLER_USER(126);
DECLARE_INTR_HANDLER_USER(127);
/******************************************************************************/
......
......@@ -95,8 +95,23 @@ error_pci_en:
* */
static int configure_device(struct pci_dev *pdev)
{
fflink_warn("Settings of MPS: %d and Maximum Read Request %d\n", pcie_get_mps(pdev), pcie_get_readrq(pdev));
fflink_info("Settings of MPS: %d and Maximum Read Request %d\n", pcie_get_mps(pdev), pcie_get_readrq(pdev));
if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) {
fflink_info("dma_set_mask: Using 64 bit dma addresses\n");
dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64));
} else if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
fflink_info("dma_set_mask: Using 32 bit dma addresses\n");
dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
} else {
fflink_warn("No suitable dma available\n");
goto mask_error;
}
return 0;
mask_error:
return -ENODEV;
}
/**
* @brief Register specific function with msi interrupt line
......@@ -116,8 +131,135 @@ static int register_intr_handler(struct pci_dev *pdev, int c)
if (c == 1 || c == 2 || c == 3) err = -2;
if (c >= 4) {
err = request_irq(pci_irq_vector(pdev, c), intr_handler_user, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev);
switch (c) {
case 4: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_0, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 5: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_1, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 6: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_2, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 7: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_3, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 8: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_4, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 9: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_5, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 10: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_6, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 11: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_7, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 12: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_8, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 13: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_9, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 14: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_10, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 15: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_11, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 16: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_12, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 17: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_13, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 18: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_14, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 19: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_15, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 20: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_16, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 21: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_17, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 22: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_18, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 23: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_19, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 24: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_20, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 25: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_21, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 26: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_22, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 27: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_23, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 28: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_24, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 29: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_25, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 30: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_26, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 31: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_27, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 32: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_28, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 33: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_29, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 34: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_30, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 35: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_31, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 36: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_32, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 37: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_33, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 38: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_34, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 39: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_35, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 40: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_36, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 41: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_37, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 42: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_38, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 43: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_39, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 44: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_40, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 45: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_41, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 46: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_42, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 47: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_43, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 48: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_44, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 49: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_45, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 50: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_46, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 51: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_47, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 52: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_48, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 53: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_49, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 54: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_50, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 55: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_51, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 56: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_52, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 57: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_53, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 58: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_54, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 59: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_55, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 60: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_56, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 61: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_57, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 62: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_58, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 63: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_59, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 64: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_60, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 65: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_61, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 66: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_62, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 67: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_63, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 68: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_64, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 69: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_65, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 70: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_66, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 71: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_67, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 72: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_68, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 73: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_69, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 74: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_70, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 75: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_71, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 76: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_72, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 77: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_73, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 78: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_74, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 79: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_75, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 80: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_76, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 81: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_77, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 82: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_78, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 83: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_79, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 84: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_80, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 85: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_81, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 86: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_82, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 87: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_83, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 88: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_84, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 89: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_85, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 90: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_86, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 91: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_87, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 92: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_88, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 93: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_89, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 94: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_90, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 95: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_91, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 96: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_92, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 97: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_93, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 98: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_94, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 99: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_95, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 100: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_96, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 101: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_97, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 102: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_98, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 103: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_99, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 104: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_100, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 105: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_101, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 106: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_102, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 107: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_103, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 108: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_104, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 109: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_105, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 110: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_106, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 111: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_107, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 112: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_108, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 113: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_109, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 114: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_110, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 115: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_111, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 116: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_112, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 117: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_113, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 118: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_114, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 119: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_115, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 120: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_116, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 121: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_117, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 122: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_118, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 123: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_119, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 124: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_120, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 125: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_121, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 126: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_122, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 127: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_123, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 128: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_124, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 129: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_125, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 130: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_126, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
case 131: err = request_irq(pci_irq_vector(pdev, c), intr_handler_user_127, IRQF_EARLY_RESUME, FFLINK_PCI_NAME, pdev); break;
}
// Save the c to irq mapping for later use
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment