gma500: Fix encoder type checking for connectors
authorPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Mon, 19 Dec 2011 21:40:33 +0000 (21:40 +0000)
committerDave Airlie <airlied@redhat.com>
Tue, 20 Dec 2011 10:23:07 +0000 (10:23 +0000)
Fix cases where we need to know what encoder type is behind a given connector.

Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/gma500/framebuffer.c
drivers/gpu/drm/gma500/psb_drv.c
drivers/gpu/drm/gma500/psb_intel_display.c

index 75cfafe2ff8111d35ab88500130f7e5d465577b8..791c0ef1a65b0433ccedf258b59fdf986ddbdcd3 100644 (file)
@@ -747,13 +747,13 @@ static void psb_setup_outputs(struct drm_device *dev)
 
        list_for_each_entry(connector, &dev->mode_config.connector_list,
                            head) {
-               struct psb_intel_output *psb_intel_output =
-                   to_psb_intel_output(connector);
-               struct drm_encoder *encoder = &psb_intel_output->enc;
+               struct psb_intel_encoder *psb_intel_encoder =
+                       psb_intel_attached_encoder(connector);
+               struct drm_encoder *encoder = &psb_intel_encoder->base;
                int crtc_mask = 0, clone_mask = 0;
 
                /* valid crtcs */
-               switch (psb_intel_output->type) {
+               switch (psb_intel_encoder->type) {
                case INTEL_OUTPUT_ANALOG:
                        crtc_mask = (1 << 0);
                        clone_mask = (1 << INTEL_OUTPUT_ANALOG);
index add3156cd8bf3ae2ab5e65eddc845e32d872c245..b4aee0ac2dfd8357c96a83c0a28048523a966a96 100644 (file)
@@ -276,7 +276,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
        int ret = -ENOMEM;
        uint32_t tt_pages;
        struct drm_connector *connector;
-       struct psb_intel_output *psb_intel_output;
+       struct psb_intel_encoder *psb_intel_encoder;
 
        dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
        if (dev_priv == NULL)
@@ -390,9 +390,9 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
        /* Only add backlight support if we have LVDS output */
        list_for_each_entry(connector, &dev->mode_config.connector_list,
                            head) {
-               psb_intel_output = to_psb_intel_output(connector);
+               psb_intel_encoder = psb_intel_attached_encoder(connector);
 
-               switch (psb_intel_output->type) {
+               switch (psb_intel_encoder->type) {
                case INTEL_OUTPUT_LVDS:
                case INTEL_OUTPUT_MIPI:
                        ret = gma_backlight_init(dev);
index b6f6cf5897395d2cb3b89eac02d684254714c88e..ddaf3d428f553f1d244f921e32b4ddd2e88d5c5b 100644 (file)
@@ -214,9 +214,9 @@ bool psb_intel_pipe_has_type(struct drm_crtc *crtc, int type)
 
        list_for_each_entry(l_entry, &mode_config->connector_list, head) {
                if (l_entry->encoder && l_entry->encoder->crtc == crtc) {
-                       struct psb_intel_output *psb_intel_output =
-                           to_psb_intel_output(l_entry);
-                       if (psb_intel_output->type == type)
+                       struct psb_intel_encoder *psb_intel_encoder =
+                                       psb_intel_attached_encoder(l_entry);
+                       if (psb_intel_encoder->type == type)
                                return true;
                }
        }
@@ -615,14 +615,14 @@ static int psb_intel_crtc_mode_set(struct drm_crtc *crtc,
        }
 
        list_for_each_entry(connector, &mode_config->connector_list, head) {
-               struct psb_intel_output *psb_intel_output =
-                   to_psb_intel_output(connector);
+               struct psb_intel_encoder *psb_intel_encoder =
+                                       psb_intel_attached_encoder(connector);
 
                if (!connector->encoder
                    || connector->encoder->crtc != crtc)
                        continue;
 
-               switch (psb_intel_output->type) {
+               switch (psb_intel_encoder->type) {
                case INTEL_OUTPUT_LVDS:
                        is_lvds = true;
                        break;
@@ -1402,9 +1402,9 @@ int psb_intel_connector_clones(struct drm_device *dev, int type_mask)
 
        list_for_each_entry(connector, &dev->mode_config.connector_list,
                            head) {
-               struct psb_intel_output *psb_intel_output =
-                   to_psb_intel_output(connector);
-               if (type_mask & (1 << psb_intel_output->type))
+               struct psb_intel_encoder *psb_intel_encoder =
+                                       psb_intel_attached_encoder(connector);
+               if (type_mask & (1 << psb_intel_encoder->type))
                        index_mask |= (1 << entry);
                entry++;
        }
@@ -1423,10 +1423,10 @@ void psb_intel_modeset_cleanup(struct drm_device *dev)
 */
 struct drm_encoder *psb_intel_best_encoder(struct drm_connector *connector)
 {
-       struct psb_intel_output *psb_intel_output =
-                                       to_psb_intel_output(connector);
+       struct psb_intel_encoder *psb_intel_encoder =
+                                       psb_intel_attached_encoder(connector);
 
-       return &psb_intel_output->enc;
+       return &psb_intel_encoder->base;
 }
 
 void psb_intel_connector_attach_encoder(struct psb_intel_connector *connector,