diff options
| author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-12-17 14:24:02 -0500 |
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-12-17 14:24:02 -0500 |
| commit | 72a3697097b8dc92f5b8362598f5730a9986eb83 (patch) | |
| tree | 221a922470b6eb5c37a01ee2b2e5ae0c2070bbea | |
| parent | 22b8b13b6f436ffbb6e540f5f8039b1084a72794 (diff) | |
| parent | dafffda023b04f87e695dfcf5448e4da964d2e95 (diff) | |
Merge branch 'topic/core-stuff' into topic/atomic-core
Backmerge my drm-misc branch because of conflicts. Just simple stuff
but better to clear this out before I merge the other atomic patches.
Conflicts:
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_edid.c
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
| -rw-r--r-- | drivers/gpu/drm/armada/armada_crtc.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/bochs/bochs_kms.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_cache.c | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 90 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_info.c | 24 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_internal.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_irq.c | 11 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_plane_helper.c | 16 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/sti/sti_drm_crtc.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/tegra/dc.c | 5 | ||||
| -rw-r--r-- | include/uapi/drm/drm_mode.h | 8 |
13 files changed, 72 insertions, 122 deletions
diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c index e3a7a5078e5c..42d2ffa08716 100644 --- a/drivers/gpu/drm/armada/armada_crtc.c +++ b/drivers/gpu/drm/armada/armada_crtc.c | |||
| @@ -653,10 +653,6 @@ static int armada_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, | |||
| 653 | return 0; | 653 | return 0; |
| 654 | } | 654 | } |
| 655 | 655 | ||
| 656 | static void armada_drm_crtc_load_lut(struct drm_crtc *crtc) | ||
| 657 | { | ||
| 658 | } | ||
| 659 | |||
| 660 | /* The mode_config.mutex will be held for this call */ | 656 | /* The mode_config.mutex will be held for this call */ |
| 661 | static void armada_drm_crtc_disable(struct drm_crtc *crtc) | 657 | static void armada_drm_crtc_disable(struct drm_crtc *crtc) |
| 662 | { | 658 | { |
| @@ -678,7 +674,6 @@ static const struct drm_crtc_helper_funcs armada_crtc_helper_funcs = { | |||
| 678 | .mode_fixup = armada_drm_crtc_mode_fixup, | 674 | .mode_fixup = armada_drm_crtc_mode_fixup, |
| 679 | .mode_set = armada_drm_crtc_mode_set, | 675 | .mode_set = armada_drm_crtc_mode_set, |
| 680 | .mode_set_base = armada_drm_crtc_mode_set_base, | 676 | .mode_set_base = armada_drm_crtc_mode_set_base, |
| 681 | .load_lut = armada_drm_crtc_load_lut, | ||
| 682 | .disable = armada_drm_crtc_disable, | 677 | .disable = armada_drm_crtc_disable, |
| 683 | }; | 678 | }; |
| 684 | 679 | ||
diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c index 85f0f8cf1fb8..26bcd03a8cb6 100644 --- a/drivers/gpu/drm/bochs/bochs_kms.c +++ b/drivers/gpu/drm/bochs/bochs_kms.c | |||
| @@ -18,10 +18,6 @@ MODULE_PARM_DESC(defy, "default y resolution"); | |||
| 18 | 18 | ||
| 19 | /* ---------------------------------------------------------------------- */ | 19 | /* ---------------------------------------------------------------------- */ |
| 20 | 20 | ||
| 21 | static void bochs_crtc_load_lut(struct drm_crtc *crtc) | ||
| 22 | { | ||
| 23 | } | ||
| 24 | |||
| 25 | static void bochs_crtc_dpms(struct drm_crtc *crtc, int mode) | 21 | static void bochs_crtc_dpms(struct drm_crtc *crtc, int mode) |
| 26 | { | 22 | { |
| 27 | switch (mode) { | 23 | switch (mode) { |
| @@ -144,7 +140,6 @@ static const struct drm_crtc_helper_funcs bochs_helper_funcs = { | |||
| 144 | .mode_set_base = bochs_crtc_mode_set_base, | 140 | .mode_set_base = bochs_crtc_mode_set_base, |
| 145 | .prepare = bochs_crtc_prepare, | 141 | .prepare = bochs_crtc_prepare, |
| 146 | .commit = bochs_crtc_commit, | 142 | .commit = bochs_crtc_commit, |
| 147 | .load_lut = bochs_crtc_load_lut, | ||
| 148 | }; | 143 | }; |
| 149 | 144 | ||
| 150 | static void bochs_crtc_init(struct drm_device *dev) | 145 | static void bochs_crtc_init(struct drm_device *dev) |
diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c index a6b690626a6b..9a62d7a53553 100644 --- a/drivers/gpu/drm/drm_cache.c +++ b/drivers/gpu/drm/drm_cache.c | |||
| @@ -32,6 +32,7 @@ | |||
| 32 | #include <drm/drmP.h> | 32 | #include <drm/drmP.h> |
| 33 | 33 | ||
| 34 | #if defined(CONFIG_X86) | 34 | #if defined(CONFIG_X86) |
| 35 | #include <asm/smp.h> | ||
| 35 | 36 | ||
| 36 | /* | 37 | /* |
| 37 | * clflushopt is an unordered instruction which needs fencing with mfence or | 38 | * clflushopt is an unordered instruction which needs fencing with mfence or |
| @@ -64,12 +65,6 @@ static void drm_cache_flush_clflush(struct page *pages[], | |||
| 64 | drm_clflush_page(*pages++); | 65 | drm_clflush_page(*pages++); |
| 65 | mb(); | 66 | mb(); |
| 66 | } | 67 | } |
| 67 | |||
| 68 | static void | ||
| 69 | drm_clflush_ipi_handler(void *null) | ||
| 70 | { | ||
| 71 | wbinvd(); | ||
| 72 | } | ||
| 73 | #endif | 68 | #endif |
| 74 | 69 | ||
| 75 | void | 70 | void |
| @@ -82,7 +77,7 @@ drm_clflush_pages(struct page *pages[], unsigned long num_pages) | |||
| 82 | return; | 77 | return; |
| 83 | } | 78 | } |
| 84 | 79 | ||
| 85 | if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) | 80 | if (wbinvd_on_all_cpus()) |
| 86 | printk(KERN_ERR "Timed out waiting for cache flush.\n"); | 81 | printk(KERN_ERR "Timed out waiting for cache flush.\n"); |
| 87 | 82 | ||
| 88 | #elif defined(__powerpc__) | 83 | #elif defined(__powerpc__) |
| @@ -121,7 +116,7 @@ drm_clflush_sg(struct sg_table *st) | |||
| 121 | return; | 116 | return; |
| 122 | } | 117 | } |
| 123 | 118 | ||
| 124 | if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) | 119 | if (wbinvd_on_all_cpus()) |
| 125 | printk(KERN_ERR "Timed out waiting for cache flush.\n"); | 120 | printk(KERN_ERR "Timed out waiting for cache flush.\n"); |
| 126 | #else | 121 | #else |
| 127 | printk(KERN_ERR "Architecture has no drm_cache.c support\n"); | 122 | printk(KERN_ERR "Architecture has no drm_cache.c support\n"); |
| @@ -144,7 +139,7 @@ drm_clflush_virt_range(void *addr, unsigned long length) | |||
| 144 | return; | 139 | return; |
| 145 | } | 140 | } |
| 146 | 141 | ||
| 147 | if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) | 142 | if (wbinvd_on_all_cpus()) |
| 148 | printk(KERN_ERR "Timed out waiting for cache flush.\n"); | 143 | printk(KERN_ERR "Timed out waiting for cache flush.\n"); |
| 149 | #else | 144 | #else |
| 150 | printk(KERN_ERR "Architecture has no drm_cache.c support\n"); | 145 | printk(KERN_ERR "Architecture has no drm_cache.c support\n"); |
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 481bb2598b62..303c9918a2d5 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
| @@ -61,8 +61,8 @@ static struct drm_framebuffer *add_framebuffer_internal(struct drm_device *dev, | |||
| 61 | /* | 61 | /* |
| 62 | * Global properties | 62 | * Global properties |
| 63 | */ | 63 | */ |
| 64 | static const struct drm_prop_enum_list drm_dpms_enum_list[] = | 64 | static const struct drm_prop_enum_list drm_dpms_enum_list[] = { |
| 65 | { { DRM_MODE_DPMS_ON, "On" }, | 65 | { DRM_MODE_DPMS_ON, "On" }, |
| 66 | { DRM_MODE_DPMS_STANDBY, "Standby" }, | 66 | { DRM_MODE_DPMS_STANDBY, "Standby" }, |
| 67 | { DRM_MODE_DPMS_SUSPEND, "Suspend" }, | 67 | { DRM_MODE_DPMS_SUSPEND, "Suspend" }, |
| 68 | { DRM_MODE_DPMS_OFF, "Off" } | 68 | { DRM_MODE_DPMS_OFF, "Off" } |
| @@ -70,8 +70,7 @@ static const struct drm_prop_enum_list drm_dpms_enum_list[] = | |||
| 70 | 70 | ||
| 71 | DRM_ENUM_NAME_FN(drm_get_dpms_name, drm_dpms_enum_list) | 71 | DRM_ENUM_NAME_FN(drm_get_dpms_name, drm_dpms_enum_list) |
| 72 | 72 | ||
| 73 | static const struct drm_prop_enum_list drm_plane_type_enum_list[] = | 73 | static const struct drm_prop_enum_list drm_plane_type_enum_list[] = { |
| 74 | { | ||
| 75 | { DRM_PLANE_TYPE_OVERLAY, "Overlay" }, | 74 | { DRM_PLANE_TYPE_OVERLAY, "Overlay" }, |
| 76 | { DRM_PLANE_TYPE_PRIMARY, "Primary" }, | 75 | { DRM_PLANE_TYPE_PRIMARY, "Primary" }, |
| 77 | { DRM_PLANE_TYPE_CURSOR, "Cursor" }, | 76 | { DRM_PLANE_TYPE_CURSOR, "Cursor" }, |
| @@ -80,8 +79,7 @@ static const struct drm_prop_enum_list drm_plane_type_enum_list[] = | |||
| 80 | /* | 79 | /* |
| 81 | * Optional properties | 80 | * Optional properties |
| 82 | */ | 81 | */ |
| 83 | static const struct drm_prop_enum_list drm_scaling_mode_enum_list[] = | 82 | static const struct drm_prop_enum_list drm_scaling_mode_enum_list[] = { |
| 84 | { | ||
| 85 | { DRM_MODE_SCALE_NONE, "None" }, | 83 | { DRM_MODE_SCALE_NONE, "None" }, |
| 86 | { DRM_MODE_SCALE_FULLSCREEN, "Full" }, | 84 | { DRM_MODE_SCALE_FULLSCREEN, "Full" }, |
| 87 | { DRM_MODE_SCALE_CENTER, "Center" }, | 85 | { DRM_MODE_SCALE_CENTER, "Center" }, |
| @@ -97,8 +95,7 @@ static const struct drm_prop_enum_list drm_aspect_ratio_enum_list[] = { | |||
| 97 | /* | 95 | /* |
| 98 | * Non-global properties, but "required" for certain connectors. | 96 | * Non-global properties, but "required" for certain connectors. |
| 99 | */ | 97 | */ |
| 100 | static const struct drm_prop_enum_list drm_dvi_i_select_enum_list[] = | 98 | static const struct drm_prop_enum_list drm_dvi_i_select_enum_list[] = { |
| 101 | { | ||
| 102 | { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */ | 99 | { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */ |
| 103 | { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */ | 100 | { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */ |
| 104 | { DRM_MODE_SUBCONNECTOR_DVIA, "DVI-A" }, /* DVI-I */ | 101 | { DRM_MODE_SUBCONNECTOR_DVIA, "DVI-A" }, /* DVI-I */ |
| @@ -106,8 +103,7 @@ static const struct drm_prop_enum_list drm_dvi_i_select_enum_list[] = | |||
| 106 | 103 | ||
| 107 | DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name, drm_dvi_i_select_enum_list) | 104 | DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name, drm_dvi_i_select_enum_list) |
| 108 | 105 | ||
| 109 | static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] = | 106 | static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] = { |
| 110 | { | ||
| 111 | { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */ | 107 | { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */ |
| 112 | { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */ | 108 | { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */ |
| 113 | { DRM_MODE_SUBCONNECTOR_DVIA, "DVI-A" }, /* DVI-I */ | 109 | { DRM_MODE_SUBCONNECTOR_DVIA, "DVI-A" }, /* DVI-I */ |
| @@ -116,8 +112,7 @@ static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] = | |||
| 116 | DRM_ENUM_NAME_FN(drm_get_dvi_i_subconnector_name, | 112 | DRM_ENUM_NAME_FN(drm_get_dvi_i_subconnector_name, |
| 117 | drm_dvi_i_subconnector_enum_list) | 113 | drm_dvi_i_subconnector_enum_list) |
| 118 | 114 | ||
| 119 | static const struct drm_prop_enum_list drm_tv_select_enum_list[] = | 115 | static const struct drm_prop_enum_list drm_tv_select_enum_list[] = { |
| 120 | { | ||
| 121 | { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */ | 116 | { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */ |
| 122 | { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */ | 117 | { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */ |
| 123 | { DRM_MODE_SUBCONNECTOR_SVIDEO, "SVIDEO" }, /* TV-out */ | 118 | { DRM_MODE_SUBCONNECTOR_SVIDEO, "SVIDEO" }, /* TV-out */ |
| @@ -127,8 +122,7 @@ static const struct drm_prop_enum_list drm_tv_select_enum_list[] = | |||
| 127 | 122 | ||
| 128 | DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list) | 123 | DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list) |
| 129 | 124 | ||
| 130 | static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] = | 125 | static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] = { |
| 131 | { | ||
| 132 | { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */ | 126 | { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown" }, /* DVI-I and TV-out */ |
| 133 | { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */ | 127 | { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */ |
| 134 | { DRM_MODE_SUBCONNECTOR_SVIDEO, "SVIDEO" }, /* TV-out */ | 128 | { DRM_MODE_SUBCONNECTOR_SVIDEO, "SVIDEO" }, /* TV-out */ |
| @@ -154,8 +148,8 @@ struct drm_conn_prop_enum_list { | |||
| 154 | /* | 148 | /* |
| 155 | * Connector and encoder types. | 149 | * Connector and encoder types. |
| 156 | */ | 150 | */ |
| 157 | static struct drm_conn_prop_enum_list drm_connector_enum_list[] = | 151 | static struct drm_conn_prop_enum_list drm_connector_enum_list[] = { |
| 158 | { { DRM_MODE_CONNECTOR_Unknown, "Unknown" }, | 152 | { DRM_MODE_CONNECTOR_Unknown, "Unknown" }, |
| 159 | { DRM_MODE_CONNECTOR_VGA, "VGA" }, | 153 | { DRM_MODE_CONNECTOR_VGA, "VGA" }, |
| 160 | { DRM_MODE_CONNECTOR_DVII, "DVI-I" }, | 154 | { DRM_MODE_CONNECTOR_DVII, "DVI-I" }, |
| 161 | { DRM_MODE_CONNECTOR_DVID, "DVI-D" }, | 155 | { DRM_MODE_CONNECTOR_DVID, "DVI-D" }, |
| @@ -174,8 +168,8 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] = | |||
| 174 | { DRM_MODE_CONNECTOR_DSI, "DSI" }, | 168 | { DRM_MODE_CONNECTOR_DSI, "DSI" }, |
| 175 | }; | 169 | }; |
| 176 | 170 | ||
| 177 | static const struct drm_prop_enum_list drm_encoder_enum_list[] = | 171 | static const struct drm_prop_enum_list drm_encoder_enum_list[] = { |
| 178 | { { DRM_MODE_ENCODER_NONE, "None" }, | 172 | { DRM_MODE_ENCODER_NONE, "None" }, |
| 179 | { DRM_MODE_ENCODER_DAC, "DAC" }, | 173 | { DRM_MODE_ENCODER_DAC, "DAC" }, |
| 180 | { DRM_MODE_ENCODER_TMDS, "TMDS" }, | 174 | { DRM_MODE_ENCODER_TMDS, "TMDS" }, |
| 181 | { DRM_MODE_ENCODER_LVDS, "LVDS" }, | 175 | { DRM_MODE_ENCODER_LVDS, "LVDS" }, |
| @@ -185,8 +179,7 @@ static const struct drm_prop_enum_list drm_encoder_enum_list[] = | |||
| 185 | { DRM_MODE_ENCODER_DPMST, "DP MST" }, | 179 | { DRM_MODE_ENCODER_DPMST, "DP MST" }, |
| 186 | }; | 180 | }; |
| 187 | 181 | ||
| 188 | static const struct drm_prop_enum_list drm_subpixel_enum_list[] = | 182 | static const struct drm_prop_enum_list drm_subpixel_enum_list[] = { |
| 189 | { | ||
| 190 | { SubPixelUnknown, "Unknown" }, | 183 | { SubPixelUnknown, "Unknown" }, |
| 191 | { SubPixelHorizontalRGB, "Horizontal RGB" }, | 184 | { SubPixelHorizontalRGB, "Horizontal RGB" }, |
| 192 | { SubPixelHorizontalBGR, "Horizontal BGR" }, | 185 | { SubPixelHorizontalBGR, "Horizontal BGR" }, |
| @@ -1142,6 +1135,7 @@ EXPORT_SYMBOL(drm_encoder_init); | |||
| 1142 | void drm_encoder_cleanup(struct drm_encoder *encoder) | 1135 | void drm_encoder_cleanup(struct drm_encoder *encoder) |
| 1143 | { | 1136 | { |
| 1144 | struct drm_device *dev = encoder->dev; | 1137 | struct drm_device *dev = encoder->dev; |
| 1138 | |||
| 1145 | drm_modeset_lock_all(dev); | 1139 | drm_modeset_lock_all(dev); |
| 1146 | drm_mode_object_put(dev, &encoder->base); | 1140 | drm_mode_object_put(dev, &encoder->base); |
| 1147 | kfree(encoder->name); | 1141 | kfree(encoder->name); |
| @@ -1185,8 +1179,8 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane, | |||
| 1185 | plane->base.properties = &plane->properties; | 1179 | plane->base.properties = &plane->properties; |
| 1186 | plane->dev = dev; | 1180 | plane->dev = dev; |
| 1187 | plane->funcs = funcs; | 1181 | plane->funcs = funcs; |
| 1188 | plane->format_types = kmalloc(sizeof(uint32_t) * format_count, | 1182 | plane->format_types = kmalloc_array(format_count, sizeof(uint32_t), |
| 1189 | GFP_KERNEL); | 1183 | GFP_KERNEL); |
| 1190 | if (!plane->format_types) { | 1184 | if (!plane->format_types) { |
| 1191 | DRM_DEBUG_KMS("out of memory when allocating plane\n"); | 1185 | DRM_DEBUG_KMS("out of memory when allocating plane\n"); |
| 1192 | drm_mode_object_put(dev, &plane->base); | 1186 | drm_mode_object_put(dev, &plane->base); |
| @@ -1599,7 +1593,7 @@ static int drm_mode_group_init(struct drm_device *dev, struct drm_mode_group *gr | |||
| 1599 | total_objects += dev->mode_config.num_encoder; | 1593 | total_objects += dev->mode_config.num_encoder; |
| 1600 | total_objects += dev->mode_config.num_bridge; | 1594 | total_objects += dev->mode_config.num_bridge; |
| 1601 | 1595 | ||
| 1602 | group->id_list = kzalloc(total_objects * sizeof(uint32_t), GFP_KERNEL); | 1596 | group->id_list = kcalloc(total_objects, sizeof(uint32_t), GFP_KERNEL); |
| 1603 | if (!group->id_list) | 1597 | if (!group->id_list) |
| 1604 | return -ENOMEM; | 1598 | return -ENOMEM; |
| 1605 | 1599 | ||
| @@ -1629,7 +1623,8 @@ int drm_mode_group_init_legacy_group(struct drm_device *dev, | |||
| 1629 | struct drm_bridge *bridge; | 1623 | struct drm_bridge *bridge; |
| 1630 | int ret; | 1624 | int ret; |
| 1631 | 1625 | ||
| 1632 | if ((ret = drm_mode_group_init(dev, group))) | 1626 | ret = drm_mode_group_init(dev, group); |
| 1627 | if (ret) | ||
| 1633 | return ret; | 1628 | return ret; |
| 1634 | 1629 | ||
| 1635 | list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) | 1630 | list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) |
| @@ -2045,11 +2040,9 @@ int drm_mode_getconnector(struct drm_device *dev, void *data, | |||
| 2045 | 2040 | ||
| 2046 | props_count = connector->properties.count; | 2041 | props_count = connector->properties.count; |
| 2047 | 2042 | ||
| 2048 | for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) { | 2043 | for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) |
| 2049 | if (connector->encoder_ids[i] != 0) { | 2044 | if (connector->encoder_ids[i] != 0) |
| 2050 | encoders_count++; | 2045 | encoders_count++; |
| 2051 | } | ||
| 2052 | } | ||
| 2053 | 2046 | ||
| 2054 | if (out_resp->count_modes == 0) { | 2047 | if (out_resp->count_modes == 0) { |
| 2055 | connector->funcs->fill_modes(connector, | 2048 | connector->funcs->fill_modes(connector, |
| @@ -2533,7 +2526,7 @@ int drm_mode_setplane(struct drm_device *dev, void *data, | |||
| 2533 | * | 2526 | * |
| 2534 | * This is a little helper to wrap internal calls to the ->set_config driver | 2527 | * This is a little helper to wrap internal calls to the ->set_config driver |
| 2535 | * interface. The only thing it adds is correct refcounting dance. | 2528 | * interface. The only thing it adds is correct refcounting dance. |
| 2536 | * | 2529 | * |
| 2537 | * Returns: | 2530 | * Returns: |
| 2538 | * Zero on success, negative errno on failure. | 2531 | * Zero on success, negative errno on failure. |
| 2539 | */ | 2532 | */ |
| @@ -2725,9 +2718,9 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, | |||
| 2725 | goto out; | 2718 | goto out; |
| 2726 | } | 2719 | } |
| 2727 | 2720 | ||
| 2728 | connector_set = kmalloc(crtc_req->count_connectors * | 2721 | connector_set = kmalloc_array(crtc_req->count_connectors, |
| 2729 | sizeof(struct drm_connector *), | 2722 | sizeof(struct drm_connector *), |
| 2730 | GFP_KERNEL); | 2723 | GFP_KERNEL); |
| 2731 | if (!connector_set) { | 2724 | if (!connector_set) { |
| 2732 | ret = -ENOMEM; | 2725 | ret = -ENOMEM; |
| 2733 | goto out; | 2726 | goto out; |
| @@ -2972,6 +2965,7 @@ int drm_mode_cursor2_ioctl(struct drm_device *dev, | |||
| 2972 | void *data, struct drm_file *file_priv) | 2965 | void *data, struct drm_file *file_priv) |
| 2973 | { | 2966 | { |
| 2974 | struct drm_mode_cursor2 *req = data; | 2967 | struct drm_mode_cursor2 *req = data; |
| 2968 | |||
| 2975 | return drm_mode_cursor_common(dev, req, file_priv); | 2969 | return drm_mode_cursor_common(dev, req, file_priv); |
| 2976 | } | 2970 | } |
| 2977 | 2971 | ||
| @@ -3419,7 +3413,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev, | |||
| 3419 | ret = -EINVAL; | 3413 | ret = -EINVAL; |
| 3420 | goto out_err1; | 3414 | goto out_err1; |
| 3421 | } | 3415 | } |
| 3422 | clips = kzalloc(num_clips * sizeof(*clips), GFP_KERNEL); | 3416 | clips = kcalloc(num_clips, sizeof(*clips), GFP_KERNEL); |
| 3423 | if (!clips) { | 3417 | if (!clips) { |
| 3424 | ret = -ENOMEM; | 3418 | ret = -ENOMEM; |
| 3425 | goto out_err1; | 3419 | goto out_err1; |
| @@ -3520,7 +3514,8 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags, | |||
| 3520 | property->dev = dev; | 3514 | property->dev = dev; |
| 3521 | 3515 | ||
| 3522 | if (num_values) { | 3516 | if (num_values) { |
| 3523 | property->values = kzalloc(sizeof(uint64_t)*num_values, GFP_KERNEL); | 3517 | property->values = kcalloc(num_values, sizeof(uint64_t), |
| 3518 | GFP_KERNEL); | ||
| 3524 | if (!property->values) | 3519 | if (!property->values) |
| 3525 | goto fail; | 3520 | goto fail; |
| 3526 | } | 3521 | } |
| @@ -4061,7 +4056,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev, | |||
| 4061 | 4056 | ||
| 4062 | if (out_resp->length == blob->length) { | 4057 | if (out_resp->length == blob->length) { |
| 4063 | blob_ptr = (void __user *)(unsigned long)out_resp->data; | 4058 | blob_ptr = (void __user *)(unsigned long)out_resp->data; |
| 4064 | if (copy_to_user(blob_ptr, blob->data, blob->length)){ | 4059 | if (copy_to_user(blob_ptr, blob->data, blob->length)) { |
| 4065 | ret = -EFAULT; | 4060 | ret = -EFAULT; |
| 4066 | goto done; | 4061 | goto done; |
| 4067 | } | 4062 | } |
| @@ -4208,6 +4203,8 @@ EXPORT_SYMBOL(drm_mode_connector_update_edid_property); | |||
| 4208 | static bool drm_property_change_valid_get(struct drm_property *property, | 4203 | static bool drm_property_change_valid_get(struct drm_property *property, |
| 4209 | uint64_t value, struct drm_mode_object **ref) | 4204 | uint64_t value, struct drm_mode_object **ref) |
| 4210 | { | 4205 | { |
| 4206 | int i; | ||
| 4207 | |||
| 4211 | if (property->flags & DRM_MODE_PROP_IMMUTABLE) | 4208 | if (property->flags & DRM_MODE_PROP_IMMUTABLE) |
| 4212 | return false; | 4209 | return false; |
| 4213 | 4210 | ||
| @@ -4219,13 +4216,14 @@ static bool drm_property_change_valid_get(struct drm_property *property, | |||
| 4219 | return true; | 4216 | return true; |
| 4220 | } else if (drm_property_type_is(property, DRM_MODE_PROP_SIGNED_RANGE)) { | 4217 | } else if (drm_property_type_is(property, DRM_MODE_PROP_SIGNED_RANGE)) { |
| 4221 | int64_t svalue = U642I64(value); | 4218 | int64_t svalue = U642I64(value); |
| 4219 | |||
| 4222 | if (svalue < U642I64(property->values[0]) || | 4220 | if (svalue < U642I64(property->values[0]) || |
| 4223 | svalue > U642I64(property->values[1])) | 4221 | svalue > U642I64(property->values[1])) |
| 4224 | return false; | 4222 | return false; |
| 4225 | return true; | 4223 | return true; |
| 4226 | } else if (drm_property_type_is(property, DRM_MODE_PROP_BITMASK)) { | 4224 | } else if (drm_property_type_is(property, DRM_MODE_PROP_BITMASK)) { |
| 4227 | int i; | ||
| 4228 | uint64_t valid_mask = 0; | 4225 | uint64_t valid_mask = 0; |
| 4226 | |||
| 4229 | for (i = 0; i < property->num_values; i++) | 4227 | for (i = 0; i < property->num_values; i++) |
| 4230 | valid_mask |= (1ULL << property->values[i]); | 4228 | valid_mask |= (1ULL << property->values[i]); |
| 4231 | return !(value & ~valid_mask); | 4229 | return !(value & ~valid_mask); |
| @@ -4257,6 +4255,11 @@ static bool drm_property_change_valid_get(struct drm_property *property, | |||
| 4257 | return true; | 4255 | return true; |
| 4258 | return false; | 4256 | return false; |
| 4259 | } | 4257 | } |
| 4258 | |||
| 4259 | for (i = 0; i < property->num_values; i++) | ||
| 4260 | if (property->values[i] == value) | ||
| 4261 | return true; | ||
| 4262 | return false; | ||
| 4260 | } | 4263 | } |
| 4261 | 4264 | ||
| 4262 | static void drm_property_change_valid_put(struct drm_property *property, | 4265 | static void drm_property_change_valid_put(struct drm_property *property, |
| @@ -4564,7 +4567,8 @@ int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc, | |||
| 4564 | { | 4567 | { |
| 4565 | crtc->gamma_size = gamma_size; | 4568 | crtc->gamma_size = gamma_size; |
| 4566 | 4569 | ||
| 4567 | crtc->gamma_store = kzalloc(gamma_size * sizeof(uint16_t) * 3, GFP_KERNEL); | 4570 | crtc->gamma_store = kcalloc(gamma_size, sizeof(uint16_t) * 3, |
| 4571 | GFP_KERNEL); | ||
| 4568 | if (!crtc->gamma_store) { | 4572 | if (!crtc->gamma_store) { |
| 4569 | crtc->gamma_size = 0; | 4573 | crtc->gamma_size = 0; |
| 4570 | return -ENOMEM; | 4574 | return -ENOMEM; |
| @@ -4779,23 +4783,23 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, | |||
| 4779 | if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT) { | 4783 | if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT) { |
| 4780 | ret = -ENOMEM; | 4784 | ret = -ENOMEM; |
| 4781 | spin_lock_irqsave(&dev->event_lock, flags); | 4785 | spin_lock_irqsave(&dev->event_lock, flags); |
| 4782 | if (file_priv->event_space < sizeof e->event) { | 4786 | if (file_priv->event_space < sizeof(e->event)) { |
| 4783 | spin_unlock_irqrestore(&dev->event_lock, flags); | 4787 | spin_unlock_irqrestore(&dev->event_lock, flags); |
| 4784 | goto out; | 4788 | goto out; |
| 4785 | } | 4789 | } |
| 4786 | file_priv->event_space -= sizeof e->event; | 4790 | file_priv->event_space -= sizeof(e->event); |
| 4787 | spin_unlock_irqrestore(&dev->event_lock, flags); | 4791 | spin_unlock_irqrestore(&dev->event_lock, flags); |
| 4788 | 4792 | ||
| 4789 | e = kzalloc(sizeof *e, GFP_KERNEL); | 4793 | e = kzalloc(sizeof(*e), GFP_KERNEL); |
| 4790 | if (e == NULL) { | 4794 | if (e == NULL) { |
| 4791 | spin_lock_irqsave(&dev->event_lock, flags); | 4795 | spin_lock_irqsave(&dev->event_lock, flags); |
| 4792 | file_priv->event_space += sizeof e->event; | 4796 | file_priv->event_space += sizeof(e->event); |
| 4793 | spin_unlock_irqrestore(&dev->event_lock, flags); | 4797 | spin_unlock_irqrestore(&dev->event_lock, flags); |
| 4794 | goto out; | 4798 | goto out; |
| 4795 | } | 4799 | } |
| 4796 | 4800 | ||
| 4797 | e->event.base.type = DRM_EVENT_FLIP_COMPLETE; | 4801 | e->event.base.type = DRM_EVENT_FLIP_COMPLETE; |
| 4798 | e->event.base.length = sizeof e->event; | 4802 | e->event.base.length = sizeof(e->event); |
| 4799 | e->event.user_data = page_flip->user_data; | 4803 | e->event.user_data = page_flip->user_data; |
| 4800 | e->base.event = &e->event.base; | 4804 | e->base.event = &e->event.base; |
| 4801 | e->base.file_priv = file_priv; | 4805 | e->base.file_priv = file_priv; |
| @@ -4808,7 +4812,7 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, | |||
| 4808 | if (ret) { | 4812 | if (ret) { |
| 4809 | if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT) { | 4813 | if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT) { |
| 4810 | spin_lock_irqsave(&dev->event_lock, flags); | 4814 | spin_lock_irqsave(&dev->event_lock, flags); |
| 4811 | file_priv->event_space += sizeof e->event; | 4815 | file_priv->event_space += sizeof(e->event); |
| 4812 | spin_unlock_irqrestore(&dev->event_lock, flags); | 4816 | spin_unlock_irqrestore(&dev->event_lock, flags); |
| 4813 | kfree(e); | 4817 | kfree(e); |
| 4814 | } | 4818 | } |
diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c index 51efebd434f3..f1b32f91d941 100644 --- a/drivers/gpu/drm/drm_info.c +++ b/drivers/gpu/drm/drm_info.c | |||
| @@ -153,30 +153,6 @@ int drm_bufs_info(struct seq_file *m, void *data) | |||
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | /** | 155 | /** |
| 156 | * Called when "/proc/dri/.../vblank" is read. | ||
| 157 | */ | ||
| 158 | int drm_vblank_info(struct seq_file *m, void *data) | ||
| 159 | { | ||
| 160 | struct drm_info_node *node = (struct drm_info_node *) m->private; | ||
| 161 | struct drm_device *dev = node->minor->dev; | ||
| 162 | int crtc; | ||
| 163 | |||
| 164 | mutex_lock(&dev->struct_mutex); | ||
| 165 | for (crtc = 0; crtc < dev->num_crtcs; crtc++) { | ||
| 166 | seq_printf(m, "CRTC %d enable: %d\n", | ||
| 167 | crtc, atomic_read(&dev->vblank[crtc].refcount)); | ||
| 168 | seq_printf(m, "CRTC %d counter: %d\n", | ||
| 169 | crtc, drm_vblank_count(dev, crtc)); | ||
| 170 | seq_printf(m, "CRTC %d last wait: %d\n", | ||
| 171 | crtc, dev->vblank[crtc].last_wait); | ||
| 172 | seq_printf(m, "CRTC %d in modeset: %d\n", | ||
| 173 | crtc, dev->vblank[crtc].inmodeset); | ||
| 174 | } | ||
| 175 | mutex_unlock(&dev->struct_mutex); | ||
| 176 | return 0; | ||
| 177 | } | ||
| 178 | |||
| 179 | /** | ||
| 180 | * Called when "/proc/dri/.../clients" is read. | 156 | * Called when "/proc/dri/.../clients" is read. |
| 181 | * | 157 | * |
| 182 | */ | 158 | */ |
diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h index 7cc0a3516871..12a61d706827 100644 --- a/drivers/gpu/drm/drm_internal.h +++ b/drivers/gpu/drm/drm_internal.h | |||
| @@ -55,7 +55,6 @@ void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpr | |||
| 55 | int drm_name_info(struct seq_file *m, void *data); | 55 | int drm_name_info(struct seq_file *m, void *data); |
| 56 | int drm_vm_info(struct seq_file *m, void *data); | 56 | int drm_vm_info(struct seq_file *m, void *data); |
| 57 | int drm_bufs_info(struct seq_file *m, void *data); | 57 | int drm_bufs_info(struct seq_file *m, void *data); |
| 58 | int drm_vblank_info(struct seq_file *m, void *data); | ||
| 59 | int drm_clients_info(struct seq_file *m, void* data); | 58 | int drm_clients_info(struct seq_file *m, void* data); |
| 60 | int drm_gem_name_info(struct seq_file *m, void *data); | 59 | int drm_gem_name_info(struct seq_file *m, void *data); |
| 61 | 60 | ||
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index f5a5f18efa5b..920cdb91e9d0 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c | |||
| @@ -778,7 +778,7 @@ static struct timeval get_drm_timestamp(void) | |||
| 778 | 778 | ||
| 779 | /** | 779 | /** |
| 780 | * drm_get_last_vbltimestamp - retrieve raw timestamp for the most recent | 780 | * drm_get_last_vbltimestamp - retrieve raw timestamp for the most recent |
| 781 | * vblank interval | 781 | * vblank interval |
| 782 | * @dev: DRM device | 782 | * @dev: DRM device |
| 783 | * @crtc: which CRTC's vblank timestamp to retrieve | 783 | * @crtc: which CRTC's vblank timestamp to retrieve |
| 784 | * @tvblank: Pointer to target struct timeval which should receive the timestamp | 784 | * @tvblank: Pointer to target struct timeval which should receive the timestamp |
| @@ -910,6 +910,7 @@ void drm_send_vblank_event(struct drm_device *dev, int crtc, | |||
| 910 | { | 910 | { |
| 911 | struct timeval now; | 911 | struct timeval now; |
| 912 | unsigned int seq; | 912 | unsigned int seq; |
| 913 | |||
| 913 | if (crtc >= 0) { | 914 | if (crtc >= 0) { |
| 914 | seq = drm_vblank_count_and_time(dev, crtc, &now); | 915 | seq = drm_vblank_count_and_time(dev, crtc, &now); |
| 915 | } else { | 916 | } else { |
| @@ -1382,7 +1383,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe, | |||
| 1382 | unsigned int seq; | 1383 | unsigned int seq; |
| 1383 | int ret; | 1384 | int ret; |
| 1384 | 1385 | ||
| 1385 | e = kzalloc(sizeof *e, GFP_KERNEL); | 1386 | e = kzalloc(sizeof(*e), GFP_KERNEL); |
| 1386 | if (e == NULL) { | 1387 | if (e == NULL) { |
| 1387 | ret = -ENOMEM; | 1388 | ret = -ENOMEM; |
| 1388 | goto err_put; | 1389 | goto err_put; |
| @@ -1391,7 +1392,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe, | |||
| 1391 | e->pipe = pipe; | 1392 | e->pipe = pipe; |
| 1392 | e->base.pid = current->pid; | 1393 | e->base.pid = current->pid; |
| 1393 | e->event.base.type = DRM_EVENT_VBLANK; | 1394 | e->event.base.type = DRM_EVENT_VBLANK; |
| 1394 | e->event.base.length = sizeof e->event; | 1395 | e->event.base.length = sizeof(e->event); |
| 1395 | e->event.user_data = vblwait->request.signal; | 1396 | e->event.user_data = vblwait->request.signal; |
| 1396 | e->base.event = &e->event.base; | 1397 | e->base.event = &e->event.base; |
| 1397 | e->base.file_priv = file_priv; | 1398 | e->base.file_priv = file_priv; |
| @@ -1411,12 +1412,12 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe, | |||
| 1411 | goto err_unlock; | 1412 | goto err_unlock; |
| 1412 | } | 1413 | } |
| 1413 | 1414 | ||
| 1414 | if (file_priv->event_space < sizeof e->event) { | 1415 | if (file_priv->event_space < sizeof(e->event)) { |
| 1415 | ret = -EBUSY; | 1416 | ret = -EBUSY; |
| 1416 | goto err_unlock; | 1417 | goto err_unlock; |
| 1417 | } | 1418 | } |
| 1418 | 1419 | ||
| 1419 | file_priv->event_space -= sizeof e->event; | 1420 | file_priv->event_space -= sizeof(e->event); |
| 1420 | seq = drm_vblank_count_and_time(dev, pipe, &now); | 1421 | seq = drm_vblank_count_and_time(dev, pipe, &now); |
| 1421 | 1422 | ||
| 1422 | if ((vblwait->request.type & _DRM_VBLANK_NEXTONMISS) && | 1423 | if ((vblwait->request.type & _DRM_VBLANK_NEXTONMISS) && |
diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c index ae61fb21ea86..f24c4cfe674b 100644 --- a/drivers/gpu/drm/drm_plane_helper.c +++ b/drivers/gpu/drm/drm_plane_helper.c | |||
| @@ -142,6 +142,17 @@ int drm_plane_helper_check_update(struct drm_plane *plane, | |||
| 142 | { | 142 | { |
| 143 | int hscale, vscale; | 143 | int hscale, vscale; |
| 144 | 144 | ||
| 145 | if (!fb) { | ||
| 146 | *visible = false; | ||
| 147 | return 0; | ||
| 148 | } | ||
| 149 | |||
| 150 | /* crtc should only be NULL when disabling (i.e., !fb) */ | ||
| 151 | if (WARN_ON(!crtc)) { | ||
| 152 | *visible = false; | ||
| 153 | return 0; | ||
| 154 | } | ||
| 155 | |||
| 145 | if (!crtc->enabled && !can_update_disabled) { | 156 | if (!crtc->enabled && !can_update_disabled) { |
| 146 | DRM_DEBUG_KMS("Cannot update plane of a disabled CRTC.\n"); | 157 | DRM_DEBUG_KMS("Cannot update plane of a disabled CRTC.\n"); |
| 147 | return -EINVAL; | 158 | return -EINVAL; |
| @@ -155,11 +166,6 @@ int drm_plane_helper_check_update(struct drm_plane *plane, | |||
| 155 | return -ERANGE; | 166 | return -ERANGE; |
| 156 | } | 167 | } |
| 157 | 168 | ||
| 158 | if (!fb) { | ||
| 159 | *visible = false; | ||
| 160 | return 0; | ||
| 161 | } | ||
| 162 | |||
| 163 | *visible = drm_rect_clip_scaled(src, dest, clip, hscale, vscale); | 169 | *visible = drm_rect_clip_scaled(src, dest, clip, hscale, vscale); |
| 164 | if (!*visible) | 170 | if (!*visible) |
| 165 | /* | 171 | /* |
diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c index a7672e100d8b..ac2a6ebce674 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | |||
| @@ -323,10 +323,6 @@ static void mdp4_crtc_commit(struct drm_crtc *crtc) | |||
| 323 | drm_crtc_vblank_put(crtc); | 323 | drm_crtc_vblank_put(crtc); |
| 324 | } | 324 | } |
| 325 | 325 | ||
| 326 | static void mdp4_crtc_load_lut(struct drm_crtc *crtc) | ||
| 327 | { | ||
| 328 | } | ||
| 329 | |||
| 330 | static int mdp4_crtc_atomic_check(struct drm_crtc *crtc, | 326 | static int mdp4_crtc_atomic_check(struct drm_crtc *crtc, |
| 331 | struct drm_crtc_state *state) | 327 | struct drm_crtc_state *state) |
| 332 | { | 328 | { |
| @@ -524,7 +520,6 @@ static const struct drm_crtc_helper_funcs mdp4_crtc_helper_funcs = { | |||
| 524 | .mode_set_base = drm_helper_crtc_mode_set_base, | 520 | .mode_set_base = drm_helper_crtc_mode_set_base, |
| 525 | .prepare = mdp4_crtc_prepare, | 521 | .prepare = mdp4_crtc_prepare, |
| 526 | .commit = mdp4_crtc_commit, | 522 | .commit = mdp4_crtc_commit, |
| 527 | .load_lut = mdp4_crtc_load_lut, | ||
| 528 | .atomic_check = mdp4_crtc_atomic_check, | 523 | .atomic_check = mdp4_crtc_atomic_check, |
| 529 | .atomic_begin = mdp4_crtc_atomic_begin, | 524 | .atomic_begin = mdp4_crtc_atomic_begin, |
| 530 | .atomic_flush = mdp4_crtc_atomic_flush, | 525 | .atomic_flush = mdp4_crtc_atomic_flush, |
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c index 0e9a2e3a82d7..92d52a56b3b8 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | |||
| @@ -275,10 +275,6 @@ static void mdp5_crtc_commit(struct drm_crtc *crtc) | |||
| 275 | mdp5_disable(get_kms(crtc)); | 275 | mdp5_disable(get_kms(crtc)); |
| 276 | } | 276 | } |
| 277 | 277 | ||
| 278 | static void mdp5_crtc_load_lut(struct drm_crtc *crtc) | ||
| 279 | { | ||
| 280 | } | ||
| 281 | |||
| 282 | struct plane_state { | 278 | struct plane_state { |
| 283 | struct drm_plane *plane; | 279 | struct drm_plane *plane; |
| 284 | struct mdp5_plane_state *state; | 280 | struct mdp5_plane_state *state; |
| @@ -407,7 +403,6 @@ static const struct drm_crtc_helper_funcs mdp5_crtc_helper_funcs = { | |||
| 407 | .mode_set_base = drm_helper_crtc_mode_set_base, | 403 | .mode_set_base = drm_helper_crtc_mode_set_base, |
| 408 | .prepare = mdp5_crtc_prepare, | 404 | .prepare = mdp5_crtc_prepare, |
| 409 | .commit = mdp5_crtc_commit, | 405 | .commit = mdp5_crtc_commit, |
| 410 | .load_lut = mdp5_crtc_load_lut, | ||
| 411 | .atomic_check = mdp5_crtc_atomic_check, | 406 | .atomic_check = mdp5_crtc_atomic_check, |
| 412 | .atomic_begin = mdp5_crtc_atomic_begin, | 407 | .atomic_begin = mdp5_crtc_atomic_begin, |
| 413 | .atomic_flush = mdp5_crtc_atomic_flush, | 408 | .atomic_flush = mdp5_crtc_atomic_flush, |
diff --git a/drivers/gpu/drm/sti/sti_drm_crtc.c b/drivers/gpu/drm/sti/sti_drm_crtc.c index 4c651c200f20..e6f6ef7c4866 100644 --- a/drivers/gpu/drm/sti/sti_drm_crtc.c +++ b/drivers/gpu/drm/sti/sti_drm_crtc.c | |||
| @@ -190,11 +190,6 @@ out: | |||
| 190 | return ret; | 190 | return ret; |
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | static void sti_drm_crtc_load_lut(struct drm_crtc *crtc) | ||
| 194 | { | ||
| 195 | /* do nothing */ | ||
| 196 | } | ||
| 197 | |||
| 198 | static void sti_drm_crtc_disable(struct drm_crtc *crtc) | 193 | static void sti_drm_crtc_disable(struct drm_crtc *crtc) |
| 199 | { | 194 | { |
| 200 | struct sti_mixer *mixer = to_sti_mixer(crtc); | 195 | struct sti_mixer *mixer = to_sti_mixer(crtc); |
| @@ -249,7 +244,6 @@ static struct drm_crtc_helper_funcs sti_crtc_helper_funcs = { | |||
| 249 | .mode_fixup = sti_drm_crtc_mode_fixup, | 244 | .mode_fixup = sti_drm_crtc_mode_fixup, |
| 250 | .mode_set = sti_drm_crtc_mode_set, | 245 | .mode_set = sti_drm_crtc_mode_set, |
| 251 | .mode_set_base = sti_drm_crtc_mode_set_base, | 246 | .mode_set_base = sti_drm_crtc_mode_set_base, |
| 252 | .load_lut = sti_drm_crtc_load_lut, | ||
| 253 | .disable = sti_drm_crtc_disable, | 247 | .disable = sti_drm_crtc_disable, |
| 254 | }; | 248 | }; |
| 255 | 249 | ||
diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 3367960286a6..7fe7bb1227cf 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c | |||
| @@ -1095,10 +1095,6 @@ static void tegra_crtc_commit(struct drm_crtc *crtc) | |||
| 1095 | tegra_dc_commit(dc); | 1095 | tegra_dc_commit(dc); |
| 1096 | } | 1096 | } |
| 1097 | 1097 | ||
| 1098 | static void tegra_crtc_load_lut(struct drm_crtc *crtc) | ||
| 1099 | { | ||
| 1100 | } | ||
| 1101 | |||
| 1102 | static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = { | 1098 | static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = { |
| 1103 | .disable = tegra_crtc_disable, | 1099 | .disable = tegra_crtc_disable, |
| 1104 | .mode_fixup = tegra_crtc_mode_fixup, | 1100 | .mode_fixup = tegra_crtc_mode_fixup, |
| @@ -1106,7 +1102,6 @@ static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = { | |||
| 1106 | .mode_set_base = tegra_crtc_mode_set_base, | 1102 | .mode_set_base = tegra_crtc_mode_set_base, |
| 1107 | .prepare = tegra_crtc_prepare, | 1103 | .prepare = tegra_crtc_prepare, |
| 1108 | .commit = tegra_crtc_commit, | 1104 | .commit = tegra_crtc_commit, |
| 1109 | .load_lut = tegra_crtc_load_lut, | ||
| 1110 | }; | 1105 | }; |
| 1111 | 1106 | ||
| 1112 | static irqreturn_t tegra_dc_irq(int irq, void *data) | 1107 | static irqreturn_t tegra_dc_irq(int irq, void *data) |
diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h index 86574b0005ff..aae71cb32123 100644 --- a/include/uapi/drm/drm_mode.h +++ b/include/uapi/drm/drm_mode.h | |||
| @@ -338,7 +338,7 @@ struct drm_mode_fb_cmd2 { | |||
| 338 | 338 | ||
| 339 | /* | 339 | /* |
| 340 | * In case of planar formats, this ioctl allows up to 4 | 340 | * In case of planar formats, this ioctl allows up to 4 |
| 341 | * buffer objects with offets and pitches per plane. | 341 | * buffer objects with offsets and pitches per plane. |
| 342 | * The pitch and offset order is dictated by the fourcc, | 342 | * The pitch and offset order is dictated by the fourcc, |
| 343 | * e.g. NV12 (http://fourcc.org/yuv.php#NV12) is described as: | 343 | * e.g. NV12 (http://fourcc.org/yuv.php#NV12) is described as: |
| 344 | * | 344 | * |
| @@ -346,9 +346,9 @@ struct drm_mode_fb_cmd2 { | |||
| 346 | * followed by an interleaved U/V plane containing | 346 | * followed by an interleaved U/V plane containing |
| 347 | * 8 bit 2x2 subsampled colour difference samples. | 347 | * 8 bit 2x2 subsampled colour difference samples. |
| 348 | * | 348 | * |
| 349 | * So it would consist of Y as offset[0] and UV as | 349 | * So it would consist of Y as offsets[0] and UV as |
| 350 | * offeset[1]. Note that offset[0] will generally | 350 | * offsets[1]. Note that offsets[0] will generally |
| 351 | * be 0. | 351 | * be 0 (but this is not required). |
| 352 | */ | 352 | */ |
| 353 | __u32 handles[4]; | 353 | __u32 handles[4]; |
| 354 | __u32 pitches[4]; /* pitch for each plane */ | 354 | __u32 pitches[4]; /* pitch for each plane */ |
