]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/gma500/psb_drv.c
Merge branch 'upstream' into bugfix-video
[karo-tx-linux.git] / drivers / gpu / drm / gma500 / psb_drv.c
index 0e85978877e8a933e457b0f3cf2a1025732ab01f..b8a131fcb283308d6a3d2cc695fa08c91f2953ff 100644 (file)
@@ -79,6 +79,14 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = {
        { 0x8086, 0x0be5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
        { 0x8086, 0x0be6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
        { 0x8086, 0x0be7, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+       { 0x8086, 0x0be8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+       { 0x8086, 0x0be9, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+       { 0x8086, 0x0bea, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+       { 0x8086, 0x0beb, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+       { 0x8086, 0x0bec, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+       { 0x8086, 0x0bed, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+       { 0x8086, 0x0bee, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
+       { 0x8086, 0x0bef, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (long) &cdv_chip_ops},
 #endif
        { 0, }
 };
@@ -144,10 +152,6 @@ static void psb_lastclose(struct drm_device *dev)
        return;
 }
 
-static void psb_do_takedown(struct drm_device *dev)
-{
-}
-
 static int psb_do_init(struct drm_device *dev)
 {
        struct drm_psb_private *dev_priv = dev->dev_private;
@@ -172,24 +176,6 @@ static int psb_do_init(struct drm_device *dev)
        dev_priv->gatt_free_offset = pg->mmu_gatt_start +
            (stolen_gtt << PAGE_SHIFT) * 1024;
 
-       if (1 || drm_debug) {
-               uint32_t core_id = PSB_RSGX32(PSB_CR_CORE_ID);
-               uint32_t core_rev = PSB_RSGX32(PSB_CR_CORE_REVISION);
-               DRM_INFO("SGX core id = 0x%08x\n", core_id);
-               DRM_INFO("SGX core rev major = 0x%02x, minor = 0x%02x\n",
-                        (core_rev & _PSB_CC_REVISION_MAJOR_MASK) >>
-                        _PSB_CC_REVISION_MAJOR_SHIFT,
-                        (core_rev & _PSB_CC_REVISION_MINOR_MASK) >>
-                        _PSB_CC_REVISION_MINOR_SHIFT);
-               DRM_INFO
-                   ("SGX core rev maintenance = 0x%02x, designer = 0x%02x\n",
-                    (core_rev & _PSB_CC_REVISION_MAINTENANCE_MASK) >>
-                    _PSB_CC_REVISION_MAINTENANCE_SHIFT,
-                    (core_rev & _PSB_CC_REVISION_DESIGNER_MASK) >>
-                    _PSB_CC_REVISION_DESIGNER_SHIFT);
-       }
-
-
        spin_lock_init(&dev_priv->irqmask_lock);
        spin_lock_init(&dev_priv->lock_2d);
 
@@ -204,7 +190,6 @@ static int psb_do_init(struct drm_device *dev)
        PSB_WSGX32(pg->gatt_start, PSB_CR_BIF_TWOD_REQ_BASE);
        return 0;
 out_err:
-       psb_do_takedown(dev);
        return ret;
 }
 
@@ -214,17 +199,16 @@ static int psb_driver_unload(struct drm_device *dev)
 
        /* Kill vblank etc here */
 
-       gma_backlight_exit(dev);
-       psb_modeset_cleanup(dev);
 
        if (dev_priv) {
-               psb_intel_opregion_fini(dev);
-               psb_lid_timer_takedown(dev_priv);
+               if (dev_priv->backlight_device)
+                       gma_backlight_exit(dev);
+               psb_modeset_cleanup(dev);
 
                if (dev_priv->ops->chip_teardown)
                        dev_priv->ops->chip_teardown(dev);
-               psb_do_takedown(dev);
 
+               psb_intel_opregion_fini(dev);
 
                if (dev_priv->pf_pd) {
                        psb_mmu_free_pagedir(dev_priv->pf_pd);
@@ -258,15 +242,13 @@ static int psb_driver_unload(struct drm_device *dev)
                        dev_priv->sgx_reg = NULL;
                }
 
+               /* Destroy VBT data */
+               psb_intel_destroy_bios(dev);
+
                kfree(dev_priv);
                dev->dev_private = NULL;
-
-               /*destroy VBT data*/
-               psb_intel_destroy_bios(dev);
        }
-
        gma_power_uninit(dev);
-
        return 0;
 }
 
@@ -290,11 +272,6 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
 
        pci_set_master(dev->pdev);
 
-       if (!IS_PSB(dev)) {
-               if (pci_enable_msi(dev->pdev))
-                       dev_warn(dev->dev, "Enabling MSI failed!\n");
-       }
-
        dev_priv->num_pipe = dev_priv->ops->pipes;
 
        resource_start = pci_resource_start(dev->pdev, PSB_MMIO_RESOURCE);
@@ -350,9 +327,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
        PSB_WSGX32(0x20000000, PSB_CR_PDS_EXEC_BASE);
        PSB_WSGX32(0x30000000, PSB_CR_BIF_3D_REQ_BASE);
 
-       acpi_video_register();
-       if (dev_priv->opregion.lid_state)
-               psb_lid_timer_init(dev_priv);
+/*     igd_opregion_init(&dev_priv->opregion_dev); */
+/*     acpi_video_register(); */
 
        ret = drm_vblank_init(dev, dev_priv->num_pipe);
        if (ret)
@@ -371,8 +347,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
        PSB_WVDC32(0x00000000, PSB_INT_ENABLE_R);
        PSB_WVDC32(0xFFFFFFFF, PSB_INT_MASK_R);
        spin_unlock_irqrestore(&dev_priv->irqmask_lock, irqflags);
-       if (IS_PSB(dev) && drm_core_check_feature(dev, DRIVER_MODESET))
-               drm_irq_install(dev);
+
+       drm_irq_install(dev);
 
        dev->vblank_disable_allowed = 1;
 
@@ -620,7 +596,7 @@ static const struct dev_pm_ops psb_pm_ops = {
        .runtime_idle = psb_runtime_idle,
 };
 
-static struct vm_operations_struct psb_gem_vm_ops = {
+static const struct vm_operations_struct psb_gem_vm_ops = {
        .fault = psb_gem_fault,
        .open = drm_gem_vm_open,
        .close = drm_gem_vm_close,