kernel updates for gamma

This commit is contained in:
Alan Hourihane 2001-03-29 16:21:29 +00:00
parent b4e32026ad
commit 354fb1f00e
3 changed files with 45 additions and 27 deletions

View file

@ -74,6 +74,11 @@
#define DRIVER_PREINSTALL() do { \
drm_gamma_private_t *dev_priv = \
(drm_gamma_private_t *)dev->dev_private;\
printk("map is 0x%x 0x%x 0x%x 0x%x\n", \
dev_priv->mmio0->handle, \
dev_priv->mmio1->handle, \
dev_priv->mmio2->handle, \
dev_priv->mmio3->handle); \
while(GAMMA_READ(GAMMA_INFIFOSPACE) < 2); \
GAMMA_WRITE( GAMMA_GCOMMANDMODE, 0x00000004 ); \
GAMMA_WRITE( GAMMA_GDMACONTROL, 0x00000000 ); \

View file

@ -264,19 +264,10 @@ static int gamma_do_dma(drm_device_t *dev, int locked)
buf->time_dispatched = get_cycles();
#endif
/* WE NOW ARE ON LOGICAL PAGES!!! */
#if 0
printk("0x%x 0x%x 0x%x\n",dev_priv->buffers->handle,dev_priv->buffers->size,dev_priv->buffers->offset);
printk("start of dma buffer 0x%x 0x%x 0x%x 0x%x\n",
*(unsigned int *)dev_priv->buffers->handle,
*(unsigned int *)((void*)dev_priv->buffers->handle+(buf->idx<<12)+4),
*(unsigned int *)((void*)dev_priv->buffers->handle+(buf->idx<<12)+8),
*(unsigned int *)((void*)dev_priv->buffers->handle+(buf->idx<<12)+12));
#endif
address = buf->idx << 12;
#if 1
/* WE NOW ARE ON LOGICAL PAGES!!! - overriding address */
address = buf->idx << 12;
gamma_dma_dispatch(dev, address, length);
#endif
gamma_free_buffer(dev, dma->this_buffer);
dma->this_buffer = buf;
@ -641,8 +632,7 @@ int gamma_dma(struct inode *inode, struct file *filp, unsigned int cmd,
static int gamma_do_init_dma( drm_device_t *dev, drm_gamma_init_t *init )
{
drm_gamma_private_t *dev_priv =
(drm_gamma_private_t *)dev->dev_private;
drm_gamma_private_t *dev_priv;
drm_device_dma_t *dma = dev->dma;
drm_buf_t *buf;
unsigned int *pagebuf;
@ -652,6 +642,38 @@ static int gamma_do_init_dma( drm_device_t *dev, drm_gamma_init_t *init )
DRM_DEBUG( "%s\n", __FUNCTION__ );
dev_priv = DRM(alloc)( sizeof(drm_gamma_private_t),
DRM_MEM_DRIVER );
if ( !dev_priv )
return -ENOMEM;
dev->dev_private = (void *)dev_priv;
memset( dev_priv, 0, sizeof(drm_gamma_private_t) );
#if 0
dev_priv->sarea_priv =
(drm_gamma_sarea_t *)((u8 *)dev_priv->sarea->handle +
init->sarea_priv_offset);
#endif
DRM_FIND_MAP( dev_priv->mmio0, init->mmio0 );
DRM_FIND_MAP( dev_priv->mmio1, init->mmio1 );
DRM_FIND_MAP( dev_priv->mmio2, init->mmio2 );
DRM_FIND_MAP( dev_priv->mmio3, init->mmio3 );
printk("dma map is 0x%x 0x%x 0x%x 0x%x\n",
dev_priv->mmio0,
dev_priv->mmio1,
dev_priv->mmio2,
dev_priv->mmio3);
printk("dma map is 0x%x 0x%x 0x%x 0x%x\n",
dev_priv->mmio0->handle,
dev_priv->mmio1->handle,
dev_priv->mmio2->handle,
dev_priv->mmio3->handle);
if (init->pcimode) {
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
pgt = buf->address;
@ -664,21 +686,8 @@ static int gamma_do_init_dma( drm_device_t *dev, drm_gamma_init_t *init )
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
} else {
/* some of this currently isn't used */
dev_priv = DRM(alloc)( sizeof(drm_gamma_private_t),
DRM_MEM_DRIVER );
if ( !dev_priv )
return -ENOMEM;
dev->dev_private = (void *)dev_priv;
memset( dev_priv, 0, sizeof(drm_gamma_private_t) );
DRM_FIND_MAP( dev_priv->buffers, init->buffers_offset );
dev_priv->sarea_priv =
(drm_gamma_sarea_t *)((u8 *)dev_priv->sarea->handle +
init->sarea_priv_offset);
DRM_IOREMAP( dev_priv->buffers );
buf = dma->buflist[GLINT_DRI_BUF_COUNT];

View file

@ -66,6 +66,10 @@ typedef struct drm_gamma_init {
int sarea_priv_offset;
int pcimode;
unsigned int mmio0;
unsigned int mmio1;
unsigned int mmio2;
unsigned int mmio3;
unsigned int buffers_offset;
} drm_gamma_init_t;