summaryrefslogtreecommitdiff
path: root/shared-core
diff options
context:
space:
mode:
authorMichel Daenzer <michel@daenzer.net>2002-12-03 00:43:47 +0000
committerMichel Daenzer <michel@daenzer.net>2002-12-03 00:43:47 +0000
commit4acba63bb7045e6bf665580cf6cea111f0786f77 (patch)
treea45078534bae7643c6aca60c58a6c5054e0cf8d4 /shared-core
parent40891ac190fb74f389ea1a9758249a2f642fd99b (diff)
vertical blank interrupt cleanups: use spinlock instead of semaphore, send
signal directly from interrupt handler instead of using a taskqueue (based on feedback by Linus Torvalds)
Diffstat (limited to 'shared-core')
-rw-r--r--shared-core/mga_irq.c5
-rw-r--r--shared-core/r128_irq.c5
-rw-r--r--shared-core/radeon_irq.c5
3 files changed, 3 insertions, 12 deletions
diff --git a/shared-core/mga_irq.c b/shared-core/mga_irq.c
index 30ee7834..66236053 100644
--- a/shared-core/mga_irq.c
+++ b/shared-core/mga_irq.c
@@ -50,10 +50,7 @@ void mga_dma_service( DRM_IRQ_ARGS )
MGA_WRITE( MGA_ICLEAR, MGA_VLINEICLR );
atomic_inc(&dev->vbl_received);
DRM_WAKEUP(&dev->vbl_queue);
-
- /* kick off bottom half for signals */
- queue_task(&dev->vbl_tq, &tq_immediate);
- mark_bh(IMMEDIATE_BH);
+ DRM(vbl_send_signals)( dev );
}
}
diff --git a/shared-core/r128_irq.c b/shared-core/r128_irq.c
index 722f2362..8dfee07e 100644
--- a/shared-core/r128_irq.c
+++ b/shared-core/r128_irq.c
@@ -50,10 +50,7 @@ void r128_dma_service( DRM_IRQ_ARGS )
R128_WRITE( R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK );
atomic_inc(&dev->vbl_received);
DRM_WAKEUP(&dev->vbl_queue);
-
- /* kick off bottom half for signals */
- queue_task(&dev->vbl_tq, &tq_immediate);
- mark_bh(IMMEDIATE_BH);
+ DRM(vbl_send_signals)( dev );
}
}
diff --git a/shared-core/radeon_irq.c b/shared-core/radeon_irq.c
index b8f33f95..e2182ff7 100644
--- a/shared-core/radeon_irq.c
+++ b/shared-core/radeon_irq.c
@@ -74,10 +74,7 @@ void DRM(dma_service)( DRM_IRQ_ARGS )
if (stat & RADEON_CRTC_VBLANK_STAT) {
atomic_inc(&dev->vbl_received);
DRM_WAKEUP(&dev->vbl_queue);
-
- /* kick off bottom half for signals */
- queue_task(&dev->vbl_tq, &tq_immediate);
- mark_bh(IMMEDIATE_BH);
+ DRM(vbl_send_signals)( dev );
}
/* Acknowledge all the bits in GEN_INT_STATUS -- seem to get