mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 20:42:56 +01:00
* enable i915 driver from Linux 3.14.5
* tested for generation 5 till 8 GPUs
The driver can be configured at run-time via the config ROM. Every
connector of the graphic card can be configured separately using the
following syntax
<config>
<connector name="LVDS-11" width="1280" height="800" enabled="true"/>
</config>
Also, when enabled within the intel framebuffer driver configuration like
the following
<config buffered="yes"/>
a simple ram dataspace is propagated to the client and the driver
itselfs copies from that buffer to the framebuffer triggered via refresh
calls. This option is useful to alleviate tearing effects.
The driver distributes all available connectors of the graphic card and
their supported resolutions via a report. It looks like follows
<connectors>
<connector name="LVDS-11" connected="1">
<mode width="1280" height="800" hz="60"/>
...
</connector>
...
</connectors>
The driver distributes the report only if this is stated within its
configuration, like the following
<config>
<report connectors="yes"/>
</config>
Fix #1764
30 lines
1.1 KiB
Diff
30 lines
1.1 KiB
Diff
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
|
index 963639d..f926f21 100644
|
|
--- a/drivers/gpu/drm/i915/intel_display.c
|
|
+++ b/drivers/gpu/drm/i915/intel_display.c
|
|
@@ -9867,6 +9867,11 @@ intel_set_config_compute_mode_changes(struct drm_mode_set *set,
|
|
config->mode_changed = true;
|
|
}
|
|
|
|
+ /**
|
|
+ * Adaption made for Genode context: ensure connector always uses a new fb
|
|
+ */
|
|
+ config->fb_changed = true;
|
|
+
|
|
DRM_DEBUG_KMS("computed changes for [CRTC:%d], mode_changed=%d, fb_changed=%d\n",
|
|
set->crtc->base.id, config->mode_changed, config->fb_changed);
|
|
}
|
|
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
|
|
index 3b7d32d..637f713 100644
|
|
--- a/drivers/gpu/drm/drm_crtc.c
|
|
+++ b/drivers/gpu/drm/drm_crtc.c
|
|
@@ -487,7 +487,7 @@ static void drm_framebuffer_free_bug(struct kref *kref)
|
|
static void __drm_framebuffer_unreference(struct drm_framebuffer *fb)
|
|
{
|
|
DRM_DEBUG("FB ID: %d\n", fb->base.id);
|
|
- kref_put(&fb->refcount, drm_framebuffer_free_bug);
|
|
+ /*kref_put(&fb->refcount, drm_framebuffer_free_bug);*/
|
|
}
|
|
|
|
/* dev->mode_config.fb_lock must be held! */
|