struct psb_intel_i2c_chan *psb_intel_i2c_create(struct drm_device *dev,
                                        const u32 reg, const char *name);
 void psb_intel_i2c_destroy(struct psb_intel_i2c_chan *chan);
-int psb_intel_ddc_get_modes(struct psb_intel_output *psb_intel_output);
-extern bool psb_intel_ddc_probe(struct psb_intel_output *psb_intel_output);
+int psb_intel_ddc_get_modes(struct drm_connector *connector,
+                           struct i2c_adapter *adapter);
+extern bool psb_intel_ddc_probe(struct i2c_adapter *adapter);
 
 extern void psb_intel_crtc_init(struct drm_device *dev, int pipe,
                            struct psb_intel_mode_device *mode_dev);
 
  * psb_intel_ddc_probe
  *
  */
-bool psb_intel_ddc_probe(struct psb_intel_output *psb_intel_output)
+bool psb_intel_ddc_probe(struct i2c_adapter *adapter)
 {
        u8 out_buf[] = { 0x0, 0x0 };
        u8 buf[2];
                 }
        };
 
-       ret = i2c_transfer(&psb_intel_output->ddc_bus->adapter, msgs, 2);
+       ret = i2c_transfer(adapter, msgs, 2);
        if (ret == 2)
                return true;
 
  *
  * Fetch the EDID information from @connector using the DDC bus.
  */
-int psb_intel_ddc_get_modes(struct psb_intel_output *psb_intel_output)
+int psb_intel_ddc_get_modes(struct drm_connector *connector,
+                           struct i2c_adapter *adapter)
 {
        struct edid *edid;
        int ret = 0;
 
-       edid =
-           drm_get_edid(&psb_intel_output->base,
-                        &psb_intel_output->ddc_bus->adapter);
+       edid = drm_get_edid(connector, adapter);
        if (edid) {
-               drm_mode_connector_update_edid_property(&psb_intel_output->
-                                                       base, edid);
-               ret = drm_add_edid_modes(&psb_intel_output->base, edid);
+               drm_mode_connector_update_edid_property(connector, edid);
+               ret = drm_add_edid_modes(connector, edid);
                kfree(edid);
        }
        return ret;