return connector->status;
 
        /* for pre-945g platforms use load detect */
-       if (intel_get_load_detect_pipe(&crt->base, connector, NULL,
-                                      &tmp)) {
+       if (intel_get_load_detect_pipe(connector, NULL, &tmp)) {
                if (intel_crt_detect_ddc(connector))
                        status = connector_status_connected;
                else
                        status = intel_crt_load_detect(crt);
-               intel_release_load_detect_pipe(&crt->base, connector,
-                                              &tmp);
+               intel_release_load_detect_pipe(connector, &tmp);
        } else
                status = connector_status_unknown;
 
 
        return fb;
 }
 
-bool intel_get_load_detect_pipe(struct intel_encoder *intel_encoder,
-                               struct drm_connector *connector,
+bool intel_get_load_detect_pipe(struct drm_connector *connector,
                                struct drm_display_mode *mode,
                                struct intel_load_detect_pipe *old)
 {
        struct intel_crtc *intel_crtc;
+       struct intel_encoder *intel_encoder =
+               intel_attached_encoder(connector);
        struct drm_crtc *possible_crtc;
        struct drm_encoder *encoder = &intel_encoder->base;
        struct drm_crtc *crtc = NULL;
        return false;
 }
 
-void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
-                                   struct drm_connector *connector,
+void intel_release_load_detect_pipe(struct drm_connector *connector,
                                    struct intel_load_detect_pipe *old)
 {
+       struct intel_encoder *intel_encoder =
+               intel_attached_encoder(connector);
        struct drm_encoder *encoder = &intel_encoder->base;
        struct drm_device *dev = encoder->dev;
 
 
        bool load_detect_temp;
        int dpms_mode;
 };
-extern bool intel_get_load_detect_pipe(struct intel_encoder *intel_encoder,
-                                      struct drm_connector *connector,
+extern bool intel_get_load_detect_pipe(struct drm_connector *connector,
                                       struct drm_display_mode *mode,
                                       struct intel_load_detect_pipe *old);
-extern void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
-                                          struct drm_connector *connector,
+extern void intel_release_load_detect_pipe(struct drm_connector *connector,
                                           struct intel_load_detect_pipe *old);
 
 extern void intelfb_restore(void);
 
        if (force) {
                struct intel_load_detect_pipe tmp;
 
-               if (intel_get_load_detect_pipe(&intel_tv->base, connector,
-                                              &mode, &tmp)) {
+               if (intel_get_load_detect_pipe(connector, &mode, &tmp)) {
                        type = intel_tv_detect_type(intel_tv, connector);
-                       intel_release_load_detect_pipe(&intel_tv->base,
-                                                      connector,
-                                                      &tmp);
+                       intel_release_load_detect_pipe(connector, &tmp);
                } else
                        return connector_status_unknown;
        } else