Add backported drm qxl fix (rhbz 1060327)
This commit is contained in:
parent
8b5b8cffdc
commit
05009c750b
|
@ -0,0 +1,119 @@
|
|||
Bugzilla: 1060327
|
||||
Upstream-status: Queued for 3.16
|
||||
|
||||
diff -up linux-3.14.2-200.fc20.i686/drivers/gpu/drm/drm_crtc_helper.c.dma linux-3.14.2-200.fc20.i686/drivers/gpu/drm/drm_crtc_helper.c
|
||||
--- linux-3.14.2-200.fc20.i686/drivers/gpu/drm/drm_crtc_helper.c.dma 2014-03-31 13:40:15.000000000 +1000
|
||||
+++ linux-3.14.2-200.fc20.i686/drivers/gpu/drm/drm_crtc_helper.c 2014-05-01 10:27:07.410210002 +1000
|
||||
@@ -120,8 +120,8 @@ static void drm_mode_validate_flag(struc
|
||||
* RETURNS:
|
||||
* Number of modes found on @connector.
|
||||
*/
|
||||
-int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
|
||||
- uint32_t maxX, uint32_t maxY)
|
||||
+static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connector *connector,
|
||||
+ uint32_t maxX, uint32_t maxY, bool merge_type_bits)
|
||||
{
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct drm_display_mode *mode;
|
||||
@@ -173,7 +173,7 @@ int drm_helper_probe_single_connector_mo
|
||||
if (count == 0)
|
||||
goto prune;
|
||||
|
||||
- drm_mode_connector_list_update(connector);
|
||||
+ drm_mode_connector_list_update(connector, merge_type_bits);
|
||||
|
||||
if (maxX && maxY)
|
||||
drm_mode_validate_size(dev, &connector->modes, maxX,
|
||||
@@ -213,8 +213,21 @@ prune:
|
||||
|
||||
return count;
|
||||
}
|
||||
+
|
||||
+int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
|
||||
+ uint32_t maxX, uint32_t maxY)
|
||||
+{
|
||||
+ return drm_helper_probe_single_connector_modes_merge_bits(connector, maxX, maxY, true);
|
||||
+}
|
||||
EXPORT_SYMBOL(drm_helper_probe_single_connector_modes);
|
||||
|
||||
+int drm_helper_probe_single_connector_modes_nomerge(struct drm_connector *connector,
|
||||
+ uint32_t maxX, uint32_t maxY)
|
||||
+{
|
||||
+ return drm_helper_probe_single_connector_modes_merge_bits(connector, maxX, maxY, false);
|
||||
+}
|
||||
+EXPORT_SYMBOL(drm_helper_probe_single_connector_modes_nomerge);
|
||||
+
|
||||
/**
|
||||
* drm_helper_encoder_in_use - check if a given encoder is in use
|
||||
* @encoder: encoder to check
|
||||
diff -up linux-3.14.2-200.fc20.i686/drivers/gpu/drm/drm_modes.c.dma linux-3.14.2-200.fc20.i686/drivers/gpu/drm/drm_modes.c
|
||||
--- linux-3.14.2-200.fc20.i686/drivers/gpu/drm/drm_modes.c.dma 2014-03-31 13:40:15.000000000 +1000
|
||||
+++ linux-3.14.2-200.fc20.i686/drivers/gpu/drm/drm_modes.c 2014-05-01 10:27:59.015207267 +1000
|
||||
@@ -1025,7 +1025,7 @@ EXPORT_SYMBOL(drm_mode_sort);
|
||||
* list and only adds different modes. All modes unverified after this point
|
||||
* will be removed by the prune invalid modes.
|
||||
*/
|
||||
-void drm_mode_connector_list_update(struct drm_connector *connector)
|
||||
+void drm_mode_connector_list_update(struct drm_connector *connector, bool merge_type_bits)
|
||||
{
|
||||
struct drm_display_mode *mode;
|
||||
struct drm_display_mode *pmode, *pt;
|
||||
@@ -1041,7 +1041,10 @@ void drm_mode_connector_list_update(stru
|
||||
/* if equal delete the probed mode */
|
||||
mode->status = pmode->status;
|
||||
/* Merge type bits together */
|
||||
- mode->type |= pmode->type;
|
||||
+ if (merge_type_bits)
|
||||
+ mode->type |= pmode->type;
|
||||
+ else
|
||||
+ mode->type = pmode->type;
|
||||
list_del(&pmode->head);
|
||||
drm_mode_destroy(connector->dev, pmode);
|
||||
break;
|
||||
diff -up linux-3.14.2-200.fc20.i686/drivers/gpu/drm/qxl/qxl_display.c.dma linux-3.14.2-200.fc20.i686/drivers/gpu/drm/qxl/qxl_display.c
|
||||
--- linux-3.14.2-200.fc20.i686/drivers/gpu/drm/qxl/qxl_display.c.dma 2014-03-31 13:40:15.000000000 +1000
|
||||
+++ linux-3.14.2-200.fc20.i686/drivers/gpu/drm/qxl/qxl_display.c 2014-05-01 10:27:07.411210001 +1000
|
||||
@@ -841,7 +841,7 @@ static const struct drm_connector_funcs
|
||||
.save = qxl_conn_save,
|
||||
.restore = qxl_conn_restore,
|
||||
.detect = qxl_conn_detect,
|
||||
- .fill_modes = drm_helper_probe_single_connector_modes,
|
||||
+ .fill_modes = drm_helper_probe_single_connector_modes_nomerge,
|
||||
.set_property = qxl_conn_set_property,
|
||||
.destroy = qxl_conn_destroy,
|
||||
};
|
||||
diff -up linux-3.14.2-200.fc20.i686/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c.dma linux-3.14.2-200.fc20.i686/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
|
||||
--- linux-3.14.2-200.fc20.i686/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c.dma 2014-03-31 13:40:15.000000000 +1000
|
||||
+++ linux-3.14.2-200.fc20.i686/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c 2014-05-01 10:27:07.411210001 +1000
|
||||
@@ -2003,7 +2003,7 @@ int vmw_du_connector_fill_modes(struct d
|
||||
if (du->pref_mode)
|
||||
list_move(&du->pref_mode->head, &connector->probed_modes);
|
||||
|
||||
- drm_mode_connector_list_update(connector);
|
||||
+ drm_mode_connector_list_update(connector, true);
|
||||
|
||||
return 1;
|
||||
}
|
||||
diff -up linux-3.14.2-200.fc20.i686/include/drm/drm_crtc.h.dma linux-3.14.2-200.fc20.i686/include/drm/drm_crtc.h
|
||||
--- linux-3.14.2-200.fc20.i686/include/drm/drm_crtc.h.dma 2014-03-31 13:40:15.000000000 +1000
|
||||
+++ linux-3.14.2-200.fc20.i686/include/drm/drm_crtc.h 2014-05-01 10:27:07.412210001 +1000
|
||||
@@ -1033,7 +1033,7 @@ extern int drm_mode_hsync(const struct d
|
||||
extern int drm_mode_vrefresh(const struct drm_display_mode *mode);
|
||||
extern void drm_mode_set_crtcinfo(struct drm_display_mode *p,
|
||||
int adjust_flags);
|
||||
-extern void drm_mode_connector_list_update(struct drm_connector *connector);
|
||||
+extern void drm_mode_connector_list_update(struct drm_connector *connector, bool merge_type_bits);
|
||||
extern int drm_mode_connector_update_edid_property(struct drm_connector *connector,
|
||||
struct edid *edid);
|
||||
extern int drm_object_property_set_value(struct drm_mode_object *obj,
|
||||
diff -up linux-3.14.2-200.fc20.i686/include/drm/drm_crtc_helper.h.dma linux-3.14.2-200.fc20.i686/include/drm/drm_crtc_helper.h
|
||||
--- linux-3.14.2-200.fc20.i686/include/drm/drm_crtc_helper.h.dma 2014-03-31 13:40:15.000000000 +1000
|
||||
+++ linux-3.14.2-200.fc20.i686/include/drm/drm_crtc_helper.h 2014-05-01 10:27:07.412210001 +1000
|
||||
@@ -126,6 +126,7 @@ struct drm_connector_helper_funcs {
|
||||
};
|
||||
|
||||
extern int drm_helper_probe_single_connector_modes(struct drm_connector *connector, uint32_t maxX, uint32_t maxY);
|
||||
+extern int drm_helper_probe_single_connector_modes_nomerge(struct drm_connector *connector, uint32_t maxX, uint32_t maxY);
|
||||
extern void drm_helper_disable_unused_functions(struct drm_device *dev);
|
||||
extern int drm_crtc_helper_set_config(struct drm_mode_set *set);
|
||||
extern bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
|
|
@ -754,6 +754,9 @@ Patch25069: mm-try_to_unmap_cluster-should-lock_page-before-mloc.patch
|
|||
#rhbz 983342 1093120
|
||||
Patch25070: 0001-acpi-video-Add-4-new-models-to-the-use_native_backli.patch
|
||||
|
||||
#rhbz 1060327
|
||||
Patch25071: drm-fix-qxl-mode-flags-backport.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
|
@ -1462,6 +1465,9 @@ ApplyPatch mm-try_to_unmap_cluster-should-lock_page-before-mloc.patch
|
|||
#rhbz 983342 1093120
|
||||
ApplyPatch 0001-acpi-video-Add-4-new-models-to-the-use_native_backli.patch
|
||||
|
||||
#rhbz 1060327
|
||||
ApplyPatch drm-fix-qxl-mode-flags-backport.patch
|
||||
|
||||
# END OF PATCH APPLICATIONS
|
||||
|
||||
%endif
|
||||
|
@ -2273,6 +2279,9 @@ fi
|
|||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Thu May 01 2014 Josh Boyer <jwboyer@fedoraproject.org>
|
||||
- Add backported drm qxl fix (rhbz 1060327)
|
||||
|
||||
* Thu May 1 2014 Hans de Goede <hdegoede@redhat.com>
|
||||
- Sync min/max quirk patch with upstream to add a quirk for the ThinkPad L540
|
||||
(rhbz 1088588)
|
||||
|
|
Loading…
Reference in New Issue