diff options
| author | Dave Airlie <airlied@redhat.com> | 2015-11-30 17:01:18 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2015-11-30 17:01:18 -0500 |
| commit | aeb745e9b5f3e5bad1c03e402619f5506ca2f6da (patch) | |
| tree | bb44bfad53a008f92b144c99198ed6a0f69bc1a0 /drivers/gpu | |
| parent | 31ade3b83e1821da5fbb2f11b5b3d4ab2ec39db8 (diff) | |
| parent | 87069f4493b2101a71a92b7b9565f488a605a88f (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')
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 = { | |||
| 481 | int | 481 | int |
| 482 | amdgpu_framebuffer_init(struct drm_device *dev, | 482 | amdgpu_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, | |||
| 498 | static struct drm_framebuffer * | 498 | static struct drm_framebuffer * |
| 499 | amdgpu_user_framebuffer_create(struct drm_device *dev, | 499 | amdgpu_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 @@ | |||
| 45 | struct amdgpu_fbdev { | 45 | struct 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 | ||
| 552 | int amdgpu_framebuffer_init(struct drm_device *dev, | 552 | int 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 | ||
| 557 | int amdgpufb_remove(struct drm_device *dev, struct drm_framebuffer *fb); | 557 | int 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 | ||
| 37 | struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev, | 37 | struct 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 | ||
| 103 | static struct drm_framebuffer *armada_fb_create(struct drm_device *dev, | 103 | static 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 | ||
| 21 | struct armada_framebuffer *armada_framebuffer_create(struct drm_device *, | 21 | struct 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 { | |||
| 256 | struct ast_fbdev { | 256 | struct 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 | ||
| 310 | int ast_framebuffer_init(struct drm_device *dev, | 309 | int 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 | ||
| 315 | int ast_fbdev_init(struct drm_device *dev); | 314 | int 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 | ||
| 165 | static int astfb_create_object(struct ast_fbdev *afbdev, | 165 | static 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 | ||
| 310 | int ast_framebuffer_init(struct drm_device *dev, | 310 | int 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, | |||
| 327 | static struct drm_framebuffer * | 327 | static struct drm_framebuffer * |
| 328 | ast_user_framebuffer_create(struct drm_device *dev, | 328 | ast_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 | ||
| 404 | static struct drm_framebuffer *atmel_hlcdc_fb_create(struct drm_device *dev, | 404 | static 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 | ||
| 150 | int bochs_framebuffer_init(struct drm_device *dev, | 150 | int 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); |
| 154 | int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag, u64 *gpu_addr); | 154 | int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag, u64 *gpu_addr); |
| 155 | int bochs_bo_unpin(struct bochs_bo *bo); | 155 | int 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 | ||
| 36 | static int bochsfb_create_object(struct bochs_device *bochs, | 36 | static 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 | ||
| 485 | int bochs_framebuffer_init(struct drm_device *dev, | 485 | int 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, | |||
| 502 | static struct drm_framebuffer * | 502 | static struct drm_framebuffer * |
| 503 | bochs_user_framebuffer_create(struct drm_device *dev, | 503 | bochs_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 { | |||
| 153 | struct cirrus_fbdev { | 153 | struct 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 | ||
| 208 | int cirrus_framebuffer_init(struct drm_device *dev, | 207 | int 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 | ||
| 213 | bool cirrus_check_framebuffer(struct cirrus_device *cdev, int width, int height, | 212 | bool 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 | ||
| 137 | static int cirrusfb_create_object(struct cirrus_fbdev *afbdev, | 137 | static 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 | ||
| 30 | int cirrus_framebuffer_init(struct drm_device *dev, | 30 | int 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, | |||
| 47 | static struct drm_framebuffer * | 47 | static struct drm_framebuffer * |
| 48 | cirrus_user_framebuffer_create(struct drm_device *dev, | 48 | cirrus_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 | ||
| 1812 | commit: | 1812 | commit: |
| @@ -2184,7 +2184,7 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_dpms); | |||
| 2184 | */ | 2184 | */ |
| 2185 | void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc) | 2185 | void 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); | |||
| 2252 | void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc, | 2252 | void __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 | } |
| 2258 | EXPORT_SYMBOL(__drm_atomic_helper_crtc_destroy_state); | 2257 | EXPORT_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 | ||
| 46 | static struct drm_framebuffer * | 46 | static struct drm_framebuffer * |
| 47 | internal_framebuffer_create(struct drm_device *dev, | 47 | internal_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 | ||
| 3236 | static struct drm_framebuffer * | 3236 | static struct drm_framebuffer * |
| 3237 | internal_framebuffer_create(struct drm_device *dev, | 3237 | internal_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 | */ |
| 820 | void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, | 820 | void 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 | ||
| 76 | static struct drm_fb_cma *drm_fb_cma_alloc(struct drm_device *dev, | 76 | static 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 | */ |
| 109 | struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev, | 109 | struct 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 | */ |
| 250 | int | 251 | int |
| 251 | drm_gem_handle_delete(struct drm_file *filp, u32 handle) | 252 | drm_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 | */ |
| 318 | int | 323 | int |
| 319 | drm_gem_handle_create_tail(struct drm_file *file_priv, | 324 | drm_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 | } |
| 542 | EXPORT_SYMBOL(drm_gem_put_pages); | 547 | EXPORT_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 | */ | ||
| 545 | struct drm_gem_object * | 560 | struct drm_gem_object * |
| 546 | drm_gem_object_lookup(struct drm_device *dev, struct drm_file *filp, | 561 | drm_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 | } |
| 775 | EXPORT_SYMBOL(drm_gem_object_free); | 790 | EXPORT_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 | */ | ||
| 777 | void drm_gem_vm_open(struct vm_area_struct *vma) | 799 | void 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 | } |
| 783 | EXPORT_SYMBOL(drm_gem_vm_open); | 805 | EXPORT_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 | */ | ||
| 785 | void drm_gem_vm_close(struct vm_area_struct *vma) | 814 | void 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 | ||
| 1492 | out: | 1498 | out: |
| 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 | */ |
| 281 | void drm_rect_debug_print(const struct drm_rect *r, bool fixed_point) | 282 | void 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 | } |
| 295 | EXPORT_SYMBOL(drm_rect_debug_print); | 296 | EXPORT_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; |
| 266 | unlock: | ||
| 267 | mutex_unlock(&connector->dev->mode_config.mutex); | ||
| 268 | |||
| 269 | return ret; | ||
| 276 | } | 270 | } |
| 277 | 271 | ||
| 278 | static ssize_t modes_show(struct device *device, | 272 | static 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 | ||
| 118 | struct drm_framebuffer * | 118 | struct drm_framebuffer * |
| 119 | exynos_drm_framebuffer_init(struct drm_device *dev, | 119 | exynos_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 | ||
| 155 | static struct drm_framebuffer * | 155 | static struct drm_framebuffer * |
| 156 | exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, | 156 | exynos_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 | ||
| 19 | struct drm_framebuffer * | 19 | struct drm_framebuffer * |
| 20 | exynos_drm_framebuffer_init(struct drm_device *dev, | 20 | exynos_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 | */ |
| 242 | static int psb_framebuffer_init(struct drm_device *dev, | 242 | static 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 | ||
| 285 | static struct drm_framebuffer *psb_framebuffer_create | 285 | static 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 | */ |
| 489 | static struct drm_framebuffer *psb_user_framebuffer_create | 489 | static 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 | ||
| 318 | struct drm_i915_private; | 318 | struct drm_i915_private; |
| 319 | struct i915_mm_struct; | 319 | struct 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 | ||
| 1984 | enum hdmi_force_audio { | 1984 | enum 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 | ||
| 12286 | static bool | 12286 | static bool |
| 12287 | intel_compare_m_n(unsigned int m, unsigned int n, | 12287 | intel_compare_m_n(unsigned int m, unsigned int n, |
| @@ -14377,7 +14377,7 @@ static int intel_framebuffer_init(struct drm_device *dev, | |||
| 14377 | static struct drm_framebuffer * | 14377 | static struct drm_framebuffer * |
| 14378 | intel_user_framebuffer_create(struct drm_device *dev, | 14378 | intel_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 { | |||
| 123 | struct intel_fbdev { | 123 | struct 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 | ||
| 122 | static inline struct intel_dsi *enc_to_intel_dsi(struct drm_encoder *encoder) | 122 | static 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 | ||
| 68 | bool intel_display_power_well_is_enabled(struct drm_i915_private *dev_priv, | 68 | bool 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 | ||
| 13 | config 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 | |||
| 22 | config DRM_IMX_PARALLEL_DISPLAY | 13 | config 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) | ||
| 52 | static int legacyfb_depth = 16; | 53 | static int legacyfb_depth = 16; |
| 53 | module_param(legacyfb_depth, int, 0444); | 54 | module_param(legacyfb_depth, int, 0444); |
| 55 | #endif | ||
| 54 | 56 | ||
| 55 | int imx_drm_crtc_id(struct imx_drm_crtc *crtc) | 57 | int imx_drm_crtc_id(struct imx_drm_crtc *crtc) |
| 56 | { | 58 | { |
| @@ -60,26 +62,20 @@ EXPORT_SYMBOL_GPL(imx_drm_crtc_id); | |||
| 60 | 62 | ||
| 61 | static void imx_drm_driver_lastclose(struct drm_device *drm) | 63 | static 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 | ||
| 71 | static int imx_drm_driver_unload(struct drm_device *drm) | 71 | static 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 | ||
| 216 | static void imx_drm_output_poll_changed(struct drm_device *drm) | 212 | static 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 | ||
| 225 | static struct drm_mode_config_funcs imx_drm_mode_config_funcs = { | 219 | static 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 */ |
| 253 | int mgag200_framebuffer_init(struct drm_device *dev, | 253 | int 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 | ||
| 140 | static int mgag200fb_create_object(struct mga_fbdev *afbdev, | 140 | static 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 | ||
| 30 | int mgag200_framebuffer_init(struct drm_device *dev, | 30 | int 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, | |||
| 47 | static struct drm_framebuffer * | 47 | static struct drm_framebuffer * |
| 48 | mgag200_user_framebuffer_create(struct drm_device *dev, | 48 | mgag200_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); | |||
| 240 | struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane); | 240 | struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane); |
| 241 | const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb); | 241 | const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb); |
| 242 | struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, | 242 | struct 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); |
| 244 | struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, | 244 | struct 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 | ||
| 247 | struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev); | 247 | struct 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 | ||
| 140 | struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, | 140 | struct 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 | ||
| 170 | struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, | 170 | struct 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 = { | |||
| 246 | int | 246 | int |
| 247 | nouveau_framebuffer_init(struct drm_device *dev, | 247 | nouveau_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, | |||
| 272 | static struct drm_framebuffer * | 272 | static struct drm_framebuffer * |
| 273 | nouveau_user_framebuffer_create(struct drm_device *dev, | 273 | nouveau_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 | ||
| 25 | int nouveau_framebuffer_init(struct drm_device *, struct nouveau_framebuffer *, | 25 | int 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 | ||
| 28 | struct nouveau_page_flip_state { | 28 | struct 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 @@ | |||
| 34 | struct nouveau_fbdev { | 34 | struct 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, | |||
| 172 | uint32_t omap_framebuffer_get_formats(uint32_t *pixel_formats, | 172 | uint32_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); |
| 174 | struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, | 174 | struct 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); |
| 176 | struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, | 176 | struct 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); |
| 178 | struct drm_gem_object *omap_framebuffer_bo(struct drm_framebuffer *fb, int p); | 178 | struct drm_gem_object *omap_framebuffer_bo(struct drm_framebuffer *fb, int p); |
| 179 | int omap_framebuffer_pin(struct drm_framebuffer *fb); | 179 | int omap_framebuffer_pin(struct drm_framebuffer *fb); |
| 180 | void omap_framebuffer_unpin(struct drm_framebuffer *fb); | 180 | void 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 | ||
| 249 | static inline int objects_lookup(struct drm_device *dev, | 249 | static 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 | ||
| 366 | struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, | 366 | struct 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 | ||
| 388 | struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, | 388 | struct 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 = { | |||
| 521 | int | 521 | int |
| 522 | qxl_framebuffer_init(struct drm_device *dev, | 522 | qxl_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) | |||
| 1003 | static struct drm_framebuffer * | 1003 | static struct drm_framebuffer * |
| 1004 | qxl_user_framebuffer_create(struct drm_device *dev, | 1004 | qxl_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); | |||
| 390 | int | 390 | int |
| 391 | qxl_framebuffer_init(struct drm_device *dev, | 391 | qxl_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); |
| 395 | void qxl_display_read_client_monitors_config(struct qxl_device *qdev); | 395 | void qxl_display_read_client_monitors_config(struct qxl_device *qdev); |
| 396 | void qxl_send_monitors_config(struct qxl_device *qdev); | 396 | void 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 @@ | |||
| 40 | struct qxl_fbdev { | 40 | struct 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 | ||
| 285 | static int qxlfb_create_pinned_object(struct qxl_fbdev *qfbdev, | 284 | static 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 = { | |||
| 1292 | int | 1292 | int |
| 1293 | radeon_framebuffer_init(struct drm_device *dev, | 1293 | radeon_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, | |||
| 1309 | static struct drm_framebuffer * | 1309 | static struct drm_framebuffer * |
| 1310 | radeon_user_framebuffer_create(struct drm_device *dev, | 1310 | radeon_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 @@ | |||
| 44 | struct radeon_fbdev { | 44 | struct 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); |
| 930 | int radeon_framebuffer_init(struct drm_device *dev, | 930 | int 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 | ||
| 935 | int radeonfb_remove(struct drm_device *dev, struct drm_framebuffer *fb); | 935 | int 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 | ||
| 137 | static struct drm_framebuffer * | 137 | static struct drm_framebuffer * |
| 138 | rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv, | 138 | rcar_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 | ||
| 74 | static struct rockchip_drm_fb * | 74 | static struct rockchip_drm_fb * |
| 75 | rockchip_fb_alloc(struct drm_device *dev, struct drm_mode_fb_cmd2 *mode_cmd, | 75 | rockchip_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 | ||
| 103 | static struct drm_framebuffer * | 103 | static struct drm_framebuffer * |
| 104 | rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, | 104 | rockchip_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 | ||
| 174 | struct drm_framebuffer * | 174 | struct drm_framebuffer * |
| 175 | rockchip_drm_framebuffer_init(struct drm_device *dev, | 175 | rockchip_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 | ||
| 18 | struct drm_framebuffer * | 18 | struct drm_framebuffer * |
| 19 | rockchip_drm_framebuffer_init(struct drm_device *dev, | 19 | rockchip_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); |
| 22 | void rockchip_drm_framebuffer_fini(struct drm_framebuffer *fb); | 22 | void 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 | ||
| 105 | static struct drm_framebuffer * | 105 | static struct drm_framebuffer * |
| 106 | shmob_drm_fb_create(struct drm_device *dev, struct drm_file *file_priv, | 106 | shmob_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 | ||
| 17 | if DRM_TEGRA | 17 | if DRM_TEGRA |
| 18 | 18 | ||
| 19 | config 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 | |||
| 31 | config DRM_TEGRA_DEBUG | 19 | config 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 | ||
| 107 | static const struct drm_mode_config_funcs tegra_drm_mode_funcs = { | 107 | static 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 | ||
| 261 | static void tegra_drm_lastclose(struct drm_device *drm) | 261 | static 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 |
| 34 | struct tegra_fbdev { | 34 | struct 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); |
| 269 | struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, | 269 | struct 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); |
| 272 | int tegra_drm_fb_prepare(struct drm_device *drm); | 272 | int tegra_drm_fb_prepare(struct drm_device *drm); |
| 273 | void tegra_drm_fb_free(struct drm_device *drm); | 273 | void tegra_drm_fb_free(struct drm_device *drm); |
| 274 | int tegra_drm_fb_init(struct drm_device *drm); | 274 | int tegra_drm_fb_init(struct drm_device *drm); |
| 275 | void tegra_drm_fb_exit(struct drm_device *drm); | 275 | void tegra_drm_fb_exit(struct drm_device *drm); |
| 276 | #ifdef CONFIG_DRM_TEGRA_FBDEV | 276 | #ifdef CONFIG_DRM_FBDEV_EMULATION |
| 277 | void tegra_fbdev_restore_mode(struct tegra_fbdev *fbdev); | 277 | void tegra_fbdev_restore_mode(struct tegra_fbdev *fbdev); |
| 278 | void tegra_fb_output_poll_changed(struct drm_device *drm); | 278 | void 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 |
| 22 | static inline struct tegra_fbdev *to_tegra_fbdev(struct drm_fb_helper *helper) | 22 | static 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 | ||
| 94 | static struct tegra_fb *tegra_fb_alloc(struct drm_device *drm, | 94 | static 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 | ||
| 132 | struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, | 132 | struct 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 |
| 185 | static struct fb_ops tegra_fb_ops = { | 185 | static 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 | ||
| 371 | int tegra_drm_fb_prepare(struct drm_device *drm) | 371 | int 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 | ||
| 384 | void tegra_drm_fb_free(struct drm_device *drm) | 384 | void 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 | ||
| 393 | int tegra_drm_fb_init(struct drm_device *drm) | 393 | int 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 | ||
| 408 | void tegra_drm_fb_exit(struct drm_device *drm) | 408 | void 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) | |||
| 46 | static struct of_device_id tilcdc_of_match[]; | 46 | static struct of_device_id tilcdc_of_match[]; |
| 47 | 47 | ||
| 48 | static struct drm_framebuffer *tilcdc_fb_create(struct drm_device *dev, | 48 | static 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); | |||
| 108 | struct drm_framebuffer * | 108 | struct drm_framebuffer * |
| 109 | udl_fb_user_fb_create(struct drm_device *dev, | 109 | udl_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 | ||
| 113 | int udl_render_hline(struct drm_device *dev, int bpp, struct urb **urb_ptr, | 113 | int 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); | |||
| 33 | struct udl_fbdev { | 33 | struct 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 = { | |||
| 456 | static int | 455 | static int |
| 457 | udl_framebuffer_init(struct drm_device *dev, | 456 | udl_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) | |||
| 624 | struct drm_framebuffer * | 623 | struct drm_framebuffer * |
| 625 | udl_fb_user_fb_create(struct drm_device *dev, | 624 | udl_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 = { | |||
| 215 | int | 215 | int |
| 216 | virtio_gpu_framebuffer_init(struct drm_device *dev, | 216 | virtio_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) | |||
| 465 | static struct drm_framebuffer * | 465 | static struct drm_framebuffer * |
| 466 | virtio_gpu_user_framebuffer_create(struct drm_device *dev, | 466 | virtio_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 */ |
| 329 | int virtio_gpu_framebuffer_init(struct drm_device *dev, | 329 | int 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); |
| 333 | int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev); | 333 | int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev); |
| 334 | void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev); | 334 | void 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 @@ | |||
| 32 | struct virtio_gpu_fbdev { | 32 | struct 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 | ||
| 931 | static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev, | 931 | static 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; |
