summaryrefslogtreecommitdiff
path: root/linux-core
ModeNameSize
-rw-r--r--Makefile.kernel3404logplain
-rw-r--r--README.drm1850logplain
-rw-r--r--drmP.h33446logplain
-rw-r--r--drm_agpsupport.c10360logplain
-rw-r--r--drm_auth.c4497logplain
-rw-r--r--drm_bufs.c21899logplain
-rw-r--r--drm_context.c19473logplain
-rw-r--r--drm_dma.c14469logplain
-rw-r--r--drm_drawable.c1930logplain
-rw-r--r--drm_drv.c25422logplain
-rw-r--r--drm_fops.c6409logplain
-rw-r--r--drm_init.c3666logplain
-rw-r--r--drm_ioctl.c5801logplain
-rw-r--r--drm_lock.c6699logplain
-rw-r--r--drm_memory.h12208logplain
-rw-r--r--drm_proc.c17813logplain
-rw-r--r--drm_stub.c4555logplain
-rw-r--r--drm_vm.c12032logplain
-rw-r--r--i810_dma.c32543logplain
-rw-r--r--i810_drm.h6481logplain
-rw-r--r--i810_drv.c3136logplain
-rw-r--r--i810_drv.h6639logplain
-rw-r--r--mga_drv.c3086logplain
-rw-r--r--r128_drv.c3714logplain
-rw-r--r--radeon_drv.c20824logplain
-rw-r--r--sis_drv.c20657logplain
-rw-r--r--tdfx_drv.c2143logplain
X_POINTER, 2 /* save ctx */); } /* Restore the context for a specific channel into PGRAPH */ static void nv20_graph_context_restore(drm_device_t *dev, int channel) { drm_nouveau_private_t *dev_priv = (drm_nouveau_private_t *)dev->dev_private; uint32_t instance; instance = INSTANCE_RD(dev_priv->ctx_table, channel); if (!instance) { return; } if (instance != nouveau_chip_instance_get(dev, dev_priv->fifos[channel].ramin_grctx)) DRM_ERROR("nv20_graph_context_restore_current : bad instance\n"); NV_WRITE(NV_PGRAPH_CTX_USER, channel << 24); NV_WRITE(NV_PGRAPH_CHANNEL_CTX_SIZE, instance); NV_WRITE(NV_PGRAPH_CHANNEL_CTX_POINTER, 1 /* restore ctx */); } void nouveau_nv20_context_switch(drm_device_t *dev) { drm_nouveau_private_t *dev_priv = dev->dev_private; int channel, channel_old; channel=NV_READ(NV_PFIFO_CACH1_PSH1)&(nouveau_fifo_number(dev)-1); channel_old = (NV_READ(NV_PGRAPH_CTX_USER) >> 24) & (nouveau_fifo_number(dev)-1); DRM_DEBUG("NV: PGRAPH context switch interrupt channel %x -> %x\n",channel_old, channel); NV_WRITE(NV_PGRAPH_FIFO,0x0); nv20_graph_context_save_current(dev, channel_old); nouveau_wait_for_idle(dev); NV_WRITE(NV_PGRAPH_CTX_CONTROL, 0x10000000); nv20_graph_context_restore(dev, channel); nouveau_wait_for_idle(dev); if ((NV_READ(NV_PGRAPH_CTX_USER) >> 24) != channel) DRM_ERROR("nouveau_nv20_context_switch : wrong channel restored %x %x!!!\n", channel, NV_READ(NV_PGRAPH_CTX_USER) >> 24); NV_WRITE(NV_PGRAPH_CTX_CONTROL, 0x10010100); NV_WRITE(NV_PGRAPH_FFINTFC_ST2, NV_READ(NV_PGRAPH_FFINTFC_ST2)&0xCFFFFFFF); NV_WRITE(NV_PGRAPH_FIFO,0x1); }