Lines Matching +full:edid +full:- +full:emulation
2 * Copyright(c) 2011-2016 Intel Corporation. All rights reserved.
52 int pipe = -1; in get_edp_pipe()
71 struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915; in edp_pipe_is_enabled()
72 struct intel_display *display = &dev_priv->display; in edp_pipe_is_enabled()
84 struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915; in pipe_is_enabled()
85 struct intel_display *display = &dev_priv->display; in pipe_is_enabled()
87 if (drm_WARN_ON(&dev_priv->drm, in pipe_is_enabled()
89 return -EINVAL; in pipe_is_enabled()
102 /* EDID with 1024x768 as its resolution */
136 /* EDID with 1920x1200 as its resolution */
185 struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915; in emulate_monitor_status_change()
186 struct intel_display *display = &dev_priv->display; in emulate_monitor_status_change()
266 * 24 bpp, 4 lanes, 154000 pixel clk (from virtual EDID), in emulate_monitor_status_change()
267 * DP link clk 1620 MHz and non-constant_n. in emulate_monitor_status_change()
276 /* Enable per-DDI/PORT vreg */ in emulate_monitor_status_change()
403 * 24 bpp, 4 lanes, 154000 pixel clk (from virtual EDID), in emulate_monitor_status_change()
404 * DP link clk 1620 MHz and non-constant_n. in emulate_monitor_status_change()
529 kfree(port->edid); in clean_virtual_dp_monitor()
530 port->edid = NULL; in clean_virtual_dp_monitor()
532 kfree(port->dpcd); in clean_virtual_dp_monitor()
533 port->dpcd = NULL; in clean_virtual_dp_monitor()
544 /* Set vblank emulation request per-vGPU bit */ in vblank_timer_fn()
545 intel_gvt_request_service(vgpu->gvt, in vblank_timer_fn()
546 INTEL_GVT_REQUEST_EMULATE_VBLANK + vgpu->id); in vblank_timer_fn()
547 hrtimer_add_expires_ns(&vblank_timer->timer, vblank_timer->period); in vblank_timer_fn()
554 struct drm_i915_private *i915 = vgpu->gvt->gt->i915; in setup_virtual_dp_monitor()
556 struct intel_vgpu_vblank_timer *vblank_timer = &vgpu->vblank_timer; in setup_virtual_dp_monitor()
558 if (drm_WARN_ON(&i915->drm, resolution >= GVT_EDID_NUM)) in setup_virtual_dp_monitor()
559 return -EINVAL; in setup_virtual_dp_monitor()
561 port->edid = kzalloc(sizeof(*(port->edid)), GFP_KERNEL); in setup_virtual_dp_monitor()
562 if (!port->edid) in setup_virtual_dp_monitor()
563 return -ENOMEM; in setup_virtual_dp_monitor()
565 port->dpcd = kzalloc(sizeof(*(port->dpcd)), GFP_KERNEL); in setup_virtual_dp_monitor()
566 if (!port->dpcd) { in setup_virtual_dp_monitor()
567 kfree(port->edid); in setup_virtual_dp_monitor()
568 return -ENOMEM; in setup_virtual_dp_monitor()
571 memcpy(port->edid->edid_block, virtual_dp_monitor_edid[resolution], in setup_virtual_dp_monitor()
573 port->edid->data_valid = true; in setup_virtual_dp_monitor()
575 memcpy(port->dpcd->data, dpcd_fix_data, DPCD_HEADER_SIZE); in setup_virtual_dp_monitor()
576 port->dpcd->data_valid = true; in setup_virtual_dp_monitor()
577 port->dpcd->data[DP_SINK_COUNT] = 0x1; in setup_virtual_dp_monitor()
578 port->type = type; in setup_virtual_dp_monitor()
579 port->id = resolution; in setup_virtual_dp_monitor()
580 port->vrefresh_k = GVT_DEFAULT_REFRESH_RATE * MSEC_PER_SEC; in setup_virtual_dp_monitor()
581 vgpu->display.port_num = port_num; in setup_virtual_dp_monitor()
584 hrtimer_init(&vblank_timer->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); in setup_virtual_dp_monitor()
585 vblank_timer->timer.function = vblank_timer_fn; in setup_virtual_dp_monitor()
586 vblank_timer->vrefresh_k = port->vrefresh_k; in setup_virtual_dp_monitor()
587 …vblank_timer->period = DIV64_U64_ROUND_CLOSEST(NSEC_PER_SEC * MSEC_PER_SEC, vblank_timer->vrefresh… in setup_virtual_dp_monitor()
595 * vgpu_update_vblank_emulation - Update per-vGPU vblank_timer
599 * This function is used to turn on/off or update the per-vGPU vblank_timer
606 struct intel_vgpu_vblank_timer *vblank_timer = &vgpu->vblank_timer; in vgpu_update_vblank_emulation()
608 intel_vgpu_port(vgpu, vgpu->display.port_num); in vgpu_update_vblank_emulation()
612 * Skip the re-enable if already active and vrefresh unchanged. in vgpu_update_vblank_emulation()
616 if (vblank_timer->vrefresh_k != port->vrefresh_k || in vgpu_update_vblank_emulation()
617 !hrtimer_active(&vblank_timer->timer)) { in vgpu_update_vblank_emulation()
619 if (hrtimer_active(&vblank_timer->timer)) in vgpu_update_vblank_emulation()
620 hrtimer_cancel(&vblank_timer->timer); in vgpu_update_vblank_emulation()
623 vblank_timer->vrefresh_k = port->vrefresh_k; in vgpu_update_vblank_emulation()
624 …vblank_timer->period = DIV64_U64_ROUND_CLOSEST(NSEC_PER_SEC * MSEC_PER_SEC, vblank_timer->vrefresh… in vgpu_update_vblank_emulation()
625 hrtimer_start(&vblank_timer->timer, in vgpu_update_vblank_emulation()
626 ktime_add_ns(ktime_get(), vblank_timer->period), in vgpu_update_vblank_emulation()
631 hrtimer_cancel(&vblank_timer->timer); in vgpu_update_vblank_emulation()
637 struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915; in emulate_vblank_on_pipe()
638 struct intel_display *display = &dev_priv->display; in emulate_vblank_on_pipe()
639 struct intel_vgpu_irq *irq = &vgpu->irq; in emulate_vblank_on_pipe()
650 for_each_set_bit(event, irq->flip_done_event[pipe], in emulate_vblank_on_pipe()
652 clear_bit(event, irq->flip_done_event[pipe]); in emulate_vblank_on_pipe()
667 struct drm_i915_private *i915 = vgpu->gvt->gt->i915; in intel_vgpu_emulate_vblank()
668 struct intel_display *display = &i915->display; in intel_vgpu_emulate_vblank()
671 mutex_lock(&vgpu->vgpu_lock); in intel_vgpu_emulate_vblank()
674 mutex_unlock(&vgpu->vgpu_lock); in intel_vgpu_emulate_vblank()
678 * intel_vgpu_emulate_hotplug - trigger hotplug event for vGPU
687 struct drm_i915_private *i915 = vgpu->gvt->gt->i915; in intel_vgpu_emulate_hotplug()
768 * intel_vgpu_clean_display - clean vGPU virtual display emulation
771 * This function is used to clean vGPU virtual display emulation stuffs
776 struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915; in intel_vgpu_clean_display()
790 * intel_vgpu_init_display- initialize vGPU virtual display emulation
794 * This function is used to initialize vGPU virtual display emulation stuffs
802 struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915; in intel_vgpu_init_display()
818 * intel_vgpu_reset_display- reset vGPU virtual display emulation
821 * This function is used to reset vGPU virtual display emulation stuffs