always re-enable irq, so devices sharing this irq don't go deaf
as IRQ_REENABLE isn't specified.
This commit is contained in:
parent
50fa859819
commit
8e727c97ce
@ -503,6 +503,13 @@ PRIVATE void msg_hardware(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* As IRQ_REENABLE is not on in sys_irqsetpolicy, we must
|
||||||
|
* re-enable out interrupt after every interrupt.
|
||||||
|
*/
|
||||||
|
if ((sys_irqenable(&irq_hook_id)) != OK) {
|
||||||
|
error("%s: msg_hardware: Couldn't enable IRQ\n", drv.DriverName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -610,10 +617,12 @@ PRIVATE void handle_int_write(int sub_dev_nr)
|
|||||||
|
|
||||||
/* confirm and reenable interrupt from this sub dev */
|
/* confirm and reenable interrupt from this sub dev */
|
||||||
drv_reenable_int(sub_dev_nr);
|
drv_reenable_int(sub_dev_nr);
|
||||||
|
#if 0
|
||||||
/* reenable irq_hook*/
|
/* reenable irq_hook*/
|
||||||
if ((r=sys_irqenable(&irq_hook_id)) != OK) {
|
if ((r=sys_irqenable(&irq_hook_id)) != OK) {
|
||||||
error("%s Couldn't enable IRQ\n", drv.DriverName);
|
error("%s Couldn't enable IRQ\n", drv.DriverName);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -663,10 +672,12 @@ PRIVATE void handle_int_read(int sub_dev_nr)
|
|||||||
/* confirm interrupt, and reenable interrupt from this sub dev*/
|
/* confirm interrupt, and reenable interrupt from this sub dev*/
|
||||||
drv_reenable_int(sub_dev_ptr->Nr);
|
drv_reenable_int(sub_dev_ptr->Nr);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* reenable irq_hook*/
|
/* reenable irq_hook*/
|
||||||
if ((r=sys_irqenable(&irq_hook_id)) != OK) {
|
if ((r=sys_irqenable(&irq_hook_id)) != OK) {
|
||||||
error("%s: Couldn't reenable IRQ", drv.DriverName);
|
error("%s: Couldn't reenable IRQ", drv.DriverName);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -690,7 +701,8 @@ PRIVATE int get_started(sub_dev_t *sub_dev_ptr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PRIVATE void data_from_user(sub_dev_t *subdev) {
|
PRIVATE void data_from_user(sub_dev_t *subdev)
|
||||||
|
{
|
||||||
|
|
||||||
if (subdev->DmaLength == subdev->NrOfDmaFragments &&
|
if (subdev->DmaLength == subdev->NrOfDmaFragments &&
|
||||||
subdev->BufLength == subdev->NrOfExtraBuffers) return;/* no space */
|
subdev->BufLength == subdev->NrOfExtraBuffers) return;/* no space */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user