diff options
| author | Jyri Sarha <jsarha@ti.com> | 2016-01-16 15:17:54 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2016-03-07 20:10:03 -0500 |
| commit | dad82ea3ef4b9dc97ca5ec718abc6b0986f1aaaf (patch) | |
| tree | a6946172d253ef397b8cb162b794a08d6e4f3bc9 | |
| parent | d17e67de6e81394624685f16f174453bd561d48b (diff) | |
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>
| -rw-r--r-- | drivers/gpu/drm/i2c/tda998x_drv.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c index 34e38749a817..f8ee740c0e26 100644 --- a/drivers/gpu/drm/i2c/tda998x_drv.c +++ b/drivers/gpu/drm/i2c/tda998x_drv.c | |||
| @@ -1382,8 +1382,16 @@ static void tda998x_connector_destroy(struct drm_connector *connector) | |||
| 1382 | drm_connector_cleanup(connector); | 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 | static const struct drm_connector_funcs tda998x_connector_funcs = { | 1393 | static const struct drm_connector_funcs tda998x_connector_funcs = { |
| 1386 | .dpms = drm_atomic_helper_connector_dpms, | 1394 | .dpms = tda998x_connector_dpms, |
| 1387 | .reset = drm_atomic_helper_connector_reset, | 1395 | .reset = drm_atomic_helper_connector_reset, |
| 1388 | .fill_modes = drm_helper_probe_single_connector_modes, | 1396 | .fill_modes = drm_helper_probe_single_connector_modes, |
| 1389 | .detect = tda998x_connector_detect, | 1397 | .detect = tda998x_connector_detect, |
