Merge branch 'writable_limits' of git://decibel.fi.muni.cz/~xslaby/linux
[deliverable/linux.git] / drivers / gpu / drm / i915 / i915_drv.c
index 5c51e45ab68de6e999946f4ea55d6c20ae24bc5c..5044f653e8ea981d46729360b5dc609836a319ab 100644 (file)
@@ -60,121 +60,121 @@ extern int intel_agp_enabled;
        .subdevice = PCI_ANY_ID,                \
        .driver_data = (unsigned long) info }
 
-const static struct intel_device_info intel_i830_info = {
+static const struct intel_device_info intel_i830_info = {
        .is_i8xx = 1, .is_mobile = 1, .cursor_needs_physical = 1,
 };
 
-const static struct intel_device_info intel_845g_info = {
+static const struct intel_device_info intel_845g_info = {
        .is_i8xx = 1,
 };
 
-const static struct intel_device_info intel_i85x_info = {
+static const struct intel_device_info intel_i85x_info = {
        .is_i8xx = 1, .is_i85x = 1, .is_mobile = 1,
        .cursor_needs_physical = 1,
 };
 
-const static struct intel_device_info intel_i865g_info = {
+static const struct intel_device_info intel_i865g_info = {
        .is_i8xx = 1,
 };
 
-const static struct intel_device_info intel_i915g_info = {
+static const struct intel_device_info intel_i915g_info = {
        .is_i915g = 1, .is_i9xx = 1, .cursor_needs_physical = 1,
 };
-const static struct intel_device_info intel_i915gm_info = {
+static const struct intel_device_info intel_i915gm_info = {
        .is_i9xx = 1,  .is_mobile = 1,
        .cursor_needs_physical = 1,
 };
-const static struct intel_device_info intel_i945g_info = {
+static const struct intel_device_info intel_i945g_info = {
        .is_i9xx = 1, .has_hotplug = 1, .cursor_needs_physical = 1,
 };
-const static struct intel_device_info intel_i945gm_info = {
+static const struct intel_device_info intel_i945gm_info = {
        .is_i945gm = 1, .is_i9xx = 1, .is_mobile = 1,
        .has_hotplug = 1, .cursor_needs_physical = 1,
 };
 
-const static struct intel_device_info intel_i965g_info = {
-       .is_i965g = 1, .is_i9xx = 1, .has_hotplug = 1,
+static const struct intel_device_info intel_i965g_info = {
+       .is_broadwater = 1, .is_i965g = 1, .is_i9xx = 1, .has_hotplug = 1,
 };
 
-const static struct intel_device_info intel_i965gm_info = {
-       .is_i965g = 1, .is_mobile = 1, .is_i965gm = 1, .is_i9xx = 1,
+static const struct intel_device_info intel_i965gm_info = {
+       .is_crestline = 1, .is_i965g = 1, .is_i965gm = 1, .is_i9xx = 1,
        .is_mobile = 1, .has_fbc = 1, .has_rc6 = 1,
        .has_hotplug = 1,
 };
 
-const static struct intel_device_info intel_g33_info = {
+static const struct intel_device_info intel_g33_info = {
        .is_g33 = 1, .is_i9xx = 1, .need_gfx_hws = 1,
        .has_hotplug = 1,
 };
 
-const static struct intel_device_info intel_g45_info = {
+static const struct intel_device_info intel_g45_info = {
        .is_i965g = 1, .is_g4x = 1, .is_i9xx = 1, .need_gfx_hws = 1,
        .has_pipe_cxsr = 1,
        .has_hotplug = 1,
 };
 
-const static struct intel_device_info intel_gm45_info = {
-       .is_i965g = 1, .is_mobile = 1, .is_g4x = 1, .is_i9xx = 1,
+static const struct intel_device_info intel_gm45_info = {
+       .is_i965g = 1, .is_g4x = 1, .is_i9xx = 1,
        .is_mobile = 1, .need_gfx_hws = 1, .has_fbc = 1, .has_rc6 = 1,
        .has_pipe_cxsr = 1,
        .has_hotplug = 1,
 };
 
-const static struct intel_device_info intel_pineview_info = {
+static const struct intel_device_info intel_pineview_info = {
        .is_g33 = 1, .is_pineview = 1, .is_mobile = 1, .is_i9xx = 1,
        .need_gfx_hws = 1,
        .has_hotplug = 1,
 };
 
-const static struct intel_device_info intel_ironlake_d_info = {
+static const struct intel_device_info intel_ironlake_d_info = {
        .is_ironlake = 1, .is_i965g = 1, .is_i9xx = 1, .need_gfx_hws = 1,
        .has_pipe_cxsr = 1,
        .has_hotplug = 1,
 };
 
-const static struct intel_device_info intel_ironlake_m_info = {
+static const struct intel_device_info intel_ironlake_m_info = {
        .is_ironlake = 1, .is_mobile = 1, .is_i965g = 1, .is_i9xx = 1,
-       .need_gfx_hws = 1, .has_rc6 = 1,
+       .need_gfx_hws = 1, .has_fbc = 1, .has_rc6 = 1,
        .has_hotplug = 1,
 };
 
-const static struct intel_device_info intel_sandybridge_d_info = {
+static const struct intel_device_info intel_sandybridge_d_info = {
        .is_i965g = 1, .is_i9xx = 1, .need_gfx_hws = 1,
        .has_hotplug = 1, .is_gen6 = 1,
 };
 
-const static struct intel_device_info intel_sandybridge_m_info = {
+static const struct intel_device_info intel_sandybridge_m_info = {
        .is_i965g = 1, .is_mobile = 1, .is_i9xx = 1, .need_gfx_hws = 1,
        .has_hotplug = 1, .is_gen6 = 1,
 };
 
-const static struct pci_device_id pciidlist[] = {
-       INTEL_VGA_DEVICE(0x3577, &intel_i830_info),
-       INTEL_VGA_DEVICE(0x2562, &intel_845g_info),
-       INTEL_VGA_DEVICE(0x3582, &intel_i85x_info),
+static const struct pci_device_id pciidlist[] = {              /* aka */
+       INTEL_VGA_DEVICE(0x3577, &intel_i830_info),             /* I830_M */
+       INTEL_VGA_DEVICE(0x2562, &intel_845g_info),             /* 845_G */
+       INTEL_VGA_DEVICE(0x3582, &intel_i85x_info),             /* I855_GM */
        INTEL_VGA_DEVICE(0x358e, &intel_i85x_info),
-       INTEL_VGA_DEVICE(0x2572, &intel_i865g_info),
-       INTEL_VGA_DEVICE(0x2582, &intel_i915g_info),
-       INTEL_VGA_DEVICE(0x258a, &intel_i915g_info),
-       INTEL_VGA_DEVICE(0x2592, &intel_i915gm_info),
-       INTEL_VGA_DEVICE(0x2772, &intel_i945g_info),
-       INTEL_VGA_DEVICE(0x27a2, &intel_i945gm_info),
-       INTEL_VGA_DEVICE(0x27ae, &intel_i945gm_info),
-       INTEL_VGA_DEVICE(0x2972, &intel_i965g_info),
-       INTEL_VGA_DEVICE(0x2982, &intel_i965g_info),
-       INTEL_VGA_DEVICE(0x2992, &intel_i965g_info),
-       INTEL_VGA_DEVICE(0x29a2, &intel_i965g_info),
-       INTEL_VGA_DEVICE(0x29b2, &intel_g33_info),
-       INTEL_VGA_DEVICE(0x29c2, &intel_g33_info),
-       INTEL_VGA_DEVICE(0x29d2, &intel_g33_info),
-       INTEL_VGA_DEVICE(0x2a02, &intel_i965gm_info),
-       INTEL_VGA_DEVICE(0x2a12, &intel_i965gm_info),
-       INTEL_VGA_DEVICE(0x2a42, &intel_gm45_info),
-       INTEL_VGA_DEVICE(0x2e02, &intel_g45_info),
-       INTEL_VGA_DEVICE(0x2e12, &intel_g45_info),
-       INTEL_VGA_DEVICE(0x2e22, &intel_g45_info),
-       INTEL_VGA_DEVICE(0x2e32, &intel_g45_info),
-       INTEL_VGA_DEVICE(0x2e42, &intel_g45_info),
+       INTEL_VGA_DEVICE(0x2572, &intel_i865g_info),            /* I865_G */
+       INTEL_VGA_DEVICE(0x2582, &intel_i915g_info),            /* I915_G */
+       INTEL_VGA_DEVICE(0x258a, &intel_i915g_info),            /* E7221_G */
+       INTEL_VGA_DEVICE(0x2592, &intel_i915gm_info),           /* I915_GM */
+       INTEL_VGA_DEVICE(0x2772, &intel_i945g_info),            /* I945_G */
+       INTEL_VGA_DEVICE(0x27a2, &intel_i945gm_info),           /* I945_GM */
+       INTEL_VGA_DEVICE(0x27ae, &intel_i945gm_info),           /* I945_GME */
+       INTEL_VGA_DEVICE(0x2972, &intel_i965g_info),            /* I946_GZ */
+       INTEL_VGA_DEVICE(0x2982, &intel_i965g_info),            /* G35_G */
+       INTEL_VGA_DEVICE(0x2992, &intel_i965g_info),            /* I965_Q */
+       INTEL_VGA_DEVICE(0x29a2, &intel_i965g_info),            /* I965_G */
+       INTEL_VGA_DEVICE(0x29b2, &intel_g33_info),              /* Q35_G */
+       INTEL_VGA_DEVICE(0x29c2, &intel_g33_info),              /* G33_G */
+       INTEL_VGA_DEVICE(0x29d2, &intel_g33_info),              /* Q33_G */
+       INTEL_VGA_DEVICE(0x2a02, &intel_i965gm_info),           /* I965_GM */
+       INTEL_VGA_DEVICE(0x2a12, &intel_i965gm_info),           /* I965_GME */
+       INTEL_VGA_DEVICE(0x2a42, &intel_gm45_info),             /* GM45_G */
+       INTEL_VGA_DEVICE(0x2e02, &intel_g45_info),              /* IGD_E_G */
+       INTEL_VGA_DEVICE(0x2e12, &intel_g45_info),              /* Q45_G */
+       INTEL_VGA_DEVICE(0x2e22, &intel_g45_info),              /* G45_G */
+       INTEL_VGA_DEVICE(0x2e32, &intel_g45_info),              /* G41_G */
+       INTEL_VGA_DEVICE(0x2e42, &intel_g45_info),              /* B43_G */
        INTEL_VGA_DEVICE(0xa001, &intel_pineview_info),
        INTEL_VGA_DEVICE(0xa011, &intel_pineview_info),
        INTEL_VGA_DEVICE(0x0042, &intel_ironlake_d_info),
@@ -370,6 +370,7 @@ int i965_reset(struct drm_device *dev, u8 flags)
                }
        } else {
                DRM_ERROR("Error occurred. Don't know how to reset this chip.\n");
+               mutex_unlock(&dev->struct_mutex);
                return -ENODEV;
        }
 
@@ -388,33 +389,10 @@ int i965_reset(struct drm_device *dev, u8 flags)
         * switched away).
         */
        if (drm_core_check_feature(dev, DRIVER_MODESET) ||
-           !dev_priv->mm.suspended) {
-               drm_i915_ring_buffer_t *ring = &dev_priv->ring;
-               struct drm_gem_object *obj = ring->ring_obj;
-               struct drm_i915_gem_object *obj_priv = to_intel_bo(obj);
+                       !dev_priv->mm.suspended) {
+               struct intel_ring_buffer *ring = &dev_priv->render_ring;
                dev_priv->mm.suspended = 0;
-
-               /* Stop the ring if it's running. */
-               I915_WRITE(PRB0_CTL, 0);
-               I915_WRITE(PRB0_TAIL, 0);
-               I915_WRITE(PRB0_HEAD, 0);
-
-               /* Initialize the ring. */
-               I915_WRITE(PRB0_START, obj_priv->gtt_offset);
-               I915_WRITE(PRB0_CTL,
-                          ((obj->size - 4096) & RING_NR_PAGES) |
-                          RING_NO_REPORT |
-                          RING_VALID);
-               if (!drm_core_check_feature(dev, DRIVER_MODESET))
-                       i915_kernel_lost_context(dev);
-               else {
-                       ring->head = I915_READ(PRB0_HEAD) & HEAD_ADDR;
-                       ring->tail = I915_READ(PRB0_TAIL) & TAIL_ADDR;
-                       ring->space = ring->head - (ring->tail + 8);
-                       if (ring->space < 0)
-                               ring->space += ring->Size;
-               }
-
+               ring->init(dev, ring);
                mutex_unlock(&dev->struct_mutex);
                drm_irq_uninstall(dev);
                drm_irq_install(dev);
@@ -435,7 +413,7 @@ int i965_reset(struct drm_device *dev, u8 flags)
 static int __devinit
 i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
-       return drm_get_dev(pdev, ent, &driver);
+       return drm_get_pci_dev(pdev, ent, &driver);
 }
 
 static void
@@ -504,7 +482,7 @@ static int i915_pm_poweroff(struct device *dev)
        return i915_drm_freeze(drm_dev);
 }
 
-const struct dev_pm_ops i915_pm_ops = {
+static const struct dev_pm_ops i915_pm_ops = {
      .suspend = i915_pm_suspend,
      .resume = i915_pm_resume,
      .freeze = i915_pm_freeze,
This page took 0.03019 seconds and 5 git commands to generate.