124,6 → 124,8 |
static int default_cmode = CMODE_NVRAM; |
#endif |
|
void *sem_sync; |
|
static void matroxfb_unregister_device(struct matrox_fb_info* minfo); |
|
/* --------------------------------------------------------------------- */ |
213,6 → 215,7 |
mga_outl(M_ICLEAR, 0x20); |
ACCESS_FBINFO(crtc1.vsync.cnt)++; |
matroxfb_crtc1_panpos(PMINFO2); |
shark_internal_sem_post(sem_sync); |
//wake_up_interruptible(&ACCESS_FBINFO(crtc1.vsync.wait)); |
handled = 1; |
} |
219,6 → 222,7 |
if (status & 0x200) { |
mga_outl(M_ICLEAR, 0x200); |
ACCESS_FBINFO(crtc2.vsync.cnt)++; |
shark_internal_sem_post(sem_sync); |
//wake_up_interruptible(&ACCESS_FBINFO(crtc2.vsync.wait)); |
handled = 1; |
} |
267,7 → 271,6 |
} |
|
int matroxfb_wait_for_sync(WPMINFO u_int32_t crtc) { |
wait_queue_t __wait; |
struct matrox_vsync *vs; |
unsigned int cnt; |
int ret; |
289,10 → 292,11 |
if (ret) { |
return ret; |
} |
//init_waitqueue_entry(&__wait, current); |
|
shark_internal_sem_wait(sem_sync); |
|
cnt = vs->cnt; |
ret = 1;//ret = wait_event_interruptible_timeout(vs->wait, cnt != vs->cnt, HZ/10); |
ret = 1; |
if (ret < 0) { |
return ret; |
} |
2011,6 → 2015,7 |
init_rwsem(&ACCESS_FBINFO(crtc2.lock)); |
init_rwsem(&ACCESS_FBINFO(altout.lock)); |
ACCESS_FBINFO(irq_flags) = 0; |
shark_internal_sem_create(&sem_sync,0); |
//init_waitqueue_head(&ACCESS_FBINFO(crtc1.vsync.wait)); |
//init_waitqueue_head(&ACCESS_FBINFO(crtc2.vsync.wait)); |
ACCESS_FBINFO(crtc1.panpos) = -1; |