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:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core