Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drm-misc-fixes-2020-12-03' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes

One bridge fix for OMAP, one for a race condition in a panel, two for
uninitialized variables in rockchip and nouveau, and two fixes for mxsfb
to fix a regression with modifiers and a fix for a fence synchronization
issue.

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20201203125943.h2ft2xoywunt5orl@gilmour

+18 -9
+11
drivers/gpu/drm/mxsfb/mxsfb_kms.c
··· 22 22 #include <drm/drm_fb_cma_helper.h> 23 23 #include <drm/drm_fourcc.h> 24 24 #include <drm/drm_gem_cma_helper.h> 25 + #include <drm/drm_gem_framebuffer_helper.h> 25 26 #include <drm/drm_plane.h> 26 27 #include <drm/drm_plane_helper.h> 27 28 #include <drm/drm_vblank.h> ··· 485 484 writel(ctrl, mxsfb->base + LCDC_AS_CTRL); 486 485 } 487 486 487 + static bool mxsfb_format_mod_supported(struct drm_plane *plane, 488 + uint32_t format, 489 + uint64_t modifier) 490 + { 491 + return modifier == DRM_FORMAT_MOD_LINEAR; 492 + } 493 + 488 494 static const struct drm_plane_helper_funcs mxsfb_plane_primary_helper_funcs = { 495 + .prepare_fb = drm_gem_fb_prepare_fb, 489 496 .atomic_check = mxsfb_plane_atomic_check, 490 497 .atomic_update = mxsfb_plane_primary_atomic_update, 491 498 }; 492 499 493 500 static const struct drm_plane_helper_funcs mxsfb_plane_overlay_helper_funcs = { 501 + .prepare_fb = drm_gem_fb_prepare_fb, 494 502 .atomic_check = mxsfb_plane_atomic_check, 495 503 .atomic_update = mxsfb_plane_overlay_atomic_update, 496 504 }; 497 505 498 506 static const struct drm_plane_funcs mxsfb_plane_funcs = { 507 + .format_mod_supported = mxsfb_format_mod_supported, 499 508 .update_plane = drm_atomic_helper_update_plane, 500 509 .disable_plane = drm_atomic_helper_disable_plane, 501 510 .destroy = drm_plane_cleanup,
+1 -1
drivers/gpu/drm/nouveau/nouveau_bo.c
··· 1214 1214 } 1215 1215 1216 1216 reg->bus.offset = handle; 1217 - ret = 0; 1218 1217 } 1218 + ret = 0; 1219 1219 break; 1220 1220 default: 1221 1221 ret = -EINVAL;
+4 -6
drivers/gpu/drm/omapdrm/dss/sdi.c
··· 195 195 sdi->pixelclock = adjusted_mode->clock * 1000; 196 196 } 197 197 198 - static void sdi_bridge_enable(struct drm_bridge *bridge, 199 - struct drm_bridge_state *bridge_state) 198 + static void sdi_bridge_enable(struct drm_bridge *bridge) 200 199 { 201 200 struct sdi_device *sdi = drm_bridge_to_sdi(bridge); 202 201 struct dispc_clock_info dispc_cinfo; ··· 258 259 regulator_disable(sdi->vdds_sdi_reg); 259 260 } 260 261 261 - static void sdi_bridge_disable(struct drm_bridge *bridge, 262 - struct drm_bridge_state *bridge_state) 262 + static void sdi_bridge_disable(struct drm_bridge *bridge) 263 263 { 264 264 struct sdi_device *sdi = drm_bridge_to_sdi(bridge); 265 265 ··· 276 278 .mode_valid = sdi_bridge_mode_valid, 277 279 .mode_fixup = sdi_bridge_mode_fixup, 278 280 .mode_set = sdi_bridge_mode_set, 279 - .atomic_enable = sdi_bridge_enable, 280 - .atomic_disable = sdi_bridge_disable, 281 + .enable = sdi_bridge_enable, 282 + .disable = sdi_bridge_disable, 281 283 }; 282 284 283 285 static void sdi_bridge_init(struct sdi_device *sdi)
+1 -1
drivers/gpu/drm/panel/panel-sony-acx565akm.c
··· 629 629 lcd->spi = spi; 630 630 mutex_init(&lcd->mutex); 631 631 632 - lcd->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_LOW); 632 + lcd->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_HIGH); 633 633 if (IS_ERR(lcd->reset_gpio)) { 634 634 dev_err(&spi->dev, "failed to get reset GPIO\n"); 635 635 return PTR_ERR(lcd->reset_gpio);
+1 -1
drivers/gpu/drm/rockchip/rockchip_lvds.c
··· 544 544 struct device_node *port, *endpoint; 545 545 int ret = 0, child_count = 0; 546 546 const char *name; 547 - u32 endpoint_id; 547 + u32 endpoint_id = 0; 548 548 549 549 lvds->drm_dev = drm_dev; 550 550 port = of_graph_get_port_by_id(dev->of_node, 1);