Hi Wolfgang,

in the process of preparing to merge rtdm_irq_enable into
rtdm_irq_request I would like to check if the attached patch is ok, thus
we could finally drop rtdm_irq_enable once the API is refactored. Please
check carefully when the first IRQs may happen and what the handler
expects to be initialised! SJA1000 /should/ be ok as it works with
shared IRQs, but MSCAN does not (why, BTW?) and /may/ stumble.

Jan
Index: ksrc/drivers/can/mscan/rtcan_mscan.c
===================================================================
--- ksrc/drivers/can/mscan/rtcan_mscan.c        (revision 1559)
+++ ksrc/drivers/can/mscan/rtcan_mscan.c        (working copy)
@@ -801,7 +801,8 @@ int __init rtcan_mscan_init_one(int idx)
        printk("ERROR! rtdm_irq_request for IRQ %d failed\n", irq);
        goto out_dev_free;
     }
-    
+    rtdm_irq_enable(&dev->irq_handle);
+
     mscan_chip_config(regs);
     
 
@@ -814,8 +815,6 @@ int __init rtcan_mscan_init_one(int idx)
 
     rtcan_mscan_create_proc(dev);
 
-    rtdm_irq_enable(&dev->irq_handle);
-    
     /* Remember initialized devices */
     rtcan_mscan_devs[idx] = dev;
 
Index: ksrc/drivers/can/sja1000/rtcan_sja1000.c
===================================================================
--- ksrc/drivers/can/sja1000/rtcan_sja1000.c    (revision 1559)
+++ ksrc/drivers/can/sja1000/rtcan_sja1000.c    (working copy)
@@ -747,6 +747,7 @@ int rtcan_sja1000_register(struct rtcan_
        printk("ERROR! IRQ %d busy or invalid (code=%d)!\n", chip->irq_num, 
ret);
        return ret;
     }
+    rtdm_irq_enable(&dev->irq_handle);
 
     sja1000_chip_config(dev);
 
@@ -759,8 +760,6 @@ int rtcan_sja1000_register(struct rtcan_
 
     rtcan_sja_create_proc(dev);
 
-    rtdm_irq_enable(&dev->irq_handle);
-    
     return 0;
 
  out_irq_free:

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to