]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/hostap/hostap-modules-0.3.7/mtx_hostap_deferred_irq.diff
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / hostap / hostap-modules-0.3.7 / mtx_hostap_deferred_irq.diff
1 --- driver/modules/hostap_pci.c.orig    2004-11-30 06:41:48.000000000 +0100
2 +++ driver/modules/hostap_pci.c 2005-01-17 19:47:33.710400496 +0100
3 @@ -50,6 +50,13 @@
4  };
5  
6  
7 +#define DEFERRED_IRQ_INITIALIZATION
8 +
9 +#ifdef DEFERRED_IRQ_INITIALIZATION
10 +struct net_device *devb[MAX_PARM_DEVICES];
11 +#endif
12 +
13 +
14  #ifdef PRISM2_IO_DEBUG
15  
16  static inline void hfa384x_outb_debug(struct net_device *dev, int a, u8 v)
17 @@ -280,6 +287,10 @@
18  
19         pci_set_drvdata(pdev, dev);
20  
21 +#ifdef DEFERRED_IRQ_INITIALIZATION
22 +       printk("%s: deferred initialization of IRQs\n", dev_info);
23 +       devb[cards_found-1] = dev;
24 +#else
25         if (request_irq(dev->irq, prism2_interrupt, SA_SHIRQ, dev->name,
26                         dev)) {
27                 printk(KERN_WARNING "%s: request_irq failed\n", dev->name);
28 @@ -295,7 +306,7 @@
29  
30         printk(KERN_INFO "%s: Intersil Prism2.5 PCI: "
31                "mem=0x%lx, irq=%d\n", dev->name, phymem, dev->irq);
32 -
33 +#endif
34         return hostap_hw_ready(dev);
35  
36   fail:
37 @@ -399,18 +410,43 @@
38  };
39  
40  
41 +#ifdef DEFERRED_IRQ_INITIALIZATION
42 +static void deferred_init(int num_devices)
43 +{
44 +      int n;
45 +      for (n=0; n<num_devices && n<MAX_PARM_DEVICES; n++)
46 +      {
47 +              if (request_irq(devb[n]->irq, prism2_interrupt, SA_SHIRQ, devb[n]->name,
48 +                              devb[n])) {
49 +                      printk(KERN_WARNING "%s: request_irq failed\n", devb[n]->name);
50 +              }
51 +              if (prism2_hw_config(devb[n], 1)) {
52 +                      printk(KERN_DEBUG "%s: hardware initialization failed\n", devb[n]->name)
53 +;
54 +              }
55 +              printk(KERN_INFO "%s: Intersil Prism2.5 PCI: irq=%d\n", devb[n]->name, devb[n]->
56 +irq);
57 +      }
58 +}
59 +#endif
60 +
61  static int __init init_prism2_pci(void)
62  {
63         printk(KERN_INFO "%s: %s\n", dev_info, version);
64  
65  #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10))
66 -       if (pci_register_driver(&prism2_pci_drv_id) <= 0) {
67 +       int n;
68 +       if ((n=pci_register_driver(&prism2_pci_drv_id)) <= 0) {
69                 printk("hostap_pci: No devices found, driver not "
70                        "installed.\n");
71                 pci_unregister_driver(&prism2_pci_drv_id);
72                 return -ENODEV;
73         }
74  
75 +#ifdef DEFERRED_IRQ_INITIALIZATION
76 +       deferred_init(n);
77 +#endif
78 +
79         return 0;
80  #else
81         return pci_register_driver(&prism2_pci_drv_id);