OSDN Git Service

drm/sun4i: rgb: Store the bridge pointer
authorMaxime Ripard <maxime.ripard@bootlin.com>
Tue, 26 Feb 2019 14:25:47 +0000 (15:25 +0100)
committerMaxime Ripard <maxime.ripard@bootlin.com>
Thu, 7 Mar 2019 13:46:39 +0000 (14:46 +0100)
We'll need the bridge pointer, if any, in the mode_valid callback in
addition to the init function. Store the pointer to the bridge in the
rgb private structure.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Tested-by: Vasily Khoruzhick <anarsoul@gmail.com> # tested on pinebook
Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/2f16d70fb09613b3a030fd6a016343047d519d43.1551191081.git-series.maxime.ripard@bootlin.com
drivers/gpu/drm/sun4i/sun4i_rgb.c

index 8db0ebe..fb32cce 100644 (file)
@@ -28,6 +28,7 @@ struct sun4i_rgb {
 
        struct sun4i_tcon       *tcon;
        struct drm_panel        *panel;
+       struct drm_bridge       *bridge;
 };
 
 static inline struct sun4i_rgb *
@@ -169,7 +170,6 @@ static struct drm_encoder_funcs sun4i_rgb_enc_funcs = {
 int sun4i_rgb_init(struct drm_device *drm, struct sun4i_tcon *tcon)
 {
        struct drm_encoder *encoder;
-       struct drm_bridge *bridge;
        struct sun4i_rgb *rgb;
        int ret;
 
@@ -180,7 +180,7 @@ int sun4i_rgb_init(struct drm_device *drm, struct sun4i_tcon *tcon)
        encoder = &rgb->encoder;
 
        ret = drm_of_find_panel_or_bridge(tcon->dev->of_node, 1, 0,
-                                         &rgb->panel, &bridge);
+                                         &rgb->panel, &rgb->bridge);
        if (ret) {
                dev_info(drm->dev, "No panel or bridge found... RGB output disabled\n");
                return 0;
@@ -222,8 +222,8 @@ int sun4i_rgb_init(struct drm_device *drm, struct sun4i_tcon *tcon)
                }
        }
 
-       if (bridge) {
-               ret = drm_bridge_attach(encoder, bridge, NULL);
+       if (rgb->bridge) {
+               ret = drm_bridge_attach(encoder, rgb->bridge, NULL);
                if (ret) {
                        dev_err(drm->dev, "Couldn't attach our bridge\n");
                        goto err_cleanup_connector;