summaryrefslogtreecommitdiff
path: root/bsd/gamma_dma.c
diff options
context:
space:
mode:
Diffstat (limited to 'bsd/gamma_dma.c')
-rw-r--r--bsd/gamma_dma.c42
1 files changed, 42 insertions, 0 deletions
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 );
+}