From 34ceadf4ebcfbd68463a2882ae14e75f734145cd Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 6 Feb 2000 23:22:10 +0000 Subject: [PATCH] Fix constants definition --- linux/mga_dma.c | 11 +++++++++++ linux/mga_dma.h | 26 +++++++++++++++++--------- linux/mga_drm_public.h | 21 +++++++++++---------- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/linux/mga_dma.c b/linux/mga_dma.c index 09eece1d..60900300 100644 --- a/linux/mga_dma.c +++ b/linux/mga_dma.c @@ -149,6 +149,8 @@ static int mga_dma_initialize(drm_device_t *dev, drm_mga_init_t *init) { printk("temp : %x\n", temp); printk("dev->agp->base: %lx\n", dev->agp->base); printk("init->reserved_map_agpstart: %x\n", init->reserved_map_agpstart); + + dev_priv->ioremap = drm_ioremap(dev->agp->base + init->reserved_map_agpstart, temp); if(dev_priv->ioremap == NULL) { @@ -156,6 +158,9 @@ static int mga_dma_initialize(drm_device_t *dev, drm_mga_init_t *init) { mga_dma_cleanup(dev); return -ENOMEM; } + + + dev_priv->prim_head = (u32 *)dev_priv->ioremap; printk("dev_priv->prim_head : %p\n", dev_priv->prim_head); dev_priv->current_dma_ptr = dev_priv->prim_head; @@ -163,6 +168,7 @@ static int mga_dma_initialize(drm_device_t *dev, drm_mga_init_t *init) { dev_priv->prim_max_dwords = dev_priv->primary_size / 4; printk("dma initialization\n"); + /* Private is now filled in, initialize the hardware */ { PRIMLOCALS; @@ -177,6 +183,7 @@ static int mga_dma_initialize(drm_device_t *dev, drm_mga_init_t *init) { /* Poll for the first buffer to insure that * the status register will be correct */ + printk(KERN_INFO "phys_head : %lx\n", phys_head); MGA_WRITE(MGAREG_DWGSYNC, MGA_SYNC_TAG); @@ -185,6 +192,7 @@ static int mga_dma_initialize(drm_device_t *dev, drm_mga_init_t *init) { for(i = 0 ; i < 4096; i++) mga_delay(); } + MGA_WRITE(MGAREG_PRIMEND, ((phys_head + num_dwords * 4) | PDEA_pagpxfer_enable)); @@ -422,6 +430,7 @@ static inline void mga_dma_quiescent(drm_device_t *dev) { drm_mga_private_t *dev_priv = (drm_mga_private_t *)dev->dev_private; + while(1) { atomic_inc(&dev_priv->dispatch_lock); if(atomic_read(&dev_priv->dispatch_lock) == 1) { @@ -430,9 +439,11 @@ static inline void mga_dma_quiescent(drm_device_t *dev) atomic_dec(&dev_priv->dispatch_lock); } } +#if 0 while((MGA_READ(MGAREG_STATUS) & 0x00020001) != 0x00020000) ; MGA_WRITE(MGAREG_DWGSYNC, MGA_SYNC_TAG); while(MGA_READ(MGAREG_DWGSYNC) != MGA_SYNC_TAG) ; +#endif atomic_dec(&dev_priv->dispatch_lock); } diff --git a/linux/mga_dma.h b/linux/mga_dma.h index 9dc557db..2f0ea4a2 100644 --- a/linux/mga_dma.h +++ b/linux/mga_dma.h @@ -66,6 +66,9 @@ typedef struct { +#define VERBO 1 + + /* Primary buffer versions of above -- pretty similar really. */ #define PRIMLOCALS u8 tempIndex[4]; u32 *dma_ptr; u32 phys_head; \ @@ -88,15 +91,20 @@ typedef struct { dev_priv->current_dma_ptr = dma_ptr; \ } while (0) -#define PRIMOUTREG(reg, val) do { \ - tempIndex[outcount]=ADRINDEX(reg); \ - dma_ptr[1+outcount] = val; \ - if( ++outcount == 4) { \ - outcount = 0; \ - dma_ptr[0] = *(u32 *)tempIndex; \ - dma_ptr+=5; \ - num_dwords += 5; \ - } \ +#define PRIMOUTREG(reg, val) do { \ + tempIndex[outcount]=ADRINDEX(reg); \ + dma_ptr[1+outcount] = val; \ + if( ++outcount == 4) { \ + outcount = 0; \ + dma_ptr[0] = *(u32 *)tempIndex; \ + dma_ptr+=5; \ + num_dwords += 5; \ + } \ + if (VERBO) \ + printk(KERN_INFO \ + "OUT %x val %x dma_ptr %p nr_dwords %d\n", \ + outcount, ADRINDEX(reg), dma_ptr, \ + num_dwords); \ }while (0) diff --git a/linux/mga_drm_public.h b/linux/mga_drm_public.h index 47a62494..26cebe03 100644 --- a/linux/mga_drm_public.h +++ b/linux/mga_drm_public.h @@ -32,27 +32,27 @@ #ifndef _MGA_DRM_PUBLIC_H_ #define _MGA_DRM_PUBLIC_H_ -#define MGA_A 0x1 /* alpha */ -#define MGA_F 0x2 /* fog */ +#define MGA_F 0x1 /* fog */ +#define MGA_A 0x2 /* alpha */ #define MGA_S 0x4 /* specular */ #define MGA_T2 0x8 /* multitexture */ #define MGA_WARP_TGZ 0 -#define MGA_WARP_TGZA (MGA_A) #define MGA_WARP_TGZF (MGA_F) -#define MGA_WARP_TGZFA (MGA_F|MGA_A) +#define MGA_WARP_TGZA (MGA_A) +#define MGA_WARP_TGZAF (MGA_F|MGA_A) #define MGA_WARP_TGZS (MGA_S) -#define MGA_WARP_TGZSA (MGA_S|MGA_A) #define MGA_WARP_TGZSF (MGA_S|MGA_F) -#define MGA_WARP_TGZSFA (MGA_S|MGA_F|MGA_A) +#define MGA_WARP_TGZSA (MGA_S|MGA_A) +#define MGA_WARP_TGZSAF (MGA_S|MGA_F|MGA_A) #define MGA_WARP_T2GZ (MGA_T2) -#define MGA_WARP_T2GZA (MGA_T2|MGA_A) #define MGA_WARP_T2GZF (MGA_T2|MGA_F) -#define MGA_WARP_T2GZFA (MGA_T2|MGA_A|MGA_F) +#define MGA_WARP_T2GZA (MGA_T2|MGA_A) +#define MGA_WARP_T2GZAF (MGA_T2|MGA_A|MGA_F) #define MGA_WARP_T2GZS (MGA_T2|MGA_S) -#define MGA_WARP_T2GZSA (MGA_T2|MGA_S|MGA_A) #define MGA_WARP_T2GZSF (MGA_T2|MGA_S|MGA_F) -#define MGA_WARP_T2GZSFA (MGA_T2|MGA_S|MGA_F|MGA_A) +#define MGA_WARP_T2GZSA (MGA_T2|MGA_S|MGA_A) +#define MGA_WARP_T2GZSAF (MGA_T2|MGA_S|MGA_F|MGA_A) #define MGA_MAX_G400_PIPES 16 @@ -198,6 +198,7 @@ typedef struct } drm_mga_sarea_t; + #define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)