749N/A * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. 749N/A * Created: Wed Feb 14 17:10:04 2001 by gareth@valinux.com 749N/A * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. 749N/A * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 749N/A * Copyright (c) 2009, 2013, Intel Corporation. 749N/A * Permission is hereby granted, free of charge, to any person obtaining a 749N/A * copy of this software and associated documentation files (the "Software"), 749N/A * to deal in the Software without restriction, including without limitation 749N/A * the rights to use, copy, modify, merge, publish, distribute, sublicense, 749N/A * and/or sell copies of the Software, and to permit persons to whom the 749N/A * Software is furnished to do so, subject to the following conditions: 749N/A * The above copyright notice and this permission notice (including the next 749N/A * paragraph) shall be included in all copies or substantial portions of the 749N/A * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 749N/A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 749N/A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 749N/A * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 749N/A * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 749N/A * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 749N/A * OTHER DEALINGS IN THE SOFTWARE. 749N/A * Gareth Hughes <gareth@valinux.com> 749N/A * I915 DRM Driver for Solaris 749N/A * This driver provides the hardware 3D acceleration support for Intel 749N/A * DRI (Direct Rendering Infrastructure). DRM (Direct Rendering Manager) here 749N/A * means the kernel device driver in DRI. 749N/A * I915 driver is a device dependent driver only, it depends on a misc module 749N/A * named drm for generic DRM operations. 749N/A "I915 DRM driver",
/* drv_linkinfo */ 749N/A /* In all current cases, num_pipes is equivalent to the PCH_NOP setting 749N/A * (which really amounts to a PCH but no South Display). 749N/A * The reason to probe ISA bridge instead of Dev31:Fun0 is to 749N/A * make graphics device passthrough work easy for VMM, that only 749N/A * need to expose ISA bridge to let driver know the real hardware 749N/A * underneath. This is a requirement from virtualization team. 749N/A /* PantherPoint is CPT compatible */ 749N/A /* Enable semaphores on SNB when IO remapping is off */ 749N/A /* ignore lid events during suspend */ 749N/A /* XXX FIXME: pci_save_state(dev->pdev); */ 749N/A /* If KMS is active, we do the leavevt stuff here */ 749N/A * Disable CRTCs directly since we want to preserve sw state 749N/A * First, try to restore the "console". 749N/A /* KMS EnterVT equivalent */ 749N/A /* We need working interrupts for modeset enabling ... */ 749N/A * ... but also need to make sure that hotplug processing 749N/A * doesn't cause havoc. Like in the driver load code we don't 749N/A * bother with the tiny race here where we might loose hotplug 749N/A * well as the reset bit (GR/bit 0). Setting the GR bit 749N/A * triggers the reset; when done, the hardware will clear it. 749N/A /* We can't reset render&media without also resetting display ... */ 749N/A /* We can't reset render&media without also resetting display ... */ 749N/A /* Hold gt_lock across reset to prevent any register access 749N/A * with forcewake not set correctly 749N/A /* GEN6_GDRST is not in the gt power well, no need to check 749N/A * for fifo space for the write or forcewake the chip for 749N/A /* Spin waiting for the device to ack the reset request */ 749N/A /* If reset with a user forcewake, try to restore, otherwise turn it off */ 749N/A /* Restore fifo count */ 749N/A * i915_reset - reset chip after a hang 749N/A * @dev: drm device to reset 749N/A * Reset the chip. Useful if a hang is detected. Returns zero on successful 749N/A * reset or otherwise an error code. 749N/A * Procedure is fairly simple: 749N/A * - reset the chip using the reset reg 749N/A * - re-init context state 749N/A * - re-init hardware status page 749N/A * - re-init ring buffer 749N/A * - re-init interrupt state 749N/A /* Also reset the gpu hangman. */ 749N/A "error for simulated gpu hangs\n");
749N/A /* Ok, now get things going again... */ 749N/A * Everything depends on having the GTT running, so we need to start 749N/A * there. Fortunately we don't need to do this unless we reset the 749N/A * Next we need to restore the context, but we don't use those 749N/A * Ring buffer needs to be re-initialized in the KMS case, or if X 749N/A * was running at the time of the reset (i.e. we weren't VT 749N/A * It would make sense to re-init all the other hw state, at 749N/A * some unknown reason, this blows up my ilk, so don't. 749N/A /* don't use mtrr's here, the Xserver or user space app should 749N/A * deal with them for intel hardware. 749N/A /* Used in place of i915_pm_ops for non-DRIVER_MODESET */ 749N/A /*.gem_vm_ops = &i915_gem_vm_ops,*/ 749N/A /* Skip inactive CRTCs */ 749N/A/* We give fast paths for the really cool registers */ 749N/A /* WaIssueDummyWriteToWakeupFromRC6: Issue a dummy write to wake up the 749N/A * chip from rc6 before touching it for real. MI_MODE is masked, hence 749N/A * harmless to write 0 into. */ 749N/A /* Remove AGP support for GEN6+ platform */