Hi, Based on discussion around this patch: https://lists.freedesktop.org/archives/dri-devel/2016-February/100685.html
I think the patch below should get into queued for v4.5 fixes as the Beaglebone-Black display is currently broken in linux-master and probably Armada is broken too. What should I do to get it there? Best regards, Jyri On 01/16/16 22:17, Jyri Sarha wrote: > 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 at ti.com> > --- > > Ok, so this is the second approach to solve this issue. The first > attempt can be found here [1] with the follow from Liviu Dudau that > suggested this approach. > > It just makes me wonder if drm_atomic_helper_connector_dpms() should > call the legacy callback automatically if DRIVER_ATOMIC is not set or > at least bail out gracefully with an error message. Then again it may > be overkill if the tda998x is the only driver that need to support > both situations. > > Best regards, > Jyri > > [1] http://www.spinics.net/lists/dri-devel/msg98514.html > > drivers/gpu/drm/i2c/tda998x_drv.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c > b/drivers/gpu/drm/i2c/tda998x_drv.c > index 012d36d..bb7d507 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) > drm_connector_cleanup(connector); > } > > +static int tda998x_connector_dpms(struct drm_connector *connector, int mode) > +{ > + if (drm_core_check_feature(connector->dev, DRIVER_ATOMIC)) > + return drm_atomic_helper_connector_dpms(connector, mode); > + else > + return drm_helper_connector_dpms(connector, mode); > +} > + > static const struct drm_connector_funcs tda998x_connector_funcs = { > - .dpms = drm_atomic_helper_connector_dpms, > + .dpms = tda998x_connector_dpms, > .reset = drm_atomic_helper_connector_reset, > .fill_modes = drm_helper_probe_single_connector_modes, > .detect = tda998x_connector_detect, >