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

drm/i2c: tda998x: Choose between atomic or non atomic dpms helper

Choose between atomic or non atomic connector dpms helper. If tda998x
is connected to a drm driver that does not support atomic modeset
calling drm_atomic_helper_connector_dpms() causes a crash when the
connectors atomic state is not initialized. The patch implements a
driver specific connector dpms helper that calls
drm_atomic_helper_connector_dpms() if driver supports DRIVER_ATOMIC
and otherwise it calls the legacy drm_helper_connector_dpms().

Fixes commit 9736e988d328 ("drm/i2c: tda998x: Add support for atomic
modesetting").

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>

authored by

Jyri Sarha and committed by
Dave Airlie
dad82ea3 d17e67de

+9 -1
+9 -1
drivers/gpu/drm/i2c/tda998x_drv.c
··· 1382 1382 drm_connector_cleanup(connector); 1383 1383 } 1384 1384 1385 + static int tda998x_connector_dpms(struct drm_connector *connector, int mode) 1386 + { 1387 + if (drm_core_check_feature(connector->dev, DRIVER_ATOMIC)) 1388 + return drm_atomic_helper_connector_dpms(connector, mode); 1389 + else 1390 + return drm_helper_connector_dpms(connector, mode); 1391 + } 1392 + 1385 1393 static const struct drm_connector_funcs tda998x_connector_funcs = { 1386 - .dpms = drm_atomic_helper_connector_dpms, 1394 + .dpms = tda998x_connector_dpms, 1387 1395 .reset = drm_atomic_helper_connector_reset, 1388 1396 .fill_modes = drm_helper_probe_single_connector_modes, 1389 1397 .detect = tda998x_connector_detect,