Lines Matching full:i915

1 /* i915_drv.c -- i830,i845,i855,i865,i915 driver -*- linux-c -*-
120 * The i915 workqueue is primarily used for batched retirement of in i915_workqueues_init()
133 dev_priv->wq = alloc_ordered_workqueue("i915", 0); in i915_workqueues_init()
137 dev_priv->display.hotplug.dp_wq = alloc_ordered_workqueue("i915-dp", 0); in i915_workqueues_init()
142 * The unordered i915 workqueue should be used for all work in i915_workqueues_init()
147 dev_priv->unordered_wq = alloc_workqueue("i915-unordered", 0, 0); in i915_workqueues_init()
203 static void sanitize_gpu(struct drm_i915_private *i915) in sanitize_gpu() argument
205 if (!intel_gt_gpu_reset_clobbers_display(to_gt(i915))) { in sanitize_gpu()
209 for_each_gt(gt, i915, i) in sanitize_gpu()
378 * @i915: valid i915 instance
386 static int i915_set_dma_info(struct drm_i915_private *i915) in i915_set_dma_info() argument
388 unsigned int mask_size = INTEL_INFO(i915)->dma_mask_size; in i915_set_dma_info()
397 dma_set_max_seg_size(i915->drm.dev, UINT_MAX); in i915_set_dma_info()
399 ret = dma_set_mask(i915->drm.dev, DMA_BIT_MASK(mask_size)); in i915_set_dma_info()
404 if (GRAPHICS_VER(i915) == 2) in i915_set_dma_info()
416 if (IS_I965G(i915) || IS_I965GM(i915)) in i915_set_dma_info()
419 ret = dma_set_coherent_mask(i915->drm.dev, DMA_BIT_MASK(mask_size)); in i915_set_dma_info()
426 drm_err(&i915->drm, "Can't set DMA mask/consistent mask (%d)\n", ret); in i915_set_dma_info()
431 static void i915_enable_g8(struct drm_i915_private *i915) in i915_enable_g8() argument
433 if (IS_DG2(i915)) { in i915_enable_g8()
434 if (IS_DG2_D(i915) && !intel_match_g8_cpu()) in i915_enable_g8()
437 snb_pcode_write_p(&i915->uncore, PCODE_POWER_SETUP, in i915_enable_g8()
442 static int i915_pcode_init(struct drm_i915_private *i915) in i915_pcode_init() argument
447 for_each_gt(gt, i915, id) { in i915_pcode_init()
455 i915_enable_g8(i915); in i915_pcode_init()
699 i915_print_iommu_status(struct drm_i915_private *i915, struct drm_printer *p) in i915_print_iommu_status() argument
702 str_enabled_disabled(i915_vtd_active(i915))); in i915_print_iommu_status()
742 struct drm_i915_private *i915; in i915_driver_create() local
744 i915 = devm_drm_dev_alloc(&pdev->dev, &i915_drm_driver, in i915_driver_create()
746 if (IS_ERR(i915)) in i915_driver_create()
747 return i915; in i915_driver_create()
749 pci_set_drvdata(pdev, &i915->drm); in i915_driver_create()
752 i915_params_copy(&i915->params, &i915_modparams); in i915_driver_create()
755 intel_device_info_driver_create(i915, pdev->device, match_info); in i915_driver_create()
759 return i915; in i915_driver_create()
775 struct drm_i915_private *i915; in i915_driver_probe() local
785 i915 = i915_driver_create(pdev, ent); in i915_driver_probe()
786 if (IS_ERR(i915)) { in i915_driver_probe()
788 return PTR_ERR(i915); in i915_driver_probe()
791 display = &i915->display; in i915_driver_probe()
793 ret = i915_driver_early_probe(i915); in i915_driver_probe()
797 disable_rpm_wakeref_asserts(&i915->runtime_pm); in i915_driver_probe()
799 intel_vgpu_detect(i915); in i915_driver_probe()
801 ret = intel_gt_probe_all(i915); in i915_driver_probe()
805 ret = i915_driver_mmio_probe(i915); in i915_driver_probe()
809 ret = i915_driver_hw_probe(i915); in i915_driver_probe()
817 ret = intel_irq_install(i915); in i915_driver_probe()
825 ret = i915_gem_init(i915); in i915_driver_probe()
829 ret = intel_pxp_init(i915); in i915_driver_probe()
831 drm_dbg(&i915->drm, "pxp init failed with %d\n", ret); in i915_driver_probe()
837 i915_driver_register(i915); in i915_driver_probe()
839 enable_rpm_wakeref_asserts(&i915->runtime_pm); in i915_driver_probe()
841 i915_welcome_messages(i915); in i915_driver_probe()
843 i915->do_release = true; in i915_driver_probe()
848 i915_gem_suspend(i915); in i915_driver_probe()
849 i915_gem_driver_remove(i915); in i915_driver_probe()
850 i915_gem_driver_release(i915); in i915_driver_probe()
854 intel_irq_uninstall(i915); in i915_driver_probe()
858 intel_irq_uninstall(i915); in i915_driver_probe()
862 i915_driver_hw_remove(i915); in i915_driver_probe()
863 intel_memory_regions_driver_release(i915); in i915_driver_probe()
864 i915_ggtt_driver_release(i915); in i915_driver_probe()
865 i915_gem_drain_freed_objects(i915); in i915_driver_probe()
866 i915_ggtt_driver_late_release(i915); in i915_driver_probe()
868 i915_driver_mmio_release(i915); in i915_driver_probe()
870 enable_rpm_wakeref_asserts(&i915->runtime_pm); in i915_driver_probe()
871 i915_driver_late_release(i915); in i915_driver_probe()
874 i915_probe_error(i915, "Device initialization failed (%d)\n", ret); in i915_driver_probe()
878 void i915_driver_remove(struct drm_i915_private *i915) in i915_driver_remove() argument
880 struct intel_display *display = &i915->display; in i915_driver_remove()
883 wakeref = intel_runtime_pm_get(&i915->runtime_pm); in i915_driver_remove()
885 i915_driver_unregister(i915); in i915_driver_remove()
890 i915_gem_suspend(i915); in i915_driver_remove()
892 intel_gvt_driver_remove(i915); in i915_driver_remove()
896 intel_irq_uninstall(i915); in i915_driver_remove()
900 i915_reset_error_state(i915); in i915_driver_remove()
901 i915_gem_driver_remove(i915); in i915_driver_remove()
905 i915_driver_hw_remove(i915); in i915_driver_remove()
907 intel_runtime_pm_put(&i915->runtime_pm, wakeref); in i915_driver_remove()
942 struct drm_i915_private *i915 = to_i915(dev); in i915_driver_open() local
945 ret = i915_gem_open(i915, file); in i915_driver_open()
965 void i915_driver_shutdown(struct drm_i915_private *i915) in i915_driver_shutdown() argument
967 struct intel_display *display = &i915->display; in i915_driver_shutdown()
969 disable_rpm_wakeref_asserts(&i915->runtime_pm); in i915_driver_shutdown()
970 intel_runtime_pm_disable(&i915->runtime_pm); in i915_driver_shutdown()
973 drm_client_dev_suspend(&i915->drm, false); in i915_driver_shutdown()
974 if (HAS_DISPLAY(i915)) { in i915_driver_shutdown()
975 drm_kms_helper_poll_disable(&i915->drm); in i915_driver_shutdown()
978 drm_atomic_helper_shutdown(&i915->drm); in i915_driver_shutdown()
983 intel_irq_suspend(i915); in i915_driver_shutdown()
984 intel_hpd_cancel_work(i915); in i915_driver_shutdown()
986 if (HAS_DISPLAY(i915)) in i915_driver_shutdown()
989 intel_encoder_suspend_all(&i915->display); in i915_driver_shutdown()
990 intel_encoder_shutdown_all(&i915->display); in i915_driver_shutdown()
992 intel_dmc_suspend(&i915->display); in i915_driver_shutdown()
994 i915_gem_suspend(i915); in i915_driver_shutdown()
1008 enable_rpm_wakeref_asserts(&i915->runtime_pm); in i915_driver_shutdown()
1010 intel_runtime_pm_driver_last_release(&i915->runtime_pm); in i915_driver_shutdown()
1024 struct drm_i915_private *i915 = to_i915(dev); in i915_drm_complete() local
1026 intel_pxp_resume_complete(i915->pxp); in i915_drm_complete()
1031 struct drm_i915_private *i915 = to_i915(dev); in i915_drm_prepare() local
1033 intel_pxp_suspend_prepare(i915->pxp); in i915_drm_prepare()
1041 return i915_gem_backup_suspend(i915); in i915_drm_prepare()
1147 int i915_driver_suspend_switcheroo(struct drm_i915_private *i915, in i915_driver_suspend_switcheroo() argument
1152 if (drm_WARN_ON_ONCE(&i915->drm, state.event != PM_EVENT_SUSPEND && in i915_driver_suspend_switcheroo()
1156 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_driver_suspend_switcheroo()
1159 error = i915_drm_suspend(&i915->drm); in i915_driver_suspend_switcheroo()
1163 return i915_drm_suspend_late(&i915->drm, false); in i915_driver_suspend_switcheroo()
1188 if (GRAPHICS_VER(gt->i915) >= 8) in i915_drm_resume()
1323 int i915_driver_resume_switcheroo(struct drm_i915_private *i915) in i915_driver_resume_switcheroo() argument
1327 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_driver_resume_switcheroo()
1330 ret = i915_drm_resume_early(&i915->drm); in i915_driver_resume_switcheroo()
1334 return i915_drm_resume(&i915->drm); in i915_driver_resume_switcheroo()
1339 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_prepare() local
1341 if (!i915) { in i915_pm_prepare()
1346 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_pm_prepare()
1349 return i915_drm_prepare(&i915->drm); in i915_pm_prepare()
1354 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_suspend() local
1356 if (!i915) { in i915_pm_suspend()
1361 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_pm_suspend()
1364 return i915_drm_suspend(&i915->drm); in i915_pm_suspend()
1369 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_suspend_late() local
1380 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_pm_suspend_late()
1383 return i915_drm_suspend_late(&i915->drm, false); in i915_pm_suspend_late()
1388 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_poweroff_late() local
1390 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_pm_poweroff_late()
1393 return i915_drm_suspend_late(&i915->drm, true); in i915_pm_poweroff_late()
1398 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_resume_early() local
1400 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_pm_resume_early()
1403 return i915_drm_resume_early(&i915->drm); in i915_pm_resume_early()
1408 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_resume() local
1410 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_pm_resume()
1413 return i915_drm_resume(&i915->drm); in i915_pm_resume()
1418 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_complete() local
1420 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_OFF) in i915_pm_complete()
1423 i915_drm_complete(&i915->drm); in i915_pm_complete()
1429 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_freeze() local
1432 if (i915->drm.switch_power_state != DRM_SWITCH_POWER_OFF) { in i915_pm_freeze()
1433 ret = i915_drm_suspend(&i915->drm); in i915_pm_freeze()
1438 ret = i915_gem_freeze(i915); in i915_pm_freeze()
1447 struct drm_i915_private *i915 = kdev_to_i915(kdev); in i915_pm_freeze_late() local
1450 if (i915->drm.switch_power_state != DRM_SWITCH_POWER_OFF) { in i915_pm_freeze_late()
1451 ret = i915_drm_suspend_late(&i915->drm, true); in i915_pm_freeze_late()
1456 ret = i915_gem_freeze_late(i915); in i915_pm_freeze_late()