From 97961e2c65773328fe9c2e1d66e4a0b8a253d54d Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 26 Sep 2002 07:45:07 +0000 Subject: BSD vblank framework. --- bsd/gamma_dma.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'bsd/gamma_dma.c') diff --git a/bsd/gamma_dma.c b/bsd/gamma_dma.c index 20b29793..714554d2 100644 --- a/bsd/gamma_dma.c +++ b/bsd/gamma_dma.c @@ -567,3 +567,45 @@ int gamma_dma( DRM_IOCTL_ARGS ) return retcode; } + +void DRM(driver_irq_preinstall)(drm_device_t *dev) { + drm_gamma_private_t *dev_priv = + (drm_gamma_private_t *)dev->dev_private; +#if 1 + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 2); + GAMMA_WRITE( GAMMA_GCOMMANDMODE, 0x00000004 ); + GAMMA_WRITE( GAMMA_GDMACONTROL, 0x00000000 ); +#else + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 2); + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 2); + GAMMA_WRITE( GAMMA_GCOMMANDMODE, GAMMA_QUEUED_DMA_MODE ); + GAMMA_WRITE( GAMMA_GDMACONTROL, 0x00000000 ); +#endif +} + +void DRM(driver_irq_postinstall)(drm_device_t *dev) { + drm_gamma_private_t *dev_priv = + (drm_gamma_private_t *)dev->dev_private; +#if 1 + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 2); + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 3); + GAMMA_WRITE( GAMMA_GINTENABLE, 0x00002001 ); + GAMMA_WRITE( GAMMA_COMMANDINTENABLE, 0x00000008 ); + GAMMA_WRITE( GAMMA_GDELAYTIMER, 0x00039090 ); +#else + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 2); + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 2); + GAMMA_WRITE( GAMMA_GINTENABLE, 0x00002000 ); + GAMMA_WRITE( GAMMA_COMMANDINTENABLE, 0x00000004 ); +#endif +} + +void DRM(driver_irq_uninstall)( drm_device_t *dev ) { + drm_gamma_private_t *dev_priv = + (drm_gamma_private_t *)dev->dev_private; + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 2); + while(GAMMA_READ(GAMMA_INFIFOSPACE) < 3); + GAMMA_WRITE( GAMMA_GDELAYTIMER, 0x00000000 ); + GAMMA_WRITE( GAMMA_COMMANDINTENABLE, 0x00000000 ); + GAMMA_WRITE( GAMMA_GINTENABLE, 0x00000000 ); +} -- cgit v1.2.3