summaryrefslogtreecommitdiff
path: root/linux
ModeNameSize
-rw-r--r--Config.in599logplain
-rw-r--r--Makefile.kernel1258logplain
-rw-r--r--Makefile.linux8644logplain
-rw-r--r--README.drm1850logplain
-rw-r--r--ati_pcigart.h5217logplain
-rw-r--r--drm.h18742logplain
-rw-r--r--drmP.h30919logplain
-rw-r--r--drm_agpsupport.h11254logplain
-rw-r--r--drm_auth.h4497logplain
-rw-r--r--drm_bufs.h29431logplain
-rw-r--r--drm_context.h19726logplain
-rw-r--r--drm_dma.h14632logplain
-rw-r--r--drm_drawable.h1930logplain
-rw-r--r--drm_drv.h28261logplain
-rw-r--r--drm_fops.h6009logplain
-rw-r--r--drm_init.h3733logplain
-rw-r--r--drm_ioctl.h6621logplain
-rw-r--r--drm_lists.h5850logplain
-rw-r--r--drm_lock.h6699logplain
-rw-r--r--drm_memory.h11840logplain
-rw-r--r--drm_proc.h17839logplain
-rw-r--r--drm_scatter.h6120logplain
-rw-r--r--drm_stub.h4632logplain
-rw-r--r--drm_vm.h14030logplain
-rw-r--r--gamma.h3042logplain
-rw-r--r--gamma_dma.c15107logplain
-rw-r--r--gamma_drv.c3016logplain
-rw-r--r--gamma_drv.h3791logplain
-rw-r--r--i810.h3813logplain
-rw-r--r--i810_dma.c33562logplain
-rw-r--r--i810_drm.h6588logplain
-rw-r--r--i810_drv.c3673logplain
-rw-r--r--i810_drv.h6639logplain
-rw-r--r--mga.h2200logplain
-rw-r--r--mga_dma.c21196logplain
-rw-r--r--mga_drm.h8927logplain
-rw-r--r--mga_drv.c3622logplain
-rw-r--r--mga_drv.h18427logplain
-rw-r--r--mga_state.c28270logplain
-rw-r--r--mga_ucode.h173314logplain
-rw-r--r--mga_warp.c6865logplain
-rw-r--r--picker.c552logplain
-rw-r--r--r128.h2533logplain
-rw-r--r--r128_cce.c28777logplain
-rw-r--r--r128_drm.h7589logplain
-rw-r--r--r128_drv.c4301logplain
-rw-r--r--r128_drv.h17259logplain
-rw-r--r--r128_state.c39569logplain
-rw-r--r--radeon.h2551logplain
-rw-r--r--radeon_cp.c38837logplain
-rw-r--r--radeon_drm.h9052logplain
-rw-r--r--radeon_drv.c4128logplain
-rw-r--r--radeon_drv.h24816logplain
-rw-r--r--radeon_state.c39274logplain
-rw-r--r--sis.h1959logplain
-rw-r--r--sis_drm.h833logplain
-rw-r--r--sis_drv.c2825logplain
-rw-r--r--sis_drv.h1830logplain
-rw-r--r--sis_ds.c9333logplain
-rw-r--r--sis_ds.h5034logplain
-rw-r--r--sis_mm.c7247logplain
-rw-r--r--tdfx.h1598logplain
-rw-r--r--tdfx_drv.c3594logplain
span> ((from == STATE_GRAPHIC) && ((to == STATE_LOGOUT) || (to == STATE_REBOOT) || (to == STATE_SHUTDOWN))) { DRM_INFO("Leaving graphical mode (probably X shutting down)\n"); } else { DRM_ERROR("Invalid state change.\n"); return -EINVAL; } return 0; } int xgi_state_change_ioctl(struct drm_device * dev, void * data, struct drm_file * filp) { struct xgi_state_info *const state = (struct xgi_state_info *) data; struct xgi_info *info = dev->dev_private; return xgi_state_change(info, state->_toState, state->_fromState); } void xgi_cmdlist_reset(struct xgi_info * info) { info->cmdring.last_ptr = NULL; info->cmdring.ring_offset = 0; } void xgi_cmdlist_cleanup(struct xgi_info * info) { if (info->cmdring.ring_hw_base != 0) { /* If command lists have been issued, terminate the command * list chain with a flush command. */ if (info->cmdring.last_ptr != NULL) { xgi_emit_flush(info, false); xgi_emit_nop(info); } xgi_waitfor_pci_idle(info); (void) memset(&info->cmdring, 0, sizeof(info->cmdring)); } } static void triggerHWCommandList(struct xgi_info * info) { static unsigned int s_triggerID = 1; dwWriteReg(info->mmio_map, BASE_3D_ENG + M2REG_PCI_TRIGGER_REGISTER_ADDRESS, 0x05000000 + (0x0ffff & s_triggerID++)); } /** * Emit a flush to the CRTL command stream. * @info XGI info structure * * This function assumes info->cmdring.ptr is non-NULL. */ void xgi_emit_flush(struct xgi_info * info, bool stop) { const u32 flush_command[8] = { ((0x10 << 24) | (BEGIN_BEGIN_IDENTIFICATION_MASK & info->next_sequence)), BEGIN_LINK_ENABLE_MASK | (0x00004), 0x00000000, 0x00000000, /* Flush the 2D engine with the default 32 clock delay. */ M2REG_FLUSH_ENGINE_COMMAND | M2REG_FLUSH_2D_ENGINE_MASK, M2REG_FLUSH_ENGINE_COMMAND | M2REG_FLUSH_2D_ENGINE_MASK, M2REG_FLUSH_ENGINE_COMMAND | M2REG_FLUSH_2D_ENGINE_MASK, M2REG_FLUSH_ENGINE_COMMAND | M2REG_FLUSH_2D_ENGINE_MASK, }; const unsigned int flush_size = sizeof(flush_command); u32 *batch_addr; u32 hw_addr; unsigned int i; /* check buf is large enough to contain a new flush batch */ if ((info->cmdring.ring_offset + flush_size) >= info->cmdring.size) { info->cmdring.ring_offset = 0; } hw_addr = info->cmdring.ring_hw_base + info->cmdring.ring_offset; batch_addr = info->cmdring.ptr + (info->cmdring.ring_offset / 4); for (i = 0; i < (flush_size / 4); i++) { batch_addr[i] = cpu_to_le32(flush_command[i]); } if (stop) { *batch_addr |= cpu_to_le32(BEGIN_STOP_STORE_CURRENT_POINTER_MASK); } info->cmdring.last_ptr[1] = cpu_to_le32(BEGIN_LINK_ENABLE_MASK | (flush_size / 4)); info->cmdring.last_ptr[2] = cpu_to_le32(hw_addr >> 4); info->cmdring.last_ptr[3] = 0; DRM_WRITEMEMORYBARRIER(); info->cmdring.last_ptr[0] = cpu_to_le32((get_batch_command(BTYPE_CTRL) << 24) | (BEGIN_VALID_MASK)); triggerHWCommandList(info); info->cmdring.ring_offset += flush_size; info->cmdring.last_ptr = batch_addr; } /** * Emit an empty command to the CRTL command stream. * @info XGI info structure * * This function assumes info->cmdring.ptr is non-NULL. In addition, since * this function emits a command that does not have linkage information, * it sets info->cmdring.ptr to NULL. */ void xgi_emit_nop(struct xgi_info * info) { info->cmdring.last_ptr[1] = cpu_to_le32(BEGIN_LINK_ENABLE_MASK | (BEGIN_BEGIN_IDENTIFICATION_MASK & info->next_sequence)); info->cmdring.last_ptr[2] = 0; info->cmdring.last_ptr[3] = 0; DRM_WRITEMEMORYBARRIER(); info->cmdring.last_ptr[0] = cpu_to_le32((get_batch_command(BTYPE_CTRL) << 24) | (BEGIN_VALID_MASK)); triggerHWCommandList(info); info->cmdring.last_ptr = NULL; } void xgi_emit_irq(struct xgi_info * info) { if (info->cmdring.last_ptr == NULL) return; xgi_emit_flush(info, true); }