aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2015-11-30 17:01:18 -0500
committerDave Airlie <airlied@redhat.com>2015-11-30 17:01:18 -0500
commitaeb745e9b5f3e5bad1c03e402619f5506ca2f6da (patch)
treebb44bfad53a008f92b144c99198ed6a0f69bc1a0 /drivers/gpu
parent31ade3b83e1821da5fbb2f11b5b3d4ab2ec39db8 (diff)
parent87069f4493b2101a71a92b7b9565f488a605a88f (diff)
Merge tag 'topic/drm-misc-2015-11-26' of git://anongit.freedesktop.org/drm-intel into drm-next
Here's the first drm-misc pull, with really mostly misc stuff all over. Somewhat invasive is only Ville's change to mark the arg struct for fb_create const - that might conflict with a new driver pull. So better to get in fast. * tag 'topic/drm-misc-2015-11-26' of git://anongit.freedesktop.org/drm-intel: drm/mm: use list_next_entry drm/i915: fix potential dangling else problems in for_each_ macros drm: fix potential dangling else problems in for_each_ macros drm/sysfs: Send out uevent when connector->force changes drm/atomic: Small documentation fix. drm/mm: rewrite drm_mm_for_each_hole drm/sysfs: Grab lock for edid/modes_show drm: Print the src/dst/clip rectangles in error in drm_plane_helper drm: Add "prefix" parameter to drm_rect_debug_print() drm: Keep coordinates in the typical x, y, w, h order instead of x, y, h, w drm: Pass the user drm_mode_fb_cmd2 as const to .fb_create() drm: modes: replace simple_strtoul by kstrtouint drm: Describe the Rotation property bits. drm: Remove unused fbdev_list members GPU-DRM: Delete unnecessary checks before drm_property_unreference_blob() drm/dp: add eDP DPCD backlight control bit definitions drm/tegra: Remove local fbdev emulation Kconfig option drm/imx: Remove local fbdev emulation Kconfig option drm/gem: Update/Polish docs drm: Update GEM refcounting docs
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_display.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h2
-rw-r--r--drivers/gpu/drm/armada/armada_fb.c4
-rw-r--r--drivers/gpu/drm/armada/armada_fb.h2
-rw-r--r--drivers/gpu/drm/ast/ast_drv.h3
-rw-r--r--drivers/gpu/drm/ast/ast_fb.c2
-rw-r--r--drivers/gpu/drm/ast/ast_main.c4
-rw-r--r--drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c2
-rw-r--r--drivers/gpu/drm/bochs/bochs.h2
-rw-r--r--drivers/gpu/drm/bochs/bochs_fbdev.c2
-rw-r--r--drivers/gpu/drm/bochs/bochs_mm.c4
-rw-r--r--drivers/gpu/drm/cirrus/cirrus_drv.h3
-rw-r--r--drivers/gpu/drm/cirrus/cirrus_fbdev.c2
-rw-r--r--drivers/gpu/drm/cirrus/cirrus_main.c4
-rw-r--r--drivers/gpu/drm/drm_atomic.c11
-rw-r--r--drivers/gpu/drm/drm_atomic_helper.c19
-rw-r--r--drivers/gpu/drm/drm_crtc.c4
-rw-r--r--drivers/gpu/drm/drm_crtc_helper.c2
-rw-r--r--drivers/gpu/drm/drm_fb_cma_helper.c4
-rw-r--r--drivers/gpu/drm/drm_gem.c35
-rw-r--r--drivers/gpu/drm/drm_modes.c16
-rw-r--r--drivers/gpu/drm/drm_plane_helper.c4
-rw-r--r--drivers/gpu/drm/drm_probe_helper.c46
-rw-r--r--drivers/gpu/drm/drm_rect.c7
-rw-r--r--drivers/gpu/drm/drm_sysfs.c54
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fb.c4
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fb.h2
-rw-r--r--drivers/gpu/drm/gma500/framebuffer.c6
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h12
-rw-r--r--drivers/gpu/drm/i915/intel_display.c4
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h2
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.h2
-rw-r--r--drivers/gpu/drm/i915/intel_runtime_pm.c4
-rw-r--r--drivers/gpu/drm/i915/intel_sprite.c8
-rw-r--r--drivers/gpu/drm/imx/Kconfig9
-rw-r--r--drivers/gpu/drm/imx/imx-drm-core.c12
-rw-r--r--drivers/gpu/drm/mgag200/mgag200_drv.h2
-rw-r--r--drivers/gpu/drm/mgag200/mgag200_fb.c2
-rw-r--r--drivers/gpu/drm/mgag200/mgag200_main.c4
-rw-r--r--drivers/gpu/drm/msm/msm_drv.h4
-rw-r--r--drivers/gpu/drm/msm/msm_fb.c4
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.c4
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.h2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_fbcon.h1
-rw-r--r--drivers/gpu/drm/omapdrm/omap_drv.h6
-rw-r--r--drivers/gpu/drm/omapdrm/omap_fb.c4
-rw-r--r--drivers/gpu/drm/qxl/qxl_display.c4
-rw-r--r--drivers/gpu/drm/qxl/qxl_drv.h2
-rw-r--r--drivers/gpu/drm/qxl/qxl_fb.c3
-rw-r--r--drivers/gpu/drm/radeon/radeon_display.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_fb.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon_mode.h2
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_kms.c2
-rw-r--r--drivers/gpu/drm/rockchip/rockchip_drm_fb.c6
-rw-r--r--drivers/gpu/drm/rockchip/rockchip_drm_fb.h2
-rw-r--r--drivers/gpu/drm/shmobile/shmob_drm_kms.c2
-rw-r--r--drivers/gpu/drm/tegra/Kconfig12
-rw-r--r--drivers/gpu/drm/tegra/drm.c4
-rw-r--r--drivers/gpu/drm/tegra/drm.h8
-rw-r--r--drivers/gpu/drm/tegra/fb.c16
-rw-r--r--drivers/gpu/drm/tilcdc/tilcdc_drv.c2
-rw-r--r--drivers/gpu/drm/udl/udl_drv.h2
-rw-r--r--drivers/gpu/drm/udl/udl_fb.c5
-rw-r--r--drivers/gpu/drm/virtio/virtgpu_display.c4
-rw-r--r--drivers/gpu/drm/virtio/virtgpu_drv.h2
-rw-r--r--drivers/gpu/drm/virtio/virtgpu_fb.c1
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_kms.c2
68 files changed, 211 insertions, 216 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index e173a5a02f0d..7d5e0583c95c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -481,7 +481,7 @@ static const struct drm_framebuffer_funcs amdgpu_fb_funcs = {
481int 481int
482amdgpu_framebuffer_init(struct drm_device *dev, 482amdgpu_framebuffer_init(struct drm_device *dev,
483 struct amdgpu_framebuffer *rfb, 483 struct amdgpu_framebuffer *rfb,
484 struct drm_mode_fb_cmd2 *mode_cmd, 484 const struct drm_mode_fb_cmd2 *mode_cmd,
485 struct drm_gem_object *obj) 485 struct drm_gem_object *obj)
486{ 486{
487 int ret; 487 int ret;
@@ -498,7 +498,7 @@ amdgpu_framebuffer_init(struct drm_device *dev,
498static struct drm_framebuffer * 498static struct drm_framebuffer *
499amdgpu_user_framebuffer_create(struct drm_device *dev, 499amdgpu_user_framebuffer_create(struct drm_device *dev,
500 struct drm_file *file_priv, 500 struct drm_file *file_priv,
501 struct drm_mode_fb_cmd2 *mode_cmd) 501 const struct drm_mode_fb_cmd2 *mode_cmd)
502{ 502{
503 struct drm_gem_object *obj; 503 struct drm_gem_object *obj;
504 struct amdgpu_framebuffer *amdgpu_fb; 504 struct amdgpu_framebuffer *amdgpu_fb;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
index 093a8c618931..6fcbbcc2e99e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
@@ -45,7 +45,6 @@
45struct amdgpu_fbdev { 45struct amdgpu_fbdev {
46 struct drm_fb_helper helper; 46 struct drm_fb_helper helper;
47 struct amdgpu_framebuffer rfb; 47 struct amdgpu_framebuffer rfb;
48 struct list_head fbdev_list;
49 struct amdgpu_device *adev; 48 struct amdgpu_device *adev;
50}; 49};
51 50
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
index b62c1710cab6..de4529969778 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
@@ -551,7 +551,7 @@ int amdgpu_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe,
551 551
552int amdgpu_framebuffer_init(struct drm_device *dev, 552int amdgpu_framebuffer_init(struct drm_device *dev,
553 struct amdgpu_framebuffer *rfb, 553 struct amdgpu_framebuffer *rfb,
554 struct drm_mode_fb_cmd2 *mode_cmd, 554 const struct drm_mode_fb_cmd2 *mode_cmd,
555 struct drm_gem_object *obj); 555 struct drm_gem_object *obj);
556 556
557int amdgpufb_remove(struct drm_device *dev, struct drm_framebuffer *fb); 557int amdgpufb_remove(struct drm_device *dev, struct drm_framebuffer *fb);
diff --git a/drivers/gpu/drm/armada/armada_fb.c b/drivers/gpu/drm/armada/armada_fb.c
index 1c90969def3e..5fa4bf20b232 100644
--- a/drivers/gpu/drm/armada/armada_fb.c
+++ b/drivers/gpu/drm/armada/armada_fb.c
@@ -35,7 +35,7 @@ static const struct drm_framebuffer_funcs armada_fb_funcs = {
35}; 35};
36 36
37struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev, 37struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,
38 struct drm_mode_fb_cmd2 *mode, struct armada_gem_object *obj) 38 const struct drm_mode_fb_cmd2 *mode, struct armada_gem_object *obj)
39{ 39{
40 struct armada_framebuffer *dfb; 40 struct armada_framebuffer *dfb;
41 uint8_t format, config; 41 uint8_t format, config;
@@ -101,7 +101,7 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,
101} 101}
102 102
103static struct drm_framebuffer *armada_fb_create(struct drm_device *dev, 103static struct drm_framebuffer *armada_fb_create(struct drm_device *dev,
104 struct drm_file *dfile, struct drm_mode_fb_cmd2 *mode) 104 struct drm_file *dfile, const struct drm_mode_fb_cmd2 *mode)
105{ 105{
106 struct armada_gem_object *obj; 106 struct armada_gem_object *obj;
107 struct armada_framebuffer *dfb; 107 struct armada_framebuffer *dfb;
diff --git a/drivers/gpu/drm/armada/armada_fb.h b/drivers/gpu/drm/armada/armada_fb.h
index ce3f12ebfc53..48073c4f54d8 100644
--- a/drivers/gpu/drm/armada/armada_fb.h
+++ b/drivers/gpu/drm/armada/armada_fb.h
@@ -19,6 +19,6 @@ struct armada_framebuffer {
19#define drm_fb_obj(fb) drm_fb_to_armada_fb(fb)->obj 19#define drm_fb_obj(fb) drm_fb_to_armada_fb(fb)->obj
20 20
21struct armada_framebuffer *armada_framebuffer_create(struct drm_device *, 21struct armada_framebuffer *armada_framebuffer_create(struct drm_device *,
22 struct drm_mode_fb_cmd2 *, struct armada_gem_object *); 22 const struct drm_mode_fb_cmd2 *, struct armada_gem_object *);
23 23
24#endif 24#endif
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 05f6522c0457..eb5715994ac2 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -256,7 +256,6 @@ struct ast_framebuffer {
256struct ast_fbdev { 256struct ast_fbdev {
257 struct drm_fb_helper helper; 257 struct drm_fb_helper helper;
258 struct ast_framebuffer afb; 258 struct ast_framebuffer afb;
259 struct list_head fbdev_list;
260 void *sysram; 259 void *sysram;
261 int size; 260 int size;
262 struct ttm_bo_kmap_obj mapping; 261 struct ttm_bo_kmap_obj mapping;
@@ -309,7 +308,7 @@ extern void ast_mode_fini(struct drm_device *dev);
309 308
310int ast_framebuffer_init(struct drm_device *dev, 309int ast_framebuffer_init(struct drm_device *dev,
311 struct ast_framebuffer *ast_fb, 310 struct ast_framebuffer *ast_fb,
312 struct drm_mode_fb_cmd2 *mode_cmd, 311 const struct drm_mode_fb_cmd2 *mode_cmd,
313 struct drm_gem_object *obj); 312 struct drm_gem_object *obj);
314 313
315int ast_fbdev_init(struct drm_device *dev); 314int ast_fbdev_init(struct drm_device *dev);
diff --git a/drivers/gpu/drm/ast/ast_fb.c b/drivers/gpu/drm/ast/ast_fb.c
index a37e7ea4a00c..5320f8c57884 100644
--- a/drivers/gpu/drm/ast/ast_fb.c
+++ b/drivers/gpu/drm/ast/ast_fb.c
@@ -163,7 +163,7 @@ static struct fb_ops astfb_ops = {
163}; 163};
164 164
165static int astfb_create_object(struct ast_fbdev *afbdev, 165static int astfb_create_object(struct ast_fbdev *afbdev,
166 struct drm_mode_fb_cmd2 *mode_cmd, 166 const struct drm_mode_fb_cmd2 *mode_cmd,
167 struct drm_gem_object **gobj_p) 167 struct drm_gem_object **gobj_p)
168{ 168{
169 struct drm_device *dev = afbdev->helper.dev; 169 struct drm_device *dev = afbdev->helper.dev;
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 541a610667ad..9759009d1da3 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -309,7 +309,7 @@ static const struct drm_framebuffer_funcs ast_fb_funcs = {
309 309
310int ast_framebuffer_init(struct drm_device *dev, 310int ast_framebuffer_init(struct drm_device *dev,
311 struct ast_framebuffer *ast_fb, 311 struct ast_framebuffer *ast_fb,
312 struct drm_mode_fb_cmd2 *mode_cmd, 312 const struct drm_mode_fb_cmd2 *mode_cmd,
313 struct drm_gem_object *obj) 313 struct drm_gem_object *obj)
314{ 314{
315 int ret; 315 int ret;
@@ -327,7 +327,7 @@ int ast_framebuffer_init(struct drm_device *dev,
327static struct drm_framebuffer * 327static struct drm_framebuffer *
328ast_user_framebuffer_create(struct drm_device *dev, 328ast_user_framebuffer_create(struct drm_device *dev,
329 struct drm_file *filp, 329 struct drm_file *filp,
330 struct drm_mode_fb_cmd2 *mode_cmd) 330 const struct drm_mode_fb_cmd2 *mode_cmd)
331{ 331{
332 struct drm_gem_object *obj; 332 struct drm_gem_object *obj;
333 struct ast_framebuffer *ast_fb; 333 struct ast_framebuffer *ast_fb;
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 244df0a440b7..816895447155 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -402,7 +402,7 @@ static irqreturn_t atmel_hlcdc_dc_irq_handler(int irq, void *data)
402} 402}
403 403
404static struct drm_framebuffer *atmel_hlcdc_fb_create(struct drm_device *dev, 404static struct drm_framebuffer *atmel_hlcdc_fb_create(struct drm_device *dev,
405 struct drm_file *file_priv, struct drm_mode_fb_cmd2 *mode_cmd) 405 struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd)
406{ 406{
407 return drm_fb_cma_create(dev, file_priv, mode_cmd); 407 return drm_fb_cma_create(dev, file_priv, mode_cmd);
408} 408}
diff --git a/drivers/gpu/drm/bochs/bochs.h b/drivers/gpu/drm/bochs/bochs.h
index 71f2687fc3cc..19b5adaebe24 100644
--- a/drivers/gpu/drm/bochs/bochs.h
+++ b/drivers/gpu/drm/bochs/bochs.h
@@ -149,7 +149,7 @@ int bochs_dumb_mmap_offset(struct drm_file *file, struct drm_device *dev,
149 149
150int bochs_framebuffer_init(struct drm_device *dev, 150int bochs_framebuffer_init(struct drm_device *dev,
151 struct bochs_framebuffer *gfb, 151 struct bochs_framebuffer *gfb,
152 struct drm_mode_fb_cmd2 *mode_cmd, 152 const struct drm_mode_fb_cmd2 *mode_cmd,
153 struct drm_gem_object *obj); 153 struct drm_gem_object *obj);
154int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag, u64 *gpu_addr); 154int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag, u64 *gpu_addr);
155int bochs_bo_unpin(struct bochs_bo *bo); 155int bochs_bo_unpin(struct bochs_bo *bo);
diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
index 09a0637aab3e..7520bf81fc25 100644
--- a/drivers/gpu/drm/bochs/bochs_fbdev.c
+++ b/drivers/gpu/drm/bochs/bochs_fbdev.c
@@ -34,7 +34,7 @@ static struct fb_ops bochsfb_ops = {
34}; 34};
35 35
36static int bochsfb_create_object(struct bochs_device *bochs, 36static int bochsfb_create_object(struct bochs_device *bochs,
37 struct drm_mode_fb_cmd2 *mode_cmd, 37 const struct drm_mode_fb_cmd2 *mode_cmd,
38 struct drm_gem_object **gobj_p) 38 struct drm_gem_object **gobj_p)
39{ 39{
40 struct drm_device *dev = bochs->dev; 40 struct drm_device *dev = bochs->dev;
diff --git a/drivers/gpu/drm/bochs/bochs_mm.c b/drivers/gpu/drm/bochs/bochs_mm.c
index f69e6bf9bb0e..d812ad014da5 100644
--- a/drivers/gpu/drm/bochs/bochs_mm.c
+++ b/drivers/gpu/drm/bochs/bochs_mm.c
@@ -484,7 +484,7 @@ static const struct drm_framebuffer_funcs bochs_fb_funcs = {
484 484
485int bochs_framebuffer_init(struct drm_device *dev, 485int bochs_framebuffer_init(struct drm_device *dev,
486 struct bochs_framebuffer *gfb, 486 struct bochs_framebuffer *gfb,
487 struct drm_mode_fb_cmd2 *mode_cmd, 487 const struct drm_mode_fb_cmd2 *mode_cmd,
488 struct drm_gem_object *obj) 488 struct drm_gem_object *obj)
489{ 489{
490 int ret; 490 int ret;
@@ -502,7 +502,7 @@ int bochs_framebuffer_init(struct drm_device *dev,
502static struct drm_framebuffer * 502static struct drm_framebuffer *
503bochs_user_framebuffer_create(struct drm_device *dev, 503bochs_user_framebuffer_create(struct drm_device *dev,
504 struct drm_file *filp, 504 struct drm_file *filp,
505 struct drm_mode_fb_cmd2 *mode_cmd) 505 const struct drm_mode_fb_cmd2 *mode_cmd)
506{ 506{
507 struct drm_gem_object *obj; 507 struct drm_gem_object *obj;
508 struct bochs_framebuffer *bochs_fb; 508 struct bochs_framebuffer *bochs_fb;
diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.h b/drivers/gpu/drm/cirrus/cirrus_drv.h
index 705061537a27..b774d637a00f 100644
--- a/drivers/gpu/drm/cirrus/cirrus_drv.h
+++ b/drivers/gpu/drm/cirrus/cirrus_drv.h
@@ -153,7 +153,6 @@ struct cirrus_device {
153struct cirrus_fbdev { 153struct cirrus_fbdev {
154 struct drm_fb_helper helper; 154 struct drm_fb_helper helper;
155 struct cirrus_framebuffer gfb; 155 struct cirrus_framebuffer gfb;
156 struct list_head fbdev_list;
157 void *sysram; 156 void *sysram;
158 int size; 157 int size;
159 int x1, y1, x2, y2; /* dirty rect */ 158 int x1, y1, x2, y2; /* dirty rect */
@@ -207,7 +206,7 @@ int cirrus_dumb_create(struct drm_file *file,
207 206
208int cirrus_framebuffer_init(struct drm_device *dev, 207int cirrus_framebuffer_init(struct drm_device *dev,
209 struct cirrus_framebuffer *gfb, 208 struct cirrus_framebuffer *gfb,
210 struct drm_mode_fb_cmd2 *mode_cmd, 209 const struct drm_mode_fb_cmd2 *mode_cmd,
211 struct drm_gem_object *obj); 210 struct drm_gem_object *obj);
212 211
213bool cirrus_check_framebuffer(struct cirrus_device *cdev, int width, int height, 212bool cirrus_check_framebuffer(struct cirrus_device *cdev, int width, int height,
diff --git a/drivers/gpu/drm/cirrus/cirrus_fbdev.c b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
index 589103bcc06c..3b5be7272357 100644
--- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
+++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
@@ -135,7 +135,7 @@ static struct fb_ops cirrusfb_ops = {
135}; 135};
136 136
137static int cirrusfb_create_object(struct cirrus_fbdev *afbdev, 137static int cirrusfb_create_object(struct cirrus_fbdev *afbdev,
138 struct drm_mode_fb_cmd2 *mode_cmd, 138 const struct drm_mode_fb_cmd2 *mode_cmd,
139 struct drm_gem_object **gobj_p) 139 struct drm_gem_object **gobj_p)
140{ 140{
141 struct drm_device *dev = afbdev->helper.dev; 141 struct drm_device *dev = afbdev->helper.dev;
diff --git a/drivers/gpu/drm/cirrus/cirrus_main.c b/drivers/gpu/drm/cirrus/cirrus_main.c
index 055fd86ba717..0907715e90fd 100644
--- a/drivers/gpu/drm/cirrus/cirrus_main.c
+++ b/drivers/gpu/drm/cirrus/cirrus_main.c
@@ -29,7 +29,7 @@ static const struct drm_framebuffer_funcs cirrus_fb_funcs = {
29 29
30int cirrus_framebuffer_init(struct drm_device *dev, 30int cirrus_framebuffer_init(struct drm_device *dev,
31 struct cirrus_framebuffer *gfb, 31 struct cirrus_framebuffer *gfb,
32 struct drm_mode_fb_cmd2 *mode_cmd, 32 const struct drm_mode_fb_cmd2 *mode_cmd,
33 struct drm_gem_object *obj) 33 struct drm_gem_object *obj)
34{ 34{
35 int ret; 35 int ret;
@@ -47,7 +47,7 @@ int cirrus_framebuffer_init(struct drm_device *dev,
47static struct drm_framebuffer * 47static struct drm_framebuffer *
48cirrus_user_framebuffer_create(struct drm_device *dev, 48cirrus_user_framebuffer_create(struct drm_device *dev,
49 struct drm_file *filp, 49 struct drm_file *filp,
50 struct drm_mode_fb_cmd2 *mode_cmd) 50 const struct drm_mode_fb_cmd2 *mode_cmd)
51{ 51{
52 struct cirrus_device *cdev = dev->dev_private; 52 struct cirrus_device *cdev = dev->dev_private;
53 struct drm_gem_object *obj; 53 struct drm_gem_object *obj;
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index aeee083c7f95..55b4debad79b 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -316,8 +316,7 @@ int drm_atomic_set_mode_for_crtc(struct drm_crtc_state *state,
316 if (mode && memcmp(&state->mode, mode, sizeof(*mode)) == 0) 316 if (mode && memcmp(&state->mode, mode, sizeof(*mode)) == 0)
317 return 0; 317 return 0;
318 318
319 if (state->mode_blob) 319 drm_property_unreference_blob(state->mode_blob);
320 drm_property_unreference_blob(state->mode_blob);
321 state->mode_blob = NULL; 320 state->mode_blob = NULL;
322 321
323 if (mode) { 322 if (mode) {
@@ -363,8 +362,7 @@ int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state,
363 if (blob == state->mode_blob) 362 if (blob == state->mode_blob)
364 return 0; 363 return 0;
365 364
366 if (state->mode_blob) 365 drm_property_unreference_blob(state->mode_blob);
367 drm_property_unreference_blob(state->mode_blob);
368 state->mode_blob = NULL; 366 state->mode_blob = NULL;
369 367
370 if (blob) { 368 if (blob) {
@@ -419,8 +417,7 @@ int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
419 struct drm_property_blob *mode = 417 struct drm_property_blob *mode =
420 drm_property_lookup_blob(dev, val); 418 drm_property_lookup_blob(dev, val);
421 ret = drm_atomic_set_mode_prop_for_crtc(state, mode); 419 ret = drm_atomic_set_mode_prop_for_crtc(state, mode);
422 if (mode) 420 drm_property_unreference_blob(mode);
423 drm_property_unreference_blob(mode);
424 return ret; 421 return ret;
425 } 422 }
426 else if (crtc->funcs->atomic_set_property) 423 else if (crtc->funcs->atomic_set_property)
@@ -1433,7 +1430,7 @@ static int atomic_set_prop(struct drm_atomic_state *state,
1433} 1430}
1434 1431
1435/** 1432/**
1436 * drm_atomic_update_old_fb -- Unset old_fb pointers and set plane->fb pointers. 1433 * drm_atomic_clean_old_fb -- Unset old_fb pointers and set plane->fb pointers.
1437 * 1434 *
1438 * @dev: drm device to check. 1435 * @dev: drm device to check.
1439 * @plane_mask: plane mask for planes that were updated. 1436 * @plane_mask: plane mask for planes that were updated.
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index e5aec45bf985..3731a26979bc 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1485,12 +1485,12 @@ retry:
1485 drm_atomic_set_fb_for_plane(plane_state, fb); 1485 drm_atomic_set_fb_for_plane(plane_state, fb);
1486 plane_state->crtc_x = crtc_x; 1486 plane_state->crtc_x = crtc_x;
1487 plane_state->crtc_y = crtc_y; 1487 plane_state->crtc_y = crtc_y;
1488 plane_state->crtc_h = crtc_h;
1489 plane_state->crtc_w = crtc_w; 1488 plane_state->crtc_w = crtc_w;
1489 plane_state->crtc_h = crtc_h;
1490 plane_state->src_x = src_x; 1490 plane_state->src_x = src_x;
1491 plane_state->src_y = src_y; 1491 plane_state->src_y = src_y;
1492 plane_state->src_h = src_h;
1493 plane_state->src_w = src_w; 1492 plane_state->src_w = src_w;
1493 plane_state->src_h = src_h;
1494 1494
1495 if (plane == crtc->cursor) 1495 if (plane == crtc->cursor)
1496 state->legacy_cursor_update = true; 1496 state->legacy_cursor_update = true;
@@ -1609,12 +1609,12 @@ int __drm_atomic_helper_disable_plane(struct drm_plane *plane,
1609 drm_atomic_set_fb_for_plane(plane_state, NULL); 1609 drm_atomic_set_fb_for_plane(plane_state, NULL);
1610 plane_state->crtc_x = 0; 1610 plane_state->crtc_x = 0;
1611 plane_state->crtc_y = 0; 1611 plane_state->crtc_y = 0;
1612 plane_state->crtc_h = 0;
1613 plane_state->crtc_w = 0; 1612 plane_state->crtc_w = 0;
1613 plane_state->crtc_h = 0;
1614 plane_state->src_x = 0; 1614 plane_state->src_x = 0;
1615 plane_state->src_y = 0; 1615 plane_state->src_y = 0;
1616 plane_state->src_h = 0;
1617 plane_state->src_w = 0; 1616 plane_state->src_w = 0;
1617 plane_state->src_h = 0;
1618 1618
1619 return 0; 1619 return 0;
1620} 1620}
@@ -1797,16 +1797,16 @@ int __drm_atomic_helper_set_config(struct drm_mode_set *set,
1797 drm_atomic_set_fb_for_plane(primary_state, set->fb); 1797 drm_atomic_set_fb_for_plane(primary_state, set->fb);
1798 primary_state->crtc_x = 0; 1798 primary_state->crtc_x = 0;
1799 primary_state->crtc_y = 0; 1799 primary_state->crtc_y = 0;
1800 primary_state->crtc_h = vdisplay;
1801 primary_state->crtc_w = hdisplay; 1800 primary_state->crtc_w = hdisplay;
1801 primary_state->crtc_h = vdisplay;
1802 primary_state->src_x = set->x << 16; 1802 primary_state->src_x = set->x << 16;
1803 primary_state->src_y = set->y << 16; 1803 primary_state->src_y = set->y << 16;
1804 if (primary_state->rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270))) { 1804 if (primary_state->rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270))) {
1805 primary_state->src_h = hdisplay << 16;
1806 primary_state->src_w = vdisplay << 16; 1805 primary_state->src_w = vdisplay << 16;
1806 primary_state->src_h = hdisplay << 16;
1807 } else { 1807 } else {
1808 primary_state->src_h = vdisplay << 16;
1809 primary_state->src_w = hdisplay << 16; 1808 primary_state->src_w = hdisplay << 16;
1809 primary_state->src_h = vdisplay << 16;
1810 } 1810 }
1811 1811
1812commit: 1812commit:
@@ -2184,7 +2184,7 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_dpms);
2184 */ 2184 */
2185void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc) 2185void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc)
2186{ 2186{
2187 if (crtc->state && crtc->state->mode_blob) 2187 if (crtc->state)
2188 drm_property_unreference_blob(crtc->state->mode_blob); 2188 drm_property_unreference_blob(crtc->state->mode_blob);
2189 kfree(crtc->state); 2189 kfree(crtc->state);
2190 crtc->state = kzalloc(sizeof(*crtc->state), GFP_KERNEL); 2190 crtc->state = kzalloc(sizeof(*crtc->state), GFP_KERNEL);
@@ -2252,8 +2252,7 @@ EXPORT_SYMBOL(drm_atomic_helper_crtc_duplicate_state);
2252void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc, 2252void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc,
2253 struct drm_crtc_state *state) 2253 struct drm_crtc_state *state)
2254{ 2254{
2255 if (state->mode_blob) 2255 drm_property_unreference_blob(state->mode_blob);
2256 drm_property_unreference_blob(state->mode_blob);
2257} 2256}
2258EXPORT_SYMBOL(__drm_atomic_helper_crtc_destroy_state); 2257EXPORT_SYMBOL(__drm_atomic_helper_crtc_destroy_state);
2259 2258
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 24c5434abd1c..32dd134700bd 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -45,7 +45,7 @@
45 45
46static struct drm_framebuffer * 46static struct drm_framebuffer *
47internal_framebuffer_create(struct drm_device *dev, 47internal_framebuffer_create(struct drm_device *dev,
48 struct drm_mode_fb_cmd2 *r, 48 const struct drm_mode_fb_cmd2 *r,
49 struct drm_file *file_priv); 49 struct drm_file *file_priv);
50 50
51/* Avoid boilerplate. I'm tired of typing. */ 51/* Avoid boilerplate. I'm tired of typing. */
@@ -3235,7 +3235,7 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
3235 3235
3236static struct drm_framebuffer * 3236static struct drm_framebuffer *
3237internal_framebuffer_create(struct drm_device *dev, 3237internal_framebuffer_create(struct drm_device *dev,
3238 struct drm_mode_fb_cmd2 *r, 3238 const struct drm_mode_fb_cmd2 *r,
3239 struct drm_file *file_priv) 3239 struct drm_file *file_priv)
3240{ 3240{
3241 struct drm_mode_config *config = &dev->mode_config; 3241 struct drm_mode_config *config = &dev->mode_config;
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index ef534758a02c..6b4cf25fed12 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -818,7 +818,7 @@ EXPORT_SYMBOL(drm_helper_connector_dpms);
818 * metadata fields. 818 * metadata fields.
819 */ 819 */
820void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, 820void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb,
821 struct drm_mode_fb_cmd2 *mode_cmd) 821 const struct drm_mode_fb_cmd2 *mode_cmd)
822{ 822{
823 int i; 823 int i;
824 824
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
index c19a62561183..b7d5b848d2f8 100644
--- a/drivers/gpu/drm/drm_fb_cma_helper.c
+++ b/drivers/gpu/drm/drm_fb_cma_helper.c
@@ -74,7 +74,7 @@ static struct drm_framebuffer_funcs drm_fb_cma_funcs = {
74}; 74};
75 75
76static struct drm_fb_cma *drm_fb_cma_alloc(struct drm_device *dev, 76static struct drm_fb_cma *drm_fb_cma_alloc(struct drm_device *dev,
77 struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_cma_object **obj, 77 const const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_cma_object **obj,
78 unsigned int num_planes) 78 unsigned int num_planes)
79{ 79{
80 struct drm_fb_cma *fb_cma; 80 struct drm_fb_cma *fb_cma;
@@ -107,7 +107,7 @@ static struct drm_fb_cma *drm_fb_cma_alloc(struct drm_device *dev,
107 * checked before calling this function. 107 * checked before calling this function.
108 */ 108 */
109struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev, 109struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev,
110 struct drm_file *file_priv, struct drm_mode_fb_cmd2 *mode_cmd) 110 struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd)
111{ 111{
112 struct drm_fb_cma *fb_cma; 112 struct drm_fb_cma *fb_cma;
113 struct drm_gem_cma_object *objs[4]; 113 struct drm_gem_cma_object *objs[4];
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index c7de454e8e88..2e10bba4468b 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -244,8 +244,9 @@ drm_gem_object_handle_unreference_unlocked(struct drm_gem_object *obj)
244 * @filp: drm file-private structure to use for the handle look up 244 * @filp: drm file-private structure to use for the handle look up
245 * @handle: userspace handle to delete 245 * @handle: userspace handle to delete
246 * 246 *
247 * Removes the GEM handle from the @filp lookup table and if this is the last 247 * Removes the GEM handle from the @filp lookup table which has been added with
248 * handle also cleans up linked resources like GEM names. 248 * drm_gem_handle_create(). If this is the last handle also cleans up linked
249 * resources like GEM names.
249 */ 250 */
250int 251int
251drm_gem_handle_delete(struct drm_file *filp, u32 handle) 252drm_gem_handle_delete(struct drm_file *filp, u32 handle)
@@ -314,6 +315,10 @@ EXPORT_SYMBOL(drm_gem_dumb_destroy);
314 * This expects the dev->object_name_lock to be held already and will drop it 315 * This expects the dev->object_name_lock to be held already and will drop it
315 * before returning. Used to avoid races in establishing new handles when 316 * before returning. Used to avoid races in establishing new handles when
316 * importing an object from either an flink name or a dma-buf. 317 * importing an object from either an flink name or a dma-buf.
318 *
319 * Handles must be release again through drm_gem_handle_delete(). This is done
320 * when userspace closes @file_priv for all attached handles, or through the
321 * GEM_CLOSE ioctl for individual handles.
317 */ 322 */
318int 323int
319drm_gem_handle_create_tail(struct drm_file *file_priv, 324drm_gem_handle_create_tail(struct drm_file *file_priv,
@@ -541,7 +546,17 @@ void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages,
541} 546}
542EXPORT_SYMBOL(drm_gem_put_pages); 547EXPORT_SYMBOL(drm_gem_put_pages);
543 548
544/** Returns a reference to the object named by the handle. */ 549/**
550 * drm_gem_object_lookup - look up a GEM object from it's handle
551 * @dev: DRM device
552 * @filp: DRM file private date
553 * @handle: userspace handle
554 *
555 * Returns:
556 *
557 * A reference to the object named by the handle if such exists on @filp, NULL
558 * otherwise.
559 */
545struct drm_gem_object * 560struct drm_gem_object *
546drm_gem_object_lookup(struct drm_device *dev, struct drm_file *filp, 561drm_gem_object_lookup(struct drm_device *dev, struct drm_file *filp,
547 u32 handle) 562 u32 handle)
@@ -774,6 +789,13 @@ drm_gem_object_free(struct kref *kref)
774} 789}
775EXPORT_SYMBOL(drm_gem_object_free); 790EXPORT_SYMBOL(drm_gem_object_free);
776 791
792/**
793 * drm_gem_vm_open - vma->ops->open implementation for GEM
794 * @vma: VM area structure
795 *
796 * This function implements the #vm_operations_struct open() callback for GEM
797 * drivers. This must be used together with drm_gem_vm_close().
798 */
777void drm_gem_vm_open(struct vm_area_struct *vma) 799void drm_gem_vm_open(struct vm_area_struct *vma)
778{ 800{
779 struct drm_gem_object *obj = vma->vm_private_data; 801 struct drm_gem_object *obj = vma->vm_private_data;
@@ -782,6 +804,13 @@ void drm_gem_vm_open(struct vm_area_struct *vma)
782} 804}
783EXPORT_SYMBOL(drm_gem_vm_open); 805EXPORT_SYMBOL(drm_gem_vm_open);
784 806
807/**
808 * drm_gem_vm_close - vma->ops->close implementation for GEM
809 * @vma: VM area structure
810 *
811 * This function implements the #vm_operations_struct close() callback for GEM
812 * drivers. This must be used together with drm_gem_vm_open().
813 */
785void drm_gem_vm_close(struct vm_area_struct *vma) 814void drm_gem_vm_close(struct vm_area_struct *vma)
786{ 815{
787 struct drm_gem_object *obj = vma->vm_private_data; 816 struct drm_gem_object *obj = vma->vm_private_data;
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index cd74a0953f42..bde9b2911dc2 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -1230,7 +1230,7 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option,
1230 unsigned int xres = 0, yres = 0, bpp = 32, refresh = 0; 1230 unsigned int xres = 0, yres = 0, bpp = 32, refresh = 0;
1231 bool yres_specified = false, cvt = false, rb = false; 1231 bool yres_specified = false, cvt = false, rb = false;
1232 bool interlace = false, margins = false, was_digit = false; 1232 bool interlace = false, margins = false, was_digit = false;
1233 int i; 1233 int i, err;
1234 enum drm_connector_force force = DRM_FORCE_UNSPECIFIED; 1234 enum drm_connector_force force = DRM_FORCE_UNSPECIFIED;
1235 1235
1236#ifdef CONFIG_FB 1236#ifdef CONFIG_FB
@@ -1250,7 +1250,9 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option,
1250 case '@': 1250 case '@':
1251 if (!refresh_specified && !bpp_specified && 1251 if (!refresh_specified && !bpp_specified &&
1252 !yres_specified && !cvt && !rb && was_digit) { 1252 !yres_specified && !cvt && !rb && was_digit) {
1253 refresh = simple_strtol(&name[i+1], NULL, 10); 1253 err = kstrtouint(&name[i + 1], 10, &refresh);
1254 if (err)
1255 return false;
1254 refresh_specified = true; 1256 refresh_specified = true;
1255 was_digit = false; 1257 was_digit = false;
1256 } else 1258 } else
@@ -1259,7 +1261,9 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option,
1259 case '-': 1261 case '-':
1260 if (!bpp_specified && !yres_specified && !cvt && 1262 if (!bpp_specified && !yres_specified && !cvt &&
1261 !rb && was_digit) { 1263 !rb && was_digit) {
1262 bpp = simple_strtol(&name[i+1], NULL, 10); 1264 err = kstrtouint(&name[i + 1], 10, &bpp);
1265 if (err)
1266 return false;
1263 bpp_specified = true; 1267 bpp_specified = true;
1264 was_digit = false; 1268 was_digit = false;
1265 } else 1269 } else
@@ -1267,7 +1271,9 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option,
1267 break; 1271 break;
1268 case 'x': 1272 case 'x':
1269 if (!yres_specified && was_digit) { 1273 if (!yres_specified && was_digit) {
1270 yres = simple_strtol(&name[i+1], NULL, 10); 1274 err = kstrtouint(&name[i + 1], 10, &yres);
1275 if (err)
1276 return false;
1271 yres_specified = true; 1277 yres_specified = true;
1272 was_digit = false; 1278 was_digit = false;
1273 } else 1279 } else
@@ -1491,4 +1497,4 @@ int drm_mode_convert_umode(struct drm_display_mode *out,
1491 1497
1492out: 1498out:
1493 return ret; 1499 return ret;
1494} \ No newline at end of file 1500}
diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
index d384ebcf0aaf..a6983d41920d 100644
--- a/drivers/gpu/drm/drm_plane_helper.c
+++ b/drivers/gpu/drm/drm_plane_helper.c
@@ -164,6 +164,8 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
164 vscale = drm_rect_calc_vscale(src, dest, min_scale, max_scale); 164 vscale = drm_rect_calc_vscale(src, dest, min_scale, max_scale);
165 if (hscale < 0 || vscale < 0) { 165 if (hscale < 0 || vscale < 0) {
166 DRM_DEBUG_KMS("Invalid scaling of plane\n"); 166 DRM_DEBUG_KMS("Invalid scaling of plane\n");
167 drm_rect_debug_print("src: ", src, true);
168 drm_rect_debug_print("dst: ", dest, false);
167 return -ERANGE; 169 return -ERANGE;
168 } 170 }
169 171
@@ -180,6 +182,8 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
180 182
181 if (!can_position && !drm_rect_equals(dest, clip)) { 183 if (!can_position && !drm_rect_equals(dest, clip)) {
182 DRM_DEBUG_KMS("Plane must cover entire CRTC\n"); 184 DRM_DEBUG_KMS("Plane must cover entire CRTC\n");
185 drm_rect_debug_print("dst: ", dest, false);
186 drm_rect_debug_print("clip: ", clip, false);
183 return -EINVAL; 187 return -EINVAL;
184 } 188 }
185 189
diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index a18164f2f6d2..94ba39e34299 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -147,6 +147,8 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect
147 list_for_each_entry(mode, &connector->modes, head) 147 list_for_each_entry(mode, &connector->modes, head)
148 mode->status = MODE_UNVERIFIED; 148 mode->status = MODE_UNVERIFIED;
149 149
150 old_status = connector->status;
151
150 if (connector->force) { 152 if (connector->force) {
151 if (connector->force == DRM_FORCE_ON || 153 if (connector->force == DRM_FORCE_ON ||
152 connector->force == DRM_FORCE_ON_DIGITAL) 154 connector->force == DRM_FORCE_ON_DIGITAL)
@@ -156,33 +158,31 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect
156 if (connector->funcs->force) 158 if (connector->funcs->force)
157 connector->funcs->force(connector); 159 connector->funcs->force(connector);
158 } else { 160 } else {
159 old_status = connector->status;
160
161 connector->status = connector->funcs->detect(connector, true); 161 connector->status = connector->funcs->detect(connector, true);
162 }
163
164 /*
165 * Normally either the driver's hpd code or the poll loop should
166 * pick up any changes and fire the hotplug event. But if
167 * userspace sneaks in a probe, we might miss a change. Hence
168 * check here, and if anything changed start the hotplug code.
169 */
170 if (old_status != connector->status) {
171 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %d to %d\n",
172 connector->base.id,
173 connector->name,
174 old_status, connector->status);
162 175
163 /* 176 /*
164 * Normally either the driver's hpd code or the poll loop should 177 * The hotplug event code might call into the fb
165 * pick up any changes and fire the hotplug event. But if 178 * helpers, and so expects that we do not hold any
166 * userspace sneaks in a probe, we might miss a change. Hence 179 * locks. Fire up the poll struct instead, it will
167 * check here, and if anything changed start the hotplug code. 180 * disable itself again.
168 */ 181 */
169 if (old_status != connector->status) { 182 dev->mode_config.delayed_event = true;
170 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %d to %d\n", 183 if (dev->mode_config.poll_enabled)
171 connector->base.id, 184 schedule_delayed_work(&dev->mode_config.output_poll_work,
172 connector->name, 185 0);
173 old_status, connector->status);
174
175 /*
176 * The hotplug event code might call into the fb
177 * helpers, and so expects that we do not hold any
178 * locks. Fire up the poll struct instead, it will
179 * disable itself again.
180 */
181 dev->mode_config.delayed_event = true;
182 if (dev->mode_config.poll_enabled)
183 schedule_delayed_work(&dev->mode_config.output_poll_work,
184 0);
185 }
186 } 186 }
187 187
188 /* Re-enable polling in case the global poll config changed. */ 188 /* Re-enable polling in case the global poll config changed. */
diff --git a/drivers/gpu/drm/drm_rect.c b/drivers/gpu/drm/drm_rect.c
index 531ac4cc9756..a8e2c8603945 100644
--- a/drivers/gpu/drm/drm_rect.c
+++ b/drivers/gpu/drm/drm_rect.c
@@ -275,22 +275,23 @@ EXPORT_SYMBOL(drm_rect_calc_vscale_relaxed);
275 275
276/** 276/**
277 * drm_rect_debug_print - print the rectangle information 277 * drm_rect_debug_print - print the rectangle information
278 * @prefix: prefix string
278 * @r: rectangle to print 279 * @r: rectangle to print
279 * @fixed_point: rectangle is in 16.16 fixed point format 280 * @fixed_point: rectangle is in 16.16 fixed point format
280 */ 281 */
281void drm_rect_debug_print(const struct drm_rect *r, bool fixed_point) 282void drm_rect_debug_print(const char *prefix, const struct drm_rect *r, bool fixed_point)
282{ 283{
283 int w = drm_rect_width(r); 284 int w = drm_rect_width(r);
284 int h = drm_rect_height(r); 285 int h = drm_rect_height(r);
285 286
286 if (fixed_point) 287 if (fixed_point)
287 DRM_DEBUG_KMS("%d.%06ux%d.%06u%+d.%06u%+d.%06u\n", 288 DRM_DEBUG_KMS("%s%d.%06ux%d.%06u%+d.%06u%+d.%06u\n", prefix,
288 w >> 16, ((w & 0xffff) * 15625) >> 10, 289 w >> 16, ((w & 0xffff) * 15625) >> 10,
289 h >> 16, ((h & 0xffff) * 15625) >> 10, 290 h >> 16, ((h & 0xffff) * 15625) >> 10,
290 r->x1 >> 16, ((r->x1 & 0xffff) * 15625) >> 10, 291 r->x1 >> 16, ((r->x1 & 0xffff) * 15625) >> 10,
291 r->y1 >> 16, ((r->y1 & 0xffff) * 15625) >> 10); 292 r->y1 >> 16, ((r->y1 & 0xffff) * 15625) >> 10);
292 else 293 else
293 DRM_DEBUG_KMS("%dx%d%+d%+d\n", w, h, r->x1, r->y1); 294 DRM_DEBUG_KMS("%s%dx%d%+d%+d\n", prefix, w, h, r->x1, r->y1);
294} 295}
295EXPORT_SYMBOL(drm_rect_debug_print); 296EXPORT_SYMBOL(drm_rect_debug_print);
296 297
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index 615b7e667320..0ca64106a97b 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -167,47 +167,35 @@ static ssize_t status_store(struct device *device,
167{ 167{
168 struct drm_connector *connector = to_drm_connector(device); 168 struct drm_connector *connector = to_drm_connector(device);
169 struct drm_device *dev = connector->dev; 169 struct drm_device *dev = connector->dev;
170 enum drm_connector_status old_status; 170 enum drm_connector_force old_force;
171 int ret; 171 int ret;
172 172
173 ret = mutex_lock_interruptible(&dev->mode_config.mutex); 173 ret = mutex_lock_interruptible(&dev->mode_config.mutex);
174 if (ret) 174 if (ret)
175 return ret; 175 return ret;
176 176
177 old_status = connector->status; 177 old_force = connector->force;
178 178
179 if (sysfs_streq(buf, "detect")) { 179 if (sysfs_streq(buf, "detect"))
180 connector->force = 0; 180 connector->force = 0;
181 connector->status = connector->funcs->detect(connector, true); 181 else if (sysfs_streq(buf, "on"))
182 } else if (sysfs_streq(buf, "on")) {
183 connector->force = DRM_FORCE_ON; 182 connector->force = DRM_FORCE_ON;
184 } else if (sysfs_streq(buf, "on-digital")) { 183 else if (sysfs_streq(buf, "on-digital"))
185 connector->force = DRM_FORCE_ON_DIGITAL; 184 connector->force = DRM_FORCE_ON_DIGITAL;
186 } else if (sysfs_streq(buf, "off")) { 185 else if (sysfs_streq(buf, "off"))
187 connector->force = DRM_FORCE_OFF; 186 connector->force = DRM_FORCE_OFF;
188 } else 187 else
189 ret = -EINVAL; 188 ret = -EINVAL;
190 189
191 if (ret == 0 && connector->force) { 190 if (old_force != connector->force || !connector->force) {
192 if (connector->force == DRM_FORCE_ON || 191 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] force updated from %d to %d or reprobing\n",
193 connector->force == DRM_FORCE_ON_DIGITAL)
194 connector->status = connector_status_connected;
195 else
196 connector->status = connector_status_disconnected;
197 if (connector->funcs->force)
198 connector->funcs->force(connector);
199 }
200
201 if (old_status != connector->status) {
202 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %d to %d\n",
203 connector->base.id, 192 connector->base.id,
204 connector->name, 193 connector->name,
205 old_status, connector->status); 194 old_force, connector->force);
206 195
207 dev->mode_config.delayed_event = true; 196 connector->funcs->fill_modes(connector,
208 if (dev->mode_config.poll_enabled) 197 dev->mode_config.max_width,
209 schedule_delayed_work(&dev->mode_config.output_poll_work, 198 dev->mode_config.max_height);
210 0);
211 } 199 }
212 200
213 mutex_unlock(&dev->mode_config.mutex); 201 mutex_unlock(&dev->mode_config.mutex);
@@ -256,23 +244,29 @@ static ssize_t edid_show(struct file *filp, struct kobject *kobj,
256 struct drm_connector *connector = to_drm_connector(connector_dev); 244 struct drm_connector *connector = to_drm_connector(connector_dev);
257 unsigned char *edid; 245 unsigned char *edid;
258 size_t size; 246 size_t size;
247 ssize_t ret = 0;
259 248
249 mutex_lock(&connector->dev->mode_config.mutex);
260 if (!connector->edid_blob_ptr) 250 if (!connector->edid_blob_ptr)
261 return 0; 251 goto unlock;
262 252
263 edid = connector->edid_blob_ptr->data; 253 edid = connector->edid_blob_ptr->data;
264 size = connector->edid_blob_ptr->length; 254 size = connector->edid_blob_ptr->length;
265 if (!edid) 255 if (!edid)
266 return 0; 256 goto unlock;
267 257
268 if (off >= size) 258 if (off >= size)
269 return 0; 259 goto unlock;
270 260
271 if (off + count > size) 261 if (off + count > size)
272 count = size - off; 262 count = size - off;
273 memcpy(buf, edid + off, count); 263 memcpy(buf, edid + off, count);
274 264
275 return count; 265 ret = count;
266unlock:
267 mutex_unlock(&connector->dev->mode_config.mutex);
268
269 return ret;
276} 270}
277 271
278static ssize_t modes_show(struct device *device, 272static ssize_t modes_show(struct device *device,
@@ -283,10 +277,12 @@ static ssize_t modes_show(struct device *device,
283 struct drm_display_mode *mode; 277 struct drm_display_mode *mode;
284 int written = 0; 278 int written = 0;
285 279
280 mutex_lock(&connector->dev->mode_config.mutex);
286 list_for_each_entry(mode, &connector->modes, head) { 281 list_for_each_entry(mode, &connector->modes, head) {
287 written += snprintf(buf + written, PAGE_SIZE - written, "%s\n", 282 written += snprintf(buf + written, PAGE_SIZE - written, "%s\n",
288 mode->name); 283 mode->name);
289 } 284 }
285 mutex_unlock(&connector->dev->mode_config.mutex);
290 286
291 return written; 287 return written;
292} 288}
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index fcea28bdbc42..49b9bc302e87 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -117,7 +117,7 @@ static struct drm_framebuffer_funcs exynos_drm_fb_funcs = {
117 117
118struct drm_framebuffer * 118struct drm_framebuffer *
119exynos_drm_framebuffer_init(struct drm_device *dev, 119exynos_drm_framebuffer_init(struct drm_device *dev,
120 struct drm_mode_fb_cmd2 *mode_cmd, 120 const struct drm_mode_fb_cmd2 *mode_cmd,
121 struct exynos_drm_gem **exynos_gem, 121 struct exynos_drm_gem **exynos_gem,
122 int count) 122 int count)
123{ 123{
@@ -154,7 +154,7 @@ err:
154 154
155static struct drm_framebuffer * 155static struct drm_framebuffer *
156exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, 156exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
157 struct drm_mode_fb_cmd2 *mode_cmd) 157 const struct drm_mode_fb_cmd2 *mode_cmd)
158{ 158{
159 struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER]; 159 struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER];
160 struct drm_gem_object *obj; 160 struct drm_gem_object *obj;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.h b/drivers/gpu/drm/exynos/exynos_drm_fb.h
index 726a2d44371f..a8a75ac87e59 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.h
@@ -18,7 +18,7 @@
18 18
19struct drm_framebuffer * 19struct drm_framebuffer *
20exynos_drm_framebuffer_init(struct drm_device *dev, 20exynos_drm_framebuffer_init(struct drm_device *dev,
21 struct drm_mode_fb_cmd2 *mode_cmd, 21 const struct drm_mode_fb_cmd2 *mode_cmd,
22 struct exynos_drm_gem **exynos_gem, 22 struct exynos_drm_gem **exynos_gem,
23 int count); 23 int count);
24 24
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index 2eaf1b31c7bd..dc0508dca1d4 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -241,7 +241,7 @@ static struct fb_ops psbfb_unaccel_ops = {
241 */ 241 */
242static int psb_framebuffer_init(struct drm_device *dev, 242static int psb_framebuffer_init(struct drm_device *dev,
243 struct psb_framebuffer *fb, 243 struct psb_framebuffer *fb,
244 struct drm_mode_fb_cmd2 *mode_cmd, 244 const struct drm_mode_fb_cmd2 *mode_cmd,
245 struct gtt_range *gt) 245 struct gtt_range *gt)
246{ 246{
247 u32 bpp, depth; 247 u32 bpp, depth;
@@ -284,7 +284,7 @@ static int psb_framebuffer_init(struct drm_device *dev,
284 284
285static struct drm_framebuffer *psb_framebuffer_create 285static struct drm_framebuffer *psb_framebuffer_create
286 (struct drm_device *dev, 286 (struct drm_device *dev,
287 struct drm_mode_fb_cmd2 *mode_cmd, 287 const struct drm_mode_fb_cmd2 *mode_cmd,
288 struct gtt_range *gt) 288 struct gtt_range *gt)
289{ 289{
290 struct psb_framebuffer *fb; 290 struct psb_framebuffer *fb;
@@ -488,7 +488,7 @@ out_err1:
488 */ 488 */
489static struct drm_framebuffer *psb_user_framebuffer_create 489static struct drm_framebuffer *psb_user_framebuffer_create
490 (struct drm_device *dev, struct drm_file *filp, 490 (struct drm_device *dev, struct drm_file *filp,
491 struct drm_mode_fb_cmd2 *cmd) 491 const struct drm_mode_fb_cmd2 *cmd)
492{ 492{
493 struct gtt_range *r; 493 struct gtt_range *r;
494 struct drm_gem_object *obj; 494 struct drm_gem_object *obj;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 95bb27de774f..fd88060b2596 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -288,7 +288,7 @@ struct i915_hotplug {
288 list_for_each_entry(intel_plane, \ 288 list_for_each_entry(intel_plane, \
289 &(dev)->mode_config.plane_list, \ 289 &(dev)->mode_config.plane_list, \
290 base.head) \ 290 base.head) \
291 if ((intel_plane)->pipe == (intel_crtc)->pipe) 291 for_each_if ((intel_plane)->pipe == (intel_crtc)->pipe)
292 292
293#define for_each_intel_crtc(dev, intel_crtc) \ 293#define for_each_intel_crtc(dev, intel_crtc) \
294 list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, base.head) 294 list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, base.head)
@@ -305,15 +305,15 @@ struct i915_hotplug {
305 305
306#define for_each_encoder_on_crtc(dev, __crtc, intel_encoder) \ 306#define for_each_encoder_on_crtc(dev, __crtc, intel_encoder) \
307 list_for_each_entry((intel_encoder), &(dev)->mode_config.encoder_list, base.head) \ 307 list_for_each_entry((intel_encoder), &(dev)->mode_config.encoder_list, base.head) \
308 if ((intel_encoder)->base.crtc == (__crtc)) 308 for_each_if ((intel_encoder)->base.crtc == (__crtc))
309 309
310#define for_each_connector_on_encoder(dev, __encoder, intel_connector) \ 310#define for_each_connector_on_encoder(dev, __encoder, intel_connector) \
311 list_for_each_entry((intel_connector), &(dev)->mode_config.connector_list, base.head) \ 311 list_for_each_entry((intel_connector), &(dev)->mode_config.connector_list, base.head) \
312 if ((intel_connector)->base.encoder == (__encoder)) 312 for_each_if ((intel_connector)->base.encoder == (__encoder))
313 313
314#define for_each_power_domain(domain, mask) \ 314#define for_each_power_domain(domain, mask) \
315 for ((domain) = 0; (domain) < POWER_DOMAIN_NUM; (domain)++) \ 315 for ((domain) = 0; (domain) < POWER_DOMAIN_NUM; (domain)++) \
316 if ((1 << (domain)) & (mask)) 316 for_each_if ((1 << (domain)) & (mask))
317 317
318struct drm_i915_private; 318struct drm_i915_private;
319struct i915_mm_struct; 319struct i915_mm_struct;
@@ -734,7 +734,7 @@ struct intel_uncore {
734 for ((i__) = 0, (domain__) = &(dev_priv__)->uncore.fw_domain[0]; \ 734 for ((i__) = 0, (domain__) = &(dev_priv__)->uncore.fw_domain[0]; \
735 (i__) < FW_DOMAIN_ID_COUNT; \ 735 (i__) < FW_DOMAIN_ID_COUNT; \
736 (i__)++, (domain__) = &(dev_priv__)->uncore.fw_domain[i__]) \ 736 (i__)++, (domain__) = &(dev_priv__)->uncore.fw_domain[i__]) \
737 if (((mask__) & (dev_priv__)->uncore.fw_domains) & (1 << (i__))) 737 for_each_if (((mask__) & (dev_priv__)->uncore.fw_domains) & (1 << (i__)))
738 738
739#define for_each_fw_domain(domain__, dev_priv__, i__) \ 739#define for_each_fw_domain(domain__, dev_priv__, i__) \
740 for_each_fw_domain_mask(domain__, FORCEWAKE_ALL, dev_priv__, i__) 740 for_each_fw_domain_mask(domain__, FORCEWAKE_ALL, dev_priv__, i__)
@@ -1979,7 +1979,7 @@ static inline struct drm_i915_private *guc_to_i915(struct intel_guc *guc)
1979/* Iterate over initialised rings */ 1979/* Iterate over initialised rings */
1980#define for_each_ring(ring__, dev_priv__, i__) \ 1980#define for_each_ring(ring__, dev_priv__, i__) \
1981 for ((i__) = 0; (i__) < I915_NUM_RINGS; (i__)++) \ 1981 for ((i__) = 0; (i__) < I915_NUM_RINGS; (i__)++) \
1982 if (((ring__) = &(dev_priv__)->ring[(i__)]), intel_ring_initialized((ring__))) 1982 for_each_if ((((ring__) = &(dev_priv__)->ring[(i__)]), intel_ring_initialized((ring__))))
1983 1983
1984enum hdmi_force_audio { 1984enum hdmi_force_audio {
1985 HDMI_AUDIO_OFF_DVI = -2, /* no aux data for HDMI-DVI converter */ 1985 HDMI_AUDIO_OFF_DVI = -2, /* no aux data for HDMI-DVI converter */
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 71860f8680f9..bea7f3aef2b0 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12281,7 +12281,7 @@ static bool intel_fuzzy_clock_check(int clock1, int clock2)
12281 list_for_each_entry((intel_crtc), \ 12281 list_for_each_entry((intel_crtc), \
12282 &(dev)->mode_config.crtc_list, \ 12282 &(dev)->mode_config.crtc_list, \
12283 base.head) \ 12283 base.head) \
12284 if (mask & (1 <<(intel_crtc)->pipe)) 12284 for_each_if (mask & (1 <<(intel_crtc)->pipe))
12285 12285
12286static bool 12286static bool
12287intel_compare_m_n(unsigned int m, unsigned int n, 12287intel_compare_m_n(unsigned int m, unsigned int n,
@@ -14377,7 +14377,7 @@ static int intel_framebuffer_init(struct drm_device *dev,
14377static struct drm_framebuffer * 14377static struct drm_framebuffer *
14378intel_user_framebuffer_create(struct drm_device *dev, 14378intel_user_framebuffer_create(struct drm_device *dev,
14379 struct drm_file *filp, 14379 struct drm_file *filp,
14380 struct drm_mode_fb_cmd2 *user_mode_cmd) 14380 const struct drm_mode_fb_cmd2 *user_mode_cmd)
14381{ 14381{
14382 struct drm_i915_gem_object *obj; 14382 struct drm_i915_gem_object *obj;
14383 struct drm_mode_fb_cmd2 mode_cmd = *user_mode_cmd; 14383 struct drm_mode_fb_cmd2 mode_cmd = *user_mode_cmd;
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 0598932ce623..d7926658b93d 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -123,8 +123,6 @@ struct intel_framebuffer {
123struct intel_fbdev { 123struct intel_fbdev {
124 struct drm_fb_helper helper; 124 struct drm_fb_helper helper;
125 struct intel_framebuffer *fb; 125 struct intel_framebuffer *fb;
126 struct list_head fbdev_list;
127 struct drm_display_mode *our_mode;
128 int preferred_bpp; 126 int preferred_bpp;
129}; 127};
130 128
diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
index e6cb25239941..02551ff228c2 100644
--- a/drivers/gpu/drm/i915/intel_dsi.h
+++ b/drivers/gpu/drm/i915/intel_dsi.h
@@ -117,7 +117,7 @@ static inline struct intel_dsi_host *to_intel_dsi_host(struct mipi_dsi_host *h)
117 117
118#define for_each_dsi_port(__port, __ports_mask) \ 118#define for_each_dsi_port(__port, __ports_mask) \
119 for ((__port) = PORT_A; (__port) < I915_MAX_PORTS; (__port)++) \ 119 for ((__port) = PORT_A; (__port) < I915_MAX_PORTS; (__port)++) \
120 if ((__ports_mask) & (1 << (__port))) 120 for_each_if ((__ports_mask) & (1 << (__port)))
121 121
122static inline struct intel_dsi *enc_to_intel_dsi(struct drm_encoder *encoder) 122static inline struct intel_dsi *enc_to_intel_dsi(struct drm_encoder *encoder)
123{ 123{
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index d89c1d0aa1b7..13f14208d8aa 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -57,13 +57,13 @@
57 i < (power_domains)->power_well_count && \ 57 i < (power_domains)->power_well_count && \
58 ((power_well) = &(power_domains)->power_wells[i]); \ 58 ((power_well) = &(power_domains)->power_wells[i]); \
59 i++) \ 59 i++) \
60 if ((power_well)->domains & (domain_mask)) 60 for_each_if ((power_well)->domains & (domain_mask))
61 61
62#define for_each_power_well_rev(i, power_well, domain_mask, power_domains) \ 62#define for_each_power_well_rev(i, power_well, domain_mask, power_domains) \
63 for (i = (power_domains)->power_well_count - 1; \ 63 for (i = (power_domains)->power_well_count - 1; \
64 i >= 0 && ((power_well) = &(power_domains)->power_wells[i]);\ 64 i >= 0 && ((power_well) = &(power_domains)->power_wells[i]);\
65 i--) \ 65 i--) \
66 if ((power_well)->domains & (domain_mask)) 66 for_each_if ((power_well)->domains & (domain_mask))
67 67
68bool intel_display_power_well_is_enabled(struct drm_i915_private *dev_priv, 68bool intel_display_power_well_is_enabled(struct drm_i915_private *dev_priv,
69 int power_well_id); 69 int power_well_id);
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 56dc132e8e20..c3b735971cec 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -832,8 +832,8 @@ intel_check_sprite_plane(struct drm_plane *plane,
832 hscale = drm_rect_calc_hscale(src, dst, min_scale, max_scale); 832 hscale = drm_rect_calc_hscale(src, dst, min_scale, max_scale);
833 if (hscale < 0) { 833 if (hscale < 0) {
834 DRM_DEBUG_KMS("Horizontal scaling factor out of limits\n"); 834 DRM_DEBUG_KMS("Horizontal scaling factor out of limits\n");
835 drm_rect_debug_print(src, true); 835 drm_rect_debug_print("src: ", src, true);
836 drm_rect_debug_print(dst, false); 836 drm_rect_debug_print("dst: ", dst, false);
837 837
838 return hscale; 838 return hscale;
839 } 839 }
@@ -841,8 +841,8 @@ intel_check_sprite_plane(struct drm_plane *plane,
841 vscale = drm_rect_calc_vscale(src, dst, min_scale, max_scale); 841 vscale = drm_rect_calc_vscale(src, dst, min_scale, max_scale);
842 if (vscale < 0) { 842 if (vscale < 0) {
843 DRM_DEBUG_KMS("Vertical scaling factor out of limits\n"); 843 DRM_DEBUG_KMS("Vertical scaling factor out of limits\n");
844 drm_rect_debug_print(src, true); 844 drm_rect_debug_print("src: ", src, true);
845 drm_rect_debug_print(dst, false); 845 drm_rect_debug_print("dst: ", dst, false);
846 846
847 return vscale; 847 return vscale;
848 } 848 }
diff --git a/drivers/gpu/drm/imx/Kconfig b/drivers/gpu/drm/imx/Kconfig
index 2b81a417cf29..35ca4f007839 100644
--- a/drivers/gpu/drm/imx/Kconfig
+++ b/drivers/gpu/drm/imx/Kconfig
@@ -10,15 +10,6 @@ config DRM_IMX
10 help 10 help
11 enable i.MX graphics support 11 enable i.MX graphics support
12 12
13config DRM_IMX_FB_HELPER
14 tristate "provide legacy framebuffer /dev/fb0"
15 select DRM_KMS_CMA_HELPER
16 depends on DRM_IMX
17 help
18 The DRM framework can provide a legacy /dev/fb0 framebuffer
19 for your device. This is necessary to get a framebuffer console
20 and also for applications using the legacy framebuffer API
21
22config DRM_IMX_PARALLEL_DISPLAY 13config DRM_IMX_PARALLEL_DISPLAY
23 tristate "Support for parallel displays" 14 tristate "Support for parallel displays"
24 select DRM_PANEL 15 select DRM_PANEL
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 64f16ea779ef..6faa735376ec 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -49,8 +49,10 @@ struct imx_drm_crtc {
49 struct imx_drm_crtc_helper_funcs imx_drm_helper_funcs; 49 struct imx_drm_crtc_helper_funcs imx_drm_helper_funcs;
50}; 50};
51 51
52#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION)
52static int legacyfb_depth = 16; 53static int legacyfb_depth = 16;
53module_param(legacyfb_depth, int, 0444); 54module_param(legacyfb_depth, int, 0444);
55#endif
54 56
55int imx_drm_crtc_id(struct imx_drm_crtc *crtc) 57int imx_drm_crtc_id(struct imx_drm_crtc *crtc)
56{ 58{
@@ -60,26 +62,20 @@ EXPORT_SYMBOL_GPL(imx_drm_crtc_id);
60 62
61static void imx_drm_driver_lastclose(struct drm_device *drm) 63static void imx_drm_driver_lastclose(struct drm_device *drm)
62{ 64{
63#if IS_ENABLED(CONFIG_DRM_IMX_FB_HELPER)
64 struct imx_drm_device *imxdrm = drm->dev_private; 65 struct imx_drm_device *imxdrm = drm->dev_private;
65 66
66 if (imxdrm->fbhelper) 67 if (imxdrm->fbhelper)
67 drm_fbdev_cma_restore_mode(imxdrm->fbhelper); 68 drm_fbdev_cma_restore_mode(imxdrm->fbhelper);
68#endif
69} 69}
70 70
71static int imx_drm_driver_unload(struct drm_device *drm) 71static int imx_drm_driver_unload(struct drm_device *drm)
72{ 72{
73#if IS_ENABLED(CONFIG_DRM_IMX_FB_HELPER)
74 struct imx_drm_device *imxdrm = drm->dev_private; 73 struct imx_drm_device *imxdrm = drm->dev_private;
75#endif
76 74
77 drm_kms_helper_poll_fini(drm); 75 drm_kms_helper_poll_fini(drm);
78 76
79#if IS_ENABLED(CONFIG_DRM_IMX_FB_HELPER)
80 if (imxdrm->fbhelper) 77 if (imxdrm->fbhelper)
81 drm_fbdev_cma_fini(imxdrm->fbhelper); 78 drm_fbdev_cma_fini(imxdrm->fbhelper);
82#endif
83 79
84 component_unbind_all(drm->dev, drm); 80 component_unbind_all(drm->dev, drm);
85 81
@@ -215,11 +211,9 @@ EXPORT_SYMBOL_GPL(imx_drm_encoder_destroy);
215 211
216static void imx_drm_output_poll_changed(struct drm_device *drm) 212static void imx_drm_output_poll_changed(struct drm_device *drm)
217{ 213{
218#if IS_ENABLED(CONFIG_DRM_IMX_FB_HELPER)
219 struct imx_drm_device *imxdrm = drm->dev_private; 214 struct imx_drm_device *imxdrm = drm->dev_private;
220 215
221 drm_fbdev_cma_hotplug_event(imxdrm->fbhelper); 216 drm_fbdev_cma_hotplug_event(imxdrm->fbhelper);
222#endif
223} 217}
224 218
225static struct drm_mode_config_funcs imx_drm_mode_config_funcs = { 219static struct drm_mode_config_funcs imx_drm_mode_config_funcs = {
@@ -308,7 +302,7 @@ static int imx_drm_driver_load(struct drm_device *drm, unsigned long flags)
308 * The fb helper takes copies of key hardware information, so the 302 * The fb helper takes copies of key hardware information, so the
309 * crtcs/connectors/encoders must not change after this point. 303 * crtcs/connectors/encoders must not change after this point.
310 */ 304 */
311#if IS_ENABLED(CONFIG_DRM_IMX_FB_HELPER) 305#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION)
312 if (legacyfb_depth != 16 && legacyfb_depth != 32) { 306 if (legacyfb_depth != 16 && legacyfb_depth != 32) {
313 dev_warn(drm->dev, "Invalid legacyfb_depth. Defaulting to 16bpp\n"); 307 dev_warn(drm->dev, "Invalid legacyfb_depth. Defaulting to 16bpp\n");
314 legacyfb_depth = 16; 308 legacyfb_depth = 16;
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h
index 912151c36d59..205b2801d3b8 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.h
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
@@ -252,7 +252,7 @@ void mgag200_fbdev_fini(struct mga_device *mdev);
252 /* mgag200_main.c */ 252 /* mgag200_main.c */
253int mgag200_framebuffer_init(struct drm_device *dev, 253int mgag200_framebuffer_init(struct drm_device *dev,
254 struct mga_framebuffer *mfb, 254 struct mga_framebuffer *mfb,
255 struct drm_mode_fb_cmd2 *mode_cmd, 255 const struct drm_mode_fb_cmd2 *mode_cmd,
256 struct drm_gem_object *obj); 256 struct drm_gem_object *obj);
257 257
258 258
diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
index b35b5b2db4ec..d9b04b008feb 100644
--- a/drivers/gpu/drm/mgag200/mgag200_fb.c
+++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
@@ -138,7 +138,7 @@ static struct fb_ops mgag200fb_ops = {
138}; 138};
139 139
140static int mgag200fb_create_object(struct mga_fbdev *afbdev, 140static int mgag200fb_create_object(struct mga_fbdev *afbdev,
141 struct drm_mode_fb_cmd2 *mode_cmd, 141 const struct drm_mode_fb_cmd2 *mode_cmd,
142 struct drm_gem_object **gobj_p) 142 struct drm_gem_object **gobj_p)
143{ 143{
144 struct drm_device *dev = afbdev->helper.dev; 144 struct drm_device *dev = afbdev->helper.dev;
diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c
index b1a0f5656175..9147444d5bf2 100644
--- a/drivers/gpu/drm/mgag200/mgag200_main.c
+++ b/drivers/gpu/drm/mgag200/mgag200_main.c
@@ -29,7 +29,7 @@ static const struct drm_framebuffer_funcs mga_fb_funcs = {
29 29
30int mgag200_framebuffer_init(struct drm_device *dev, 30int mgag200_framebuffer_init(struct drm_device *dev,
31 struct mga_framebuffer *gfb, 31 struct mga_framebuffer *gfb,
32 struct drm_mode_fb_cmd2 *mode_cmd, 32 const struct drm_mode_fb_cmd2 *mode_cmd,
33 struct drm_gem_object *obj) 33 struct drm_gem_object *obj)
34{ 34{
35 int ret; 35 int ret;
@@ -47,7 +47,7 @@ int mgag200_framebuffer_init(struct drm_device *dev,
47static struct drm_framebuffer * 47static struct drm_framebuffer *
48mgag200_user_framebuffer_create(struct drm_device *dev, 48mgag200_user_framebuffer_create(struct drm_device *dev,
49 struct drm_file *filp, 49 struct drm_file *filp,
50 struct drm_mode_fb_cmd2 *mode_cmd) 50 const struct drm_mode_fb_cmd2 *mode_cmd)
51{ 51{
52 struct drm_gem_object *obj; 52 struct drm_gem_object *obj;
53 struct mga_framebuffer *mga_fb; 53 struct mga_framebuffer *mga_fb;
diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
index 3be7a56b14f1..9a713b7a009d 100644
--- a/drivers/gpu/drm/msm/msm_drv.h
+++ b/drivers/gpu/drm/msm/msm_drv.h
@@ -240,9 +240,9 @@ uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int id, int plane);
240struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane); 240struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane);
241const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb); 241const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb);
242struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, 242struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
243 struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos); 243 const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos);
244struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, 244struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev,
245 struct drm_file *file, struct drm_mode_fb_cmd2 *mode_cmd); 245 struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd);
246 246
247struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev); 247struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev);
248 248
diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c
index 121713281417..a474d6cf5d9f 100644
--- a/drivers/gpu/drm/msm/msm_fb.c
+++ b/drivers/gpu/drm/msm/msm_fb.c
@@ -138,7 +138,7 @@ const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb)
138} 138}
139 139
140struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, 140struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev,
141 struct drm_file *file, struct drm_mode_fb_cmd2 *mode_cmd) 141 struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd)
142{ 142{
143 struct drm_gem_object *bos[4] = {0}; 143 struct drm_gem_object *bos[4] = {0};
144 struct drm_framebuffer *fb; 144 struct drm_framebuffer *fb;
@@ -168,7 +168,7 @@ out_unref:
168} 168}
169 169
170struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, 170struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev,
171 struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos) 171 const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos)
172{ 172{
173 struct msm_drm_private *priv = dev->dev_private; 173 struct msm_drm_private *priv = dev->dev_private;
174 struct msm_kms *kms = priv->kms; 174 struct msm_kms *kms = priv->kms;
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index db6bc6760545..ea9d3bc91266 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -246,7 +246,7 @@ static const struct drm_framebuffer_funcs nouveau_framebuffer_funcs = {
246int 246int
247nouveau_framebuffer_init(struct drm_device *dev, 247nouveau_framebuffer_init(struct drm_device *dev,
248 struct nouveau_framebuffer *nv_fb, 248 struct nouveau_framebuffer *nv_fb,
249 struct drm_mode_fb_cmd2 *mode_cmd, 249 const struct drm_mode_fb_cmd2 *mode_cmd,
250 struct nouveau_bo *nvbo) 250 struct nouveau_bo *nvbo)
251{ 251{
252 struct nouveau_display *disp = nouveau_display(dev); 252 struct nouveau_display *disp = nouveau_display(dev);
@@ -272,7 +272,7 @@ nouveau_framebuffer_init(struct drm_device *dev,
272static struct drm_framebuffer * 272static struct drm_framebuffer *
273nouveau_user_framebuffer_create(struct drm_device *dev, 273nouveau_user_framebuffer_create(struct drm_device *dev,
274 struct drm_file *file_priv, 274 struct drm_file *file_priv,
275 struct drm_mode_fb_cmd2 *mode_cmd) 275 const struct drm_mode_fb_cmd2 *mode_cmd)
276{ 276{
277 struct nouveau_framebuffer *nouveau_fb; 277 struct nouveau_framebuffer *nouveau_fb;
278 struct drm_gem_object *gem; 278 struct drm_gem_object *gem;
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.h b/drivers/gpu/drm/nouveau/nouveau_display.h
index 856abe0f070d..5a57d8b472c4 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.h
+++ b/drivers/gpu/drm/nouveau/nouveau_display.h
@@ -23,7 +23,7 @@ nouveau_framebuffer(struct drm_framebuffer *fb)
23} 23}
24 24
25int nouveau_framebuffer_init(struct drm_device *, struct nouveau_framebuffer *, 25int nouveau_framebuffer_init(struct drm_device *, struct nouveau_framebuffer *,
26 struct drm_mode_fb_cmd2 *, struct nouveau_bo *); 26 const struct drm_mode_fb_cmd2 *, struct nouveau_bo *);
27 27
28struct nouveau_page_flip_state { 28struct nouveau_page_flip_state {
29 struct list_head head; 29 struct list_head head;
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.h b/drivers/gpu/drm/nouveau/nouveau_fbcon.h
index 1e2e9e27a03b..ca77ad001978 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.h
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.h
@@ -34,7 +34,6 @@
34struct nouveau_fbdev { 34struct nouveau_fbdev {
35 struct drm_fb_helper helper; 35 struct drm_fb_helper helper;
36 struct nouveau_framebuffer nouveau_fb; 36 struct nouveau_framebuffer nouveau_fb;
37 struct list_head fbdev_list;
38 struct drm_device *dev; 37 struct drm_device *dev;
39 unsigned int saved_flags; 38 unsigned int saved_flags;
40 struct nvif_object surf2d; 39 struct nvif_object surf2d;
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h
index 5c367aad8a6e..130fca70bfd7 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.h
+++ b/drivers/gpu/drm/omapdrm/omap_drv.h
@@ -172,9 +172,9 @@ void copy_timings_drm_to_omap(struct omap_video_timings *timings,
172uint32_t omap_framebuffer_get_formats(uint32_t *pixel_formats, 172uint32_t omap_framebuffer_get_formats(uint32_t *pixel_formats,
173 uint32_t max_formats, enum omap_color_mode supported_modes); 173 uint32_t max_formats, enum omap_color_mode supported_modes);
174struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, 174struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
175 struct drm_file *file, struct drm_mode_fb_cmd2 *mode_cmd); 175 struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd);
176struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, 176struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
177 struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos); 177 const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos);
178struct drm_gem_object *omap_framebuffer_bo(struct drm_framebuffer *fb, int p); 178struct drm_gem_object *omap_framebuffer_bo(struct drm_framebuffer *fb, int p);
179int omap_framebuffer_pin(struct drm_framebuffer *fb); 179int omap_framebuffer_pin(struct drm_framebuffer *fb);
180void omap_framebuffer_unpin(struct drm_framebuffer *fb); 180void omap_framebuffer_unpin(struct drm_framebuffer *fb);
@@ -248,7 +248,7 @@ struct omap_dss_device *omap_encoder_get_dssdev(struct drm_encoder *encoder);
248 248
249static inline int objects_lookup(struct drm_device *dev, 249static inline int objects_lookup(struct drm_device *dev,
250 struct drm_file *filp, uint32_t pixel_format, 250 struct drm_file *filp, uint32_t pixel_format,
251 struct drm_gem_object **bos, uint32_t *handles) 251 struct drm_gem_object **bos, const uint32_t *handles)
252{ 252{
253 int i, n = drm_format_num_planes(pixel_format); 253 int i, n = drm_format_num_planes(pixel_format);
254 254
diff --git a/drivers/gpu/drm/omapdrm/omap_fb.c b/drivers/gpu/drm/omapdrm/omap_fb.c
index 636a1f921569..ad202dfc1a49 100644
--- a/drivers/gpu/drm/omapdrm/omap_fb.c
+++ b/drivers/gpu/drm/omapdrm/omap_fb.c
@@ -364,7 +364,7 @@ void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m)
364#endif 364#endif
365 365
366struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, 366struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
367 struct drm_file *file, struct drm_mode_fb_cmd2 *mode_cmd) 367 struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd)
368{ 368{
369 struct drm_gem_object *bos[4]; 369 struct drm_gem_object *bos[4];
370 struct drm_framebuffer *fb; 370 struct drm_framebuffer *fb;
@@ -386,7 +386,7 @@ struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
386} 386}
387 387
388struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, 388struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
389 struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos) 389 const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos)
390{ 390{
391 struct omap_framebuffer *omap_fb = NULL; 391 struct omap_framebuffer *omap_fb = NULL;
392 struct drm_framebuffer *fb = NULL; 392 struct drm_framebuffer *fb = NULL;
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 183aea1abebc..cddba079197f 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -521,7 +521,7 @@ static const struct drm_framebuffer_funcs qxl_fb_funcs = {
521int 521int
522qxl_framebuffer_init(struct drm_device *dev, 522qxl_framebuffer_init(struct drm_device *dev,
523 struct qxl_framebuffer *qfb, 523 struct qxl_framebuffer *qfb,
524 struct drm_mode_fb_cmd2 *mode_cmd, 524 const struct drm_mode_fb_cmd2 *mode_cmd,
525 struct drm_gem_object *obj) 525 struct drm_gem_object *obj)
526{ 526{
527 int ret; 527 int ret;
@@ -1003,7 +1003,7 @@ static int qdev_output_init(struct drm_device *dev, int num_output)
1003static struct drm_framebuffer * 1003static struct drm_framebuffer *
1004qxl_user_framebuffer_create(struct drm_device *dev, 1004qxl_user_framebuffer_create(struct drm_device *dev,
1005 struct drm_file *file_priv, 1005 struct drm_file *file_priv,
1006 struct drm_mode_fb_cmd2 *mode_cmd) 1006 const struct drm_mode_fb_cmd2 *mode_cmd)
1007{ 1007{
1008 struct drm_gem_object *obj; 1008 struct drm_gem_object *obj;
1009 struct qxl_framebuffer *qxl_fb; 1009 struct qxl_framebuffer *qxl_fb;
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
index 01a86948eb8c..6e6b9b1519b8 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.h
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
@@ -390,7 +390,7 @@ void qxl_fbdev_set_suspend(struct qxl_device *qdev, int state);
390int 390int
391qxl_framebuffer_init(struct drm_device *dev, 391qxl_framebuffer_init(struct drm_device *dev,
392 struct qxl_framebuffer *rfb, 392 struct qxl_framebuffer *rfb,
393 struct drm_mode_fb_cmd2 *mode_cmd, 393 const struct drm_mode_fb_cmd2 *mode_cmd,
394 struct drm_gem_object *obj); 394 struct drm_gem_object *obj);
395void qxl_display_read_client_monitors_config(struct qxl_device *qdev); 395void qxl_display_read_client_monitors_config(struct qxl_device *qdev);
396void qxl_send_monitors_config(struct qxl_device *qdev); 396void qxl_send_monitors_config(struct qxl_device *qdev);
diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
index c4a552637c93..7136e521e6db 100644
--- a/drivers/gpu/drm/qxl/qxl_fb.c
+++ b/drivers/gpu/drm/qxl/qxl_fb.c
@@ -40,7 +40,6 @@
40struct qxl_fbdev { 40struct qxl_fbdev {
41 struct drm_fb_helper helper; 41 struct drm_fb_helper helper;
42 struct qxl_framebuffer qfb; 42 struct qxl_framebuffer qfb;
43 struct list_head fbdev_list;
44 struct qxl_device *qdev; 43 struct qxl_device *qdev;
45 44
46 spinlock_t delayed_ops_lock; 45 spinlock_t delayed_ops_lock;
@@ -283,7 +282,7 @@ int qxl_get_handle_for_primary_fb(struct qxl_device *qdev,
283} 282}
284 283
285static int qxlfb_create_pinned_object(struct qxl_fbdev *qfbdev, 284static int qxlfb_create_pinned_object(struct qxl_fbdev *qfbdev,
286 struct drm_mode_fb_cmd2 *mode_cmd, 285 const struct drm_mode_fb_cmd2 *mode_cmd,
287 struct drm_gem_object **gobj_p) 286 struct drm_gem_object **gobj_p)
288{ 287{
289 struct qxl_device *qdev = qfbdev->qdev; 288 struct qxl_device *qdev = qfbdev->qdev;
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index a8d9927ed9eb..ded51fbb8fa2 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -1292,7 +1292,7 @@ static const struct drm_framebuffer_funcs radeon_fb_funcs = {
1292int 1292int
1293radeon_framebuffer_init(struct drm_device *dev, 1293radeon_framebuffer_init(struct drm_device *dev,
1294 struct radeon_framebuffer *rfb, 1294 struct radeon_framebuffer *rfb,
1295 struct drm_mode_fb_cmd2 *mode_cmd, 1295 const struct drm_mode_fb_cmd2 *mode_cmd,
1296 struct drm_gem_object *obj) 1296 struct drm_gem_object *obj)
1297{ 1297{
1298 int ret; 1298 int ret;
@@ -1309,7 +1309,7 @@ radeon_framebuffer_init(struct drm_device *dev,
1309static struct drm_framebuffer * 1309static struct drm_framebuffer *
1310radeon_user_framebuffer_create(struct drm_device *dev, 1310radeon_user_framebuffer_create(struct drm_device *dev,
1311 struct drm_file *file_priv, 1311 struct drm_file *file_priv,
1312 struct drm_mode_fb_cmd2 *mode_cmd) 1312 const struct drm_mode_fb_cmd2 *mode_cmd)
1313{ 1313{
1314 struct drm_gem_object *obj; 1314 struct drm_gem_object *obj;
1315 struct radeon_framebuffer *radeon_fb; 1315 struct radeon_framebuffer *radeon_fb;
diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
index 26da2f4d7b4f..adc44bbc81a9 100644
--- a/drivers/gpu/drm/radeon/radeon_fb.c
+++ b/drivers/gpu/drm/radeon/radeon_fb.c
@@ -44,7 +44,6 @@
44struct radeon_fbdev { 44struct radeon_fbdev {
45 struct drm_fb_helper helper; 45 struct drm_fb_helper helper;
46 struct radeon_framebuffer rfb; 46 struct radeon_framebuffer rfb;
47 struct list_head fbdev_list;
48 struct radeon_device *rdev; 47 struct radeon_device *rdev;
49}; 48};
50 49
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
index 830e171c3a9e..b8e3c277a95b 100644
--- a/drivers/gpu/drm/radeon/radeon_mode.h
+++ b/drivers/gpu/drm/radeon/radeon_mode.h
@@ -929,7 +929,7 @@ extern void radeon_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green
929 u16 *blue, int regno); 929 u16 *blue, int regno);
930int radeon_framebuffer_init(struct drm_device *dev, 930int radeon_framebuffer_init(struct drm_device *dev,
931 struct radeon_framebuffer *rfb, 931 struct radeon_framebuffer *rfb,
932 struct drm_mode_fb_cmd2 *mode_cmd, 932 const struct drm_mode_fb_cmd2 *mode_cmd,
933 struct drm_gem_object *obj); 933 struct drm_gem_object *obj);
934 934
935int radeonfb_remove(struct drm_device *dev, struct drm_framebuffer *fb); 935int radeonfb_remove(struct drm_device *dev, struct drm_framebuffer *fb);
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
index ca12e8ca5552..43bce69d8560 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
@@ -136,7 +136,7 @@ int rcar_du_dumb_create(struct drm_file *file, struct drm_device *dev,
136 136
137static struct drm_framebuffer * 137static struct drm_framebuffer *
138rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv, 138rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv,
139 struct drm_mode_fb_cmd2 *mode_cmd) 139 const struct drm_mode_fb_cmd2 *mode_cmd)
140{ 140{
141 struct rcar_du_device *rcdu = dev->dev_private; 141 struct rcar_du_device *rcdu = dev->dev_private;
142 const struct rcar_du_format_info *format; 142 const struct rcar_du_format_info *format;
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
index 002645bb5bbf..b8ac5911c102 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
@@ -72,7 +72,7 @@ static struct drm_framebuffer_funcs rockchip_drm_fb_funcs = {
72}; 72};
73 73
74static struct rockchip_drm_fb * 74static struct rockchip_drm_fb *
75rockchip_fb_alloc(struct drm_device *dev, struct drm_mode_fb_cmd2 *mode_cmd, 75rockchip_fb_alloc(struct drm_device *dev, const struct drm_mode_fb_cmd2 *mode_cmd,
76 struct drm_gem_object **obj, unsigned int num_planes) 76 struct drm_gem_object **obj, unsigned int num_planes)
77{ 77{
78 struct rockchip_drm_fb *rockchip_fb; 78 struct rockchip_drm_fb *rockchip_fb;
@@ -102,7 +102,7 @@ rockchip_fb_alloc(struct drm_device *dev, struct drm_mode_fb_cmd2 *mode_cmd,
102 102
103static struct drm_framebuffer * 103static struct drm_framebuffer *
104rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, 104rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
105 struct drm_mode_fb_cmd2 *mode_cmd) 105 const struct drm_mode_fb_cmd2 *mode_cmd)
106{ 106{
107 struct rockchip_drm_fb *rockchip_fb; 107 struct rockchip_drm_fb *rockchip_fb;
108 struct drm_gem_object *objs[ROCKCHIP_MAX_FB_BUFFER]; 108 struct drm_gem_object *objs[ROCKCHIP_MAX_FB_BUFFER];
@@ -173,7 +173,7 @@ static const struct drm_mode_config_funcs rockchip_drm_mode_config_funcs = {
173 173
174struct drm_framebuffer * 174struct drm_framebuffer *
175rockchip_drm_framebuffer_init(struct drm_device *dev, 175rockchip_drm_framebuffer_init(struct drm_device *dev,
176 struct drm_mode_fb_cmd2 *mode_cmd, 176 const struct drm_mode_fb_cmd2 *mode_cmd,
177 struct drm_gem_object *obj) 177 struct drm_gem_object *obj)
178{ 178{
179 struct rockchip_drm_fb *rockchip_fb; 179 struct rockchip_drm_fb *rockchip_fb;
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.h b/drivers/gpu/drm/rockchip/rockchip_drm_fb.h
index 09574d48226f..2fe47f1ee98f 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.h
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.h
@@ -17,7 +17,7 @@
17 17
18struct drm_framebuffer * 18struct drm_framebuffer *
19rockchip_drm_framebuffer_init(struct drm_device *dev, 19rockchip_drm_framebuffer_init(struct drm_device *dev,
20 struct drm_mode_fb_cmd2 *mode_cmd, 20 const struct drm_mode_fb_cmd2 *mode_cmd,
21 struct drm_gem_object *obj); 21 struct drm_gem_object *obj);
22void rockchip_drm_framebuffer_fini(struct drm_framebuffer *fb); 22void rockchip_drm_framebuffer_fini(struct drm_framebuffer *fb);
23 23
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_kms.c b/drivers/gpu/drm/shmobile/shmob_drm_kms.c
index aaf98ace4a90..388a0fc13564 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_kms.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_kms.c
@@ -104,7 +104,7 @@ const struct shmob_drm_format_info *shmob_drm_format_info(u32 fourcc)
104 104
105static struct drm_framebuffer * 105static struct drm_framebuffer *
106shmob_drm_fb_create(struct drm_device *dev, struct drm_file *file_priv, 106shmob_drm_fb_create(struct drm_device *dev, struct drm_file *file_priv,
107 struct drm_mode_fb_cmd2 *mode_cmd) 107 const struct drm_mode_fb_cmd2 *mode_cmd)
108{ 108{
109 const struct shmob_drm_format_info *format; 109 const struct shmob_drm_format_info *format;
110 110
diff --git a/drivers/gpu/drm/tegra/Kconfig b/drivers/gpu/drm/tegra/Kconfig
index 74d9d621453d..63ebb154b9b5 100644
--- a/drivers/gpu/drm/tegra/Kconfig
+++ b/drivers/gpu/drm/tegra/Kconfig
@@ -16,18 +16,6 @@ config DRM_TEGRA
16 16
17if DRM_TEGRA 17if DRM_TEGRA
18 18
19config DRM_TEGRA_FBDEV
20 bool "Enable legacy fbdev support"
21 select DRM_KMS_FB_HELPER
22 select FB_SYS_FILLRECT
23 select FB_SYS_COPYAREA
24 select FB_SYS_IMAGEBLIT
25 default y
26 help
27 Choose this option if you have a need for the legacy fbdev support.
28 Note that this support also provides the Linux console on top of
29 the Tegra modesetting driver.
30
31config DRM_TEGRA_DEBUG 19config DRM_TEGRA_DEBUG
32 bool "NVIDIA Tegra DRM debug support" 20 bool "NVIDIA Tegra DRM debug support"
33 help 21 help
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 159ef515cab1..e0f827790a5e 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -106,7 +106,7 @@ static int tegra_atomic_commit(struct drm_device *drm,
106 106
107static const struct drm_mode_config_funcs tegra_drm_mode_funcs = { 107static const struct drm_mode_config_funcs tegra_drm_mode_funcs = {
108 .fb_create = tegra_fb_create, 108 .fb_create = tegra_fb_create,
109#ifdef CONFIG_DRM_TEGRA_FBDEV 109#ifdef CONFIG_DRM_FBDEV_EMULATION
110 .output_poll_changed = tegra_fb_output_poll_changed, 110 .output_poll_changed = tegra_fb_output_poll_changed,
111#endif 111#endif
112 .atomic_check = drm_atomic_helper_check, 112 .atomic_check = drm_atomic_helper_check,
@@ -260,7 +260,7 @@ static void tegra_drm_context_free(struct tegra_drm_context *context)
260 260
261static void tegra_drm_lastclose(struct drm_device *drm) 261static void tegra_drm_lastclose(struct drm_device *drm)
262{ 262{
263#ifdef CONFIG_DRM_TEGRA_FBDEV 263#ifdef CONFIG_DRM_FBDEV_EMULATION
264 struct tegra_drm *tegra = drm->dev_private; 264 struct tegra_drm *tegra = drm->dev_private;
265 265
266 tegra_fbdev_restore_mode(tegra->fbdev); 266 tegra_fbdev_restore_mode(tegra->fbdev);
diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
index ec49275ffb24..d88a2d18c1a4 100644
--- a/drivers/gpu/drm/tegra/drm.h
+++ b/drivers/gpu/drm/tegra/drm.h
@@ -30,7 +30,7 @@ struct tegra_fb {
30 unsigned int num_planes; 30 unsigned int num_planes;
31}; 31};
32 32
33#ifdef CONFIG_DRM_TEGRA_FBDEV 33#ifdef CONFIG_DRM_FBDEV_EMULATION
34struct tegra_fbdev { 34struct tegra_fbdev {
35 struct drm_fb_helper base; 35 struct drm_fb_helper base;
36 struct tegra_fb *fb; 36 struct tegra_fb *fb;
@@ -46,7 +46,7 @@ struct tegra_drm {
46 struct mutex clients_lock; 46 struct mutex clients_lock;
47 struct list_head clients; 47 struct list_head clients;
48 48
49#ifdef CONFIG_DRM_TEGRA_FBDEV 49#ifdef CONFIG_DRM_FBDEV_EMULATION
50 struct tegra_fbdev *fbdev; 50 struct tegra_fbdev *fbdev;
51#endif 51#endif
52 52
@@ -268,12 +268,12 @@ int tegra_fb_get_tiling(struct drm_framebuffer *framebuffer,
268 struct tegra_bo_tiling *tiling); 268 struct tegra_bo_tiling *tiling);
269struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, 269struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,
270 struct drm_file *file, 270 struct drm_file *file,
271 struct drm_mode_fb_cmd2 *cmd); 271 const struct drm_mode_fb_cmd2 *cmd);
272int tegra_drm_fb_prepare(struct drm_device *drm); 272int tegra_drm_fb_prepare(struct drm_device *drm);
273void tegra_drm_fb_free(struct drm_device *drm); 273void tegra_drm_fb_free(struct drm_device *drm);
274int tegra_drm_fb_init(struct drm_device *drm); 274int tegra_drm_fb_init(struct drm_device *drm);
275void tegra_drm_fb_exit(struct drm_device *drm); 275void tegra_drm_fb_exit(struct drm_device *drm);
276#ifdef CONFIG_DRM_TEGRA_FBDEV 276#ifdef CONFIG_DRM_FBDEV_EMULATION
277void tegra_fbdev_restore_mode(struct tegra_fbdev *fbdev); 277void tegra_fbdev_restore_mode(struct tegra_fbdev *fbdev);
278void tegra_fb_output_poll_changed(struct drm_device *drm); 278void tegra_fb_output_poll_changed(struct drm_device *drm);
279#endif 279#endif
diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
index 1004075fd088..ede9e94f3312 100644
--- a/drivers/gpu/drm/tegra/fb.c
+++ b/drivers/gpu/drm/tegra/fb.c
@@ -18,7 +18,7 @@ static inline struct tegra_fb *to_tegra_fb(struct drm_framebuffer *fb)
18 return container_of(fb, struct tegra_fb, base); 18 return container_of(fb, struct tegra_fb, base);
19} 19}
20 20
21#ifdef CONFIG_DRM_TEGRA_FBDEV 21#ifdef CONFIG_DRM_FBDEV_EMULATION
22static inline struct tegra_fbdev *to_tegra_fbdev(struct drm_fb_helper *helper) 22static inline struct tegra_fbdev *to_tegra_fbdev(struct drm_fb_helper *helper)
23{ 23{
24 return container_of(helper, struct tegra_fbdev, base); 24 return container_of(helper, struct tegra_fbdev, base);
@@ -92,7 +92,7 @@ static struct drm_framebuffer_funcs tegra_fb_funcs = {
92}; 92};
93 93
94static struct tegra_fb *tegra_fb_alloc(struct drm_device *drm, 94static struct tegra_fb *tegra_fb_alloc(struct drm_device *drm,
95 struct drm_mode_fb_cmd2 *mode_cmd, 95 const struct drm_mode_fb_cmd2 *mode_cmd,
96 struct tegra_bo **planes, 96 struct tegra_bo **planes,
97 unsigned int num_planes) 97 unsigned int num_planes)
98{ 98{
@@ -131,7 +131,7 @@ static struct tegra_fb *tegra_fb_alloc(struct drm_device *drm,
131 131
132struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, 132struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,
133 struct drm_file *file, 133 struct drm_file *file,
134 struct drm_mode_fb_cmd2 *cmd) 134 const struct drm_mode_fb_cmd2 *cmd)
135{ 135{
136 unsigned int hsub, vsub, i; 136 unsigned int hsub, vsub, i;
137 struct tegra_bo *planes[4]; 137 struct tegra_bo *planes[4];
@@ -181,7 +181,7 @@ unreference:
181 return ERR_PTR(err); 181 return ERR_PTR(err);
182} 182}
183 183
184#ifdef CONFIG_DRM_TEGRA_FBDEV 184#ifdef CONFIG_DRM_FBDEV_EMULATION
185static struct fb_ops tegra_fb_ops = { 185static struct fb_ops tegra_fb_ops = {
186 .owner = THIS_MODULE, 186 .owner = THIS_MODULE,
187 .fb_fillrect = drm_fb_helper_sys_fillrect, 187 .fb_fillrect = drm_fb_helper_sys_fillrect,
@@ -370,7 +370,7 @@ void tegra_fb_output_poll_changed(struct drm_device *drm)
370 370
371int tegra_drm_fb_prepare(struct drm_device *drm) 371int tegra_drm_fb_prepare(struct drm_device *drm)
372{ 372{
373#ifdef CONFIG_DRM_TEGRA_FBDEV 373#ifdef CONFIG_DRM_FBDEV_EMULATION
374 struct tegra_drm *tegra = drm->dev_private; 374 struct tegra_drm *tegra = drm->dev_private;
375 375
376 tegra->fbdev = tegra_fbdev_create(drm); 376 tegra->fbdev = tegra_fbdev_create(drm);
@@ -383,7 +383,7 @@ int tegra_drm_fb_prepare(struct drm_device *drm)
383 383
384void tegra_drm_fb_free(struct drm_device *drm) 384void tegra_drm_fb_free(struct drm_device *drm)
385{ 385{
386#ifdef CONFIG_DRM_TEGRA_FBDEV 386#ifdef CONFIG_DRM_FBDEV_EMULATION
387 struct tegra_drm *tegra = drm->dev_private; 387 struct tegra_drm *tegra = drm->dev_private;
388 388
389 tegra_fbdev_free(tegra->fbdev); 389 tegra_fbdev_free(tegra->fbdev);
@@ -392,7 +392,7 @@ void tegra_drm_fb_free(struct drm_device *drm)
392 392
393int tegra_drm_fb_init(struct drm_device *drm) 393int tegra_drm_fb_init(struct drm_device *drm)
394{ 394{
395#ifdef CONFIG_DRM_TEGRA_FBDEV 395#ifdef CONFIG_DRM_FBDEV_EMULATION
396 struct tegra_drm *tegra = drm->dev_private; 396 struct tegra_drm *tegra = drm->dev_private;
397 int err; 397 int err;
398 398
@@ -407,7 +407,7 @@ int tegra_drm_fb_init(struct drm_device *drm)
407 407
408void tegra_drm_fb_exit(struct drm_device *drm) 408void tegra_drm_fb_exit(struct drm_device *drm)
409{ 409{
410#ifdef CONFIG_DRM_TEGRA_FBDEV 410#ifdef CONFIG_DRM_FBDEV_EMULATION
411 struct tegra_drm *tegra = drm->dev_private; 411 struct tegra_drm *tegra = drm->dev_private;
412 412
413 tegra_fbdev_exit(tegra->fbdev); 413 tegra_fbdev_exit(tegra->fbdev);
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index 876cad58b1f9..4ddb21e7f52f 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -46,7 +46,7 @@ void tilcdc_module_cleanup(struct tilcdc_module *mod)
46static struct of_device_id tilcdc_of_match[]; 46static struct of_device_id tilcdc_of_match[];
47 47
48static struct drm_framebuffer *tilcdc_fb_create(struct drm_device *dev, 48static struct drm_framebuffer *tilcdc_fb_create(struct drm_device *dev,
49 struct drm_file *file_priv, struct drm_mode_fb_cmd2 *mode_cmd) 49 struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd)
50{ 50{
51 return drm_fb_cma_create(dev, file_priv, mode_cmd); 51 return drm_fb_cma_create(dev, file_priv, mode_cmd);
52} 52}
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index 80adbac82bde..4a064efcea58 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -108,7 +108,7 @@ void udl_fbdev_unplug(struct drm_device *dev);
108struct drm_framebuffer * 108struct drm_framebuffer *
109udl_fb_user_fb_create(struct drm_device *dev, 109udl_fb_user_fb_create(struct drm_device *dev,
110 struct drm_file *file, 110 struct drm_file *file,
111 struct drm_mode_fb_cmd2 *mode_cmd); 111 const struct drm_mode_fb_cmd2 *mode_cmd);
112 112
113int udl_render_hline(struct drm_device *dev, int bpp, struct urb **urb_ptr, 113int udl_render_hline(struct drm_device *dev, int bpp, struct urb **urb_ptr,
114 const char *front, char **urb_buf_ptr, 114 const char *front, char **urb_buf_ptr,
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index 62c7b1dafaa4..200419d4d43c 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -33,7 +33,6 @@ module_param(fb_defio, int, S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP);
33struct udl_fbdev { 33struct udl_fbdev {
34 struct drm_fb_helper helper; 34 struct drm_fb_helper helper;
35 struct udl_framebuffer ufb; 35 struct udl_framebuffer ufb;
36 struct list_head fbdev_list;
37 int fb_count; 36 int fb_count;
38}; 37};
39 38
@@ -456,7 +455,7 @@ static const struct drm_framebuffer_funcs udlfb_funcs = {
456static int 455static int
457udl_framebuffer_init(struct drm_device *dev, 456udl_framebuffer_init(struct drm_device *dev,
458 struct udl_framebuffer *ufb, 457 struct udl_framebuffer *ufb,
459 struct drm_mode_fb_cmd2 *mode_cmd, 458 const struct drm_mode_fb_cmd2 *mode_cmd,
460 struct udl_gem_object *obj) 459 struct udl_gem_object *obj)
461{ 460{
462 int ret; 461 int ret;
@@ -624,7 +623,7 @@ void udl_fbdev_unplug(struct drm_device *dev)
624struct drm_framebuffer * 623struct drm_framebuffer *
625udl_fb_user_fb_create(struct drm_device *dev, 624udl_fb_user_fb_create(struct drm_device *dev,
626 struct drm_file *file, 625 struct drm_file *file,
627 struct drm_mode_fb_cmd2 *mode_cmd) 626 const struct drm_mode_fb_cmd2 *mode_cmd)
628{ 627{
629 struct drm_gem_object *obj; 628 struct drm_gem_object *obj;
630 struct udl_framebuffer *ufb; 629 struct udl_framebuffer *ufb;
diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index f545913a56c7..306a7df7d013 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -215,7 +215,7 @@ static const struct drm_framebuffer_funcs virtio_gpu_fb_funcs = {
215int 215int
216virtio_gpu_framebuffer_init(struct drm_device *dev, 216virtio_gpu_framebuffer_init(struct drm_device *dev,
217 struct virtio_gpu_framebuffer *vgfb, 217 struct virtio_gpu_framebuffer *vgfb,
218 struct drm_mode_fb_cmd2 *mode_cmd, 218 const struct drm_mode_fb_cmd2 *mode_cmd,
219 struct drm_gem_object *obj) 219 struct drm_gem_object *obj)
220{ 220{
221 int ret; 221 int ret;
@@ -465,7 +465,7 @@ static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index)
465static struct drm_framebuffer * 465static struct drm_framebuffer *
466virtio_gpu_user_framebuffer_create(struct drm_device *dev, 466virtio_gpu_user_framebuffer_create(struct drm_device *dev,
467 struct drm_file *file_priv, 467 struct drm_file *file_priv,
468 struct drm_mode_fb_cmd2 *mode_cmd) 468 const struct drm_mode_fb_cmd2 *mode_cmd)
469{ 469{
470 struct drm_gem_object *obj = NULL; 470 struct drm_gem_object *obj = NULL;
471 struct virtio_gpu_framebuffer *virtio_gpu_fb; 471 struct virtio_gpu_framebuffer *virtio_gpu_fb;
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
index 79f0abe69b64..8f486f4c7023 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.h
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
@@ -328,7 +328,7 @@ void virtio_gpu_dequeue_fence_func(struct work_struct *work);
328/* virtio_gpu_display.c */ 328/* virtio_gpu_display.c */
329int virtio_gpu_framebuffer_init(struct drm_device *dev, 329int virtio_gpu_framebuffer_init(struct drm_device *dev,
330 struct virtio_gpu_framebuffer *vgfb, 330 struct virtio_gpu_framebuffer *vgfb,
331 struct drm_mode_fb_cmd2 *mode_cmd, 331 const struct drm_mode_fb_cmd2 *mode_cmd,
332 struct drm_gem_object *obj); 332 struct drm_gem_object *obj);
333int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev); 333int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev);
334void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev); 334void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev);
diff --git a/drivers/gpu/drm/virtio/virtgpu_fb.c b/drivers/gpu/drm/virtio/virtgpu_fb.c
index 6a81e084593b..2242a80866a9 100644
--- a/drivers/gpu/drm/virtio/virtgpu_fb.c
+++ b/drivers/gpu/drm/virtio/virtgpu_fb.c
@@ -32,7 +32,6 @@
32struct virtio_gpu_fbdev { 32struct virtio_gpu_fbdev {
33 struct drm_fb_helper helper; 33 struct drm_fb_helper helper;
34 struct virtio_gpu_framebuffer vgfb; 34 struct virtio_gpu_framebuffer vgfb;
35 struct list_head fbdev_list;
36 struct virtio_gpu_device *vgdev; 35 struct virtio_gpu_device *vgdev;
37 struct delayed_work work; 36 struct delayed_work work;
38}; 37};
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index 9fcd7f82995c..e38db35132ed 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -930,7 +930,7 @@ vmw_kms_new_framebuffer(struct vmw_private *dev_priv,
930 930
931static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev, 931static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev,
932 struct drm_file *file_priv, 932 struct drm_file *file_priv,
933 struct drm_mode_fb_cmd2 *mode_cmd2) 933 const struct drm_mode_fb_cmd2 *mode_cmd2)
934{ 934{
935 struct vmw_private *dev_priv = vmw_priv(dev); 935 struct vmw_private *dev_priv = vmw_priv(dev);
936 struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; 936 struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile;