]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge tag 'sunxi-drm-fixes-for-4.9' of https://git.kernel.org/pub/scm/linux/kernel...
authorDave Airlie <airlied@redhat.com>
Tue, 15 Nov 2016 23:41:08 +0000 (09:41 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 15 Nov 2016 23:41:08 +0000 (09:41 +1000)
sun4i-drm fixes for 4.9

A few patches to fix our error handling and our panel / bridge calls.

* tag 'sunxi-drm-fixes-for-4.9' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux:
  drm/sun4i: Propagate error to the caller
  drm/sun4i: Fix error handling
  drm/sun4i: rgb: Remove the bridge enable/disable functions
  drm/sun4i: rgb: Enable panel after controller

drivers/gpu/drm/sun4i/sun4i_drv.c
drivers/gpu/drm/sun4i/sun4i_rgb.c

index 0da9862ad8ed928e23a6a1e089551967ad5273e8..70e9fd59c5a24650f7e89f2db5d1a780cc2683d9 100644 (file)
@@ -142,9 +142,9 @@ static int sun4i_drv_bind(struct device *dev)
 
        /* Create our layers */
        drv->layers = sun4i_layers_init(drm);
-       if (!drv->layers) {
+       if (IS_ERR(drv->layers)) {
                dev_err(drm->dev, "Couldn't create the planes\n");
-               ret = -EINVAL;
+               ret = PTR_ERR(drv->layers);
                goto free_drm;
        }
 
index c3ff10f559cc4811755f764d6ebbfd999a8ee7e9..d198ad7e53234794b0e78933ff395b38b90cfd59 100644 (file)
@@ -152,15 +152,13 @@ static void sun4i_rgb_encoder_enable(struct drm_encoder *encoder)
 
        DRM_DEBUG_DRIVER("Enabling RGB output\n");
 
-       if (!IS_ERR(tcon->panel)) {
+       if (!IS_ERR(tcon->panel))
                drm_panel_prepare(tcon->panel);
-               drm_panel_enable(tcon->panel);
-       }
-
-       /* encoder->bridge can be NULL; drm_bridge_enable checks for it */
-       drm_bridge_enable(encoder->bridge);
 
        sun4i_tcon_channel_enable(tcon, 0);
+
+       if (!IS_ERR(tcon->panel))
+               drm_panel_enable(tcon->panel);
 }
 
 static void sun4i_rgb_encoder_disable(struct drm_encoder *encoder)
@@ -171,15 +169,13 @@ static void sun4i_rgb_encoder_disable(struct drm_encoder *encoder)
 
        DRM_DEBUG_DRIVER("Disabling RGB output\n");
 
-       sun4i_tcon_channel_disable(tcon, 0);
+       if (!IS_ERR(tcon->panel))
+               drm_panel_disable(tcon->panel);
 
-       /* encoder->bridge can be NULL; drm_bridge_disable checks for it */
-       drm_bridge_disable(encoder->bridge);
+       sun4i_tcon_channel_disable(tcon, 0);
 
-       if (!IS_ERR(tcon->panel)) {
-               drm_panel_disable(tcon->panel);
+       if (!IS_ERR(tcon->panel))
                drm_panel_unprepare(tcon->panel);
-       }
 }
 
 static void sun4i_rgb_encoder_mode_set(struct drm_encoder *encoder,