Revert "Delete unused intel drm patches"
This reverts commit 53392f03f5
.
This commit is contained in:
parent
53392f03f5
commit
f91329b1ad
|
@ -0,0 +1,21 @@
|
|||
omgwtfbbqchainsaw?
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 5 +++++
|
||||
1 files changed, 5 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
index e698343..21e601d1 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
||||
@@ -1090,6 +1090,11 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
|
||||
if (ret)
|
||||
goto pre_mutex_err;
|
||||
|
||||
+ /* We don't get the flushing right for these chipsets, use the
|
||||
+ * big hammer for now to avoid random crashiness. */
|
||||
+ if (IS_I85X(dev) || IS_I865G(dev))
|
||||
+ wbinvd();
|
||||
+
|
||||
if (dev_priv->mm.suspended) {
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
ret = -EBUSY;
|
|
@ -0,0 +1,44 @@
|
|||
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
|
||||
index f737960..b1f8164 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.c
|
||||
@@ -509,6 +509,8 @@ i915_pci_remove(struct pci_dev *pdev)
|
||||
{
|
||||
struct drm_device *dev = pci_get_drvdata(pdev);
|
||||
|
||||
+ pci_disable_device(pdev); /* core did previous enable */
|
||||
+
|
||||
drm_put_dev(dev);
|
||||
}
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
|
||||
index 300f64b..2e3db37 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_dp.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_dp.c
|
||||
@@ -795,7 +795,8 @@ static bool ironlake_edp_panel_on (struct intel_dp *intel_dp)
|
||||
{
|
||||
struct drm_device *dev = intel_dp->base.base.dev;
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
- u32 pp, idle_on_mask = PP_ON | PP_SEQUENCE_STATE_ON_IDLE;
|
||||
+ u32 pp, idle_on = PP_ON | PP_SEQUENCE_STATE_ON_IDLE;
|
||||
+ u32 idle_on_mask = PP_ON | PP_SEQUENCE_STATE_MASK;
|
||||
|
||||
if (I915_READ(PCH_PP_STATUS) & PP_ON)
|
||||
return true;
|
||||
@@ -816,7 +817,7 @@ static bool ironlake_edp_panel_on (struct intel_dp *intel_dp)
|
||||
*/
|
||||
msleep(300);
|
||||
|
||||
- if (wait_for((I915_READ(PCH_PP_STATUS) & idle_on_mask) == idle_on_mask,
|
||||
+ if (wait_for((I915_READ(PCH_PP_STATUS) & idle_on_mask) == idle_on,
|
||||
5000))
|
||||
DRM_ERROR("panel on wait timed out: 0x%08x\n",
|
||||
I915_READ(PCH_PP_STATUS));
|
||||
@@ -922,6 +923,7 @@ static void intel_dp_prepare(struct drm_encoder *encoder)
|
||||
|
||||
if (is_edp(intel_dp)) {
|
||||
ironlake_edp_backlight_off(dev);
|
||||
+ ironlake_edp_panel_off(dev);
|
||||
ironlake_edp_panel_on(intel_dp);
|
||||
if (!is_pch_edp(intel_dp))
|
||||
ironlake_edp_pll_on(encoder);
|
|
@ -0,0 +1,36 @@
|
|||
From ab737b006568d01204cc51368c7e2067eecb2cff Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Thu, 7 Apr 2011 13:31:57 +0200
|
||||
Subject: [PATCH] drm/i915: Add a no lvds quirk for the Asus EeeBox PC EB1007
|
||||
|
||||
I found this while figuring out why gnome-shell would not run on my
|
||||
Asus EeeBox PC EB1007. As a standalone "pc" this device cleary does not have
|
||||
an internal panel, yet it claims it does. Add a quirk to fix this.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++
|
||||
1 files changed, 8 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
|
||||
index a562bd2..954822a 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_lvds.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_lvds.c
|
||||
@@ -724,6 +724,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "U800"),
|
||||
},
|
||||
},
|
||||
+ {
|
||||
+ .callback = intel_no_lvds_dmi_callback,
|
||||
+ .ident = "Asus EeeBox PC EB1007",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "EB1007"),
|
||||
+ },
|
||||
+ },
|
||||
|
||||
{ } /* terminating entry */
|
||||
};
|
||||
--
|
||||
1.7.4.2
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
drivers/gpu/drm/i915/intel_display.c | 2 --
|
||||
1 files changed, 0 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 990f065..171a797 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -4568,7 +4568,6 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
|
||||
struct drm_connector *connector, int dpms_mode)
|
||||
{
|
||||
struct drm_encoder *encoder = &intel_encoder->base;
|
||||
- struct drm_device *dev = encoder->dev;
|
||||
struct drm_crtc *crtc = encoder->crtc;
|
||||
struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
|
||||
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
|
||||
@@ -4578,7 +4577,6 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
|
||||
connector->encoder = NULL;
|
||||
intel_encoder->load_detect_temp = false;
|
||||
crtc->enabled = drm_helper_crtc_in_use(crtc);
|
||||
- drm_helper_disable_unused_functions(dev);
|
||||
}
|
||||
|
||||
/* Switch crtc and encoder back off if necessary */
|
|
@ -0,0 +1 @@
|
|||
empty
|
|
@ -0,0 +1,128 @@
|
|||
From e8e7a2b8ccfdae0d4cb6bd25824bbedcd42da316 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Thu, 21 Apr 2011 22:18:32 +0100
|
||||
Subject: [PATCH] drm/i915: restore only the mode of this driver on lastclose (v2)
|
||||
|
||||
i915 calls the panic handler function on last close to reset the modes,
|
||||
however this is a really bad idea for multi-gpu machines, esp shareable
|
||||
gpus machines. So add a new entry point for the driver to just restore
|
||||
its own fbcon mode.
|
||||
|
||||
v2: move code into fb helper, fix panic code to block mode change on
|
||||
powered off GPUs.
|
||||
|
||||
[airlied: this hits drm core and I wrote it and it was reviewed on intel-gfx
|
||||
so really I signed it off twice ;-).]
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/drm_fb_helper.c | 27 ++++++++++++++++++++-------
|
||||
drivers/gpu/drm/i915/i915_dma.c | 2 +-
|
||||
drivers/gpu/drm/i915/intel_drv.h | 1 +
|
||||
drivers/gpu/drm/i915/intel_fb.c | 10 ++++++++++
|
||||
include/drm/drm_fb_helper.h | 1 +
|
||||
5 files changed, 33 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
|
||||
index 9507204..11d7a72 100644
|
||||
--- a/drivers/gpu/drm/drm_fb_helper.c
|
||||
+++ b/drivers/gpu/drm/drm_fb_helper.c
|
||||
@@ -342,9 +342,22 @@ int drm_fb_helper_debug_leave(struct fb_info *info)
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_debug_leave);
|
||||
|
||||
+bool drm_fb_helper_restore_fbdev_mode(struct drm_fb_helper *fb_helper)
|
||||
+{
|
||||
+ bool error = false;
|
||||
+ int i, ret;
|
||||
+ for (i = 0; i < fb_helper->crtc_count; i++) {
|
||||
+ struct drm_mode_set *mode_set = &fb_helper->crtc_info[i].mode_set;
|
||||
+ ret = drm_crtc_helper_set_config(mode_set);
|
||||
+ if (ret)
|
||||
+ error = true;
|
||||
+ }
|
||||
+ return error;
|
||||
+}
|
||||
+EXPORT_SYMBOL(drm_fb_helper_restore_fbdev_mode);
|
||||
+
|
||||
bool drm_fb_helper_force_kernel_mode(void)
|
||||
{
|
||||
- int i = 0;
|
||||
bool ret, error = false;
|
||||
struct drm_fb_helper *helper;
|
||||
|
||||
@@ -352,12 +365,12 @@ bool drm_fb_helper_force_kernel_mode(void)
|
||||
return false;
|
||||
|
||||
list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) {
|
||||
- for (i = 0; i < helper->crtc_count; i++) {
|
||||
- struct drm_mode_set *mode_set = &helper->crtc_info[i].mode_set;
|
||||
- ret = drm_crtc_helper_set_config(mode_set);
|
||||
- if (ret)
|
||||
- error = true;
|
||||
- }
|
||||
+ if (helper->dev->switch_power_state == DRM_SWITCH_POWER_OFF)
|
||||
+ continue;
|
||||
+
|
||||
+ ret = drm_fb_helper_restore_fbdev_mode(helper);
|
||||
+ if (ret)
|
||||
+ error = true;
|
||||
}
|
||||
return error;
|
||||
}
|
||||
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
|
||||
index 7273037..12876f2 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_dma.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_dma.c
|
||||
@@ -2207,7 +2207,7 @@ void i915_driver_lastclose(struct drm_device * dev)
|
||||
drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
|
||||
if (!dev_priv || drm_core_check_feature(dev, DRIVER_MODESET)) {
|
||||
- drm_fb_helper_restore();
|
||||
+ intel_fb_restore_mode(dev);
|
||||
vga_switcheroo_process_delayed_switch();
|
||||
return;
|
||||
}
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index f5b0d83..1d20712 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -338,4 +338,5 @@ extern int intel_overlay_attrs(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
extern void intel_fb_output_poll_changed(struct drm_device *dev);
|
||||
+extern void intel_fb_restore_mode(struct drm_device *dev);
|
||||
#endif /* __INTEL_DRV_H__ */
|
||||
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
|
||||
index 5127827..ec49bae 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_fb.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_fb.c
|
||||
@@ -264,3 +264,13 @@ void intel_fb_output_poll_changed(struct drm_device *dev)
|
||||
drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper);
|
||||
}
|
||||
+
|
||||
+void intel_fb_restore_mode(struct drm_device *dev)
|
||||
+{
|
||||
+ int ret;
|
||||
+ drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
+
|
||||
+ ret = drm_fb_helper_restore_fbdev_mode(&dev_priv->fbdev->helper);
|
||||
+ if (ret)
|
||||
+ DRM_DEBUG("failed to restore crtc mode\n");
|
||||
+}
|
||||
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
|
||||
index f22e7fe..ade09d7 100644
|
||||
--- a/include/drm/drm_fb_helper.h
|
||||
+++ b/include/drm/drm_fb_helper.h
|
||||
@@ -118,6 +118,7 @@ int drm_fb_helper_setcolreg(unsigned regno,
|
||||
unsigned transp,
|
||||
struct fb_info *info);
|
||||
|
||||
+bool drm_fb_helper_restore_fbdev_mode(struct drm_fb_helper *fb_helper);
|
||||
void drm_fb_helper_restore(void);
|
||||
void drm_fb_helper_fill_var(struct fb_info *info, struct drm_fb_helper *fb_helper,
|
||||
uint32_t fb_width, uint32_t fb_height);
|
||||
--
|
||||
1.7.1
|
||||
|
Loading…
Reference in New Issue