diff --git a/linux/gamma.h b/linux/gamma.h index bff3f909..da8f52bb 100644 --- a/linux/gamma.h +++ b/linux/gamma.h @@ -90,8 +90,11 @@ #define __HAVE_DMA_QUIESCENT 1 #define DRIVER_DMA_QUIESCENT() do { \ - /* FIXME ! */ \ - gamma_dma_quiescent_single(dev); \ + drm_gamma_private_t *dev_priv = \ + (drm_gamma_private_t *)dev->dev_private; \ + if (dev_priv->num_rast == 2) \ + gamma_dma_quiescent_dual(dev); \ + else gamma_dma_quiescent_single(dev); \ return 0; \ } while (0) diff --git a/linux/gamma_dma.c b/linux/gamma_dma.c index baa6b287..691c55a4 100644 --- a/linux/gamma_dma.c +++ b/linux/gamma_dma.c @@ -583,6 +583,8 @@ static int gamma_do_init_dma( drm_device_t *dev, drm_gamma_init_t *init ) memset( dev_priv, 0, sizeof(drm_gamma_private_t) ); + dev_priv->num_rast = init->num_rast; + list_for_each(list, &dev->maplist->head) { drm_map_list_t *r_list = list_entry(list, drm_map_list_t, head); if( r_list->map && diff --git a/linux/gamma_drm.h b/linux/gamma_drm.h index 0d58b07b..20819ded 100644 --- a/linux/gamma_drm.h +++ b/linux/gamma_drm.h @@ -84,6 +84,7 @@ typedef struct drm_gamma_init { unsigned int mmio2; unsigned int mmio3; unsigned int buffers_offset; + int num_rast; } drm_gamma_init_t; #endif /* _GAMMA_DRM_H_ */ diff --git a/linux/gamma_drv.h b/linux/gamma_drv.h index 36affa68..3e0e3e65 100644 --- a/linux/gamma_drv.h +++ b/linux/gamma_drv.h @@ -40,6 +40,7 @@ typedef struct drm_gamma_private { drm_map_t *mmio1; drm_map_t *mmio2; drm_map_t *mmio3; + int num_rast; } drm_gamma_private_t; /* gamma_dma.c */