drm/radeon/kms: simplify hotplug handler logic
[pandora-kernel.git] / drivers / gpu / drm / radeon / radeon_connectors.c
index ac3165a..5947871 100644 (file)
@@ -50,20 +50,15 @@ void radeon_connector_hotplug(struct drm_connector *connector)
        struct radeon_device *rdev = dev->dev_private;
        struct radeon_connector *radeon_connector = to_radeon_connector(connector);
 
-       if (radeon_connector->hpd.hpd != RADEON_HPD_NONE)
-               radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
-
-       if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) ||
-           (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
-               if ((radeon_dp_getsinktype(radeon_connector) == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
-                   (radeon_dp_getsinktype(radeon_connector) == CONNECTOR_OBJECT_ID_eDP)) {
-                       if (radeon_dp_needs_link_train(radeon_connector)) {
-                               if (connector->encoder)
-                                       dp_link_train(connector->encoder, connector);
-                       }
-               }
-       }
+       radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
 
+       /* pre-r600 did not always have the hpd pins mapped accurately to connectors */
+       if (rdev->family >= CHIP_R600) {
+               if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
+                       drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
+               else
+                       drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
+       }
 }
 
 static void radeon_property_change_mode(struct drm_encoder *encoder)
@@ -1195,7 +1190,7 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
 
        if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
            (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP))
-               return radeon_dp_mode_valid_helper(radeon_connector, mode);
+               return radeon_dp_mode_valid_helper(connector, mode);
        else
                return MODE_OK;
 }
@@ -1230,8 +1225,11 @@ radeon_add_atom_connector(struct drm_device *dev,
        struct drm_connector *connector;
        struct radeon_connector *radeon_connector;
        struct radeon_connector_atom_dig *radeon_dig_connector;
+       struct drm_encoder *encoder;
+       struct radeon_encoder *radeon_encoder;
        uint32_t subpixel_order = SubPixelNone;
        bool shared_ddc = false;
+       bool is_dp_bridge = false;
 
        if (connector_type == DRM_MODE_CONNECTOR_Unknown)
                return;
@@ -1263,6 +1261,21 @@ radeon_add_atom_connector(struct drm_device *dev,
                }
        }
 
+       /* check if it's a dp bridge */
+       list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
+               radeon_encoder = to_radeon_encoder(encoder);
+               if (radeon_encoder->devices & supported_device) {
+                       switch (radeon_encoder->encoder_id) {
+                       case ENCODER_OBJECT_ID_TRAVIS:
+                       case ENCODER_OBJECT_ID_NUTMEG:
+                               is_dp_bridge = true;
+                               break;
+                       default:
+                               break;
+                       }
+               }
+       }
+
        radeon_connector = kzalloc(sizeof(struct radeon_connector), GFP_KERNEL);
        if (!radeon_connector)
                return;
@@ -1280,61 +1293,39 @@ radeon_add_atom_connector(struct drm_device *dev,
                if (!radeon_connector->router_bus)
                        DRM_ERROR("Failed to assign router i2c bus! Check dmesg for i2c errors.\n");
        }
-       switch (connector_type) {
-       case DRM_MODE_CONNECTOR_VGA:
-               drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
-               drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
-               if (i2c_bus->valid) {
-                       radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-                       if (!radeon_connector->ddc_bus)
-                               DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
-               }
-               radeon_connector->dac_load_detect = true;
-               drm_connector_attach_property(&radeon_connector->base,
-                                             rdev->mode_info.load_detect_property,
-                                             1);
-               /* no HPD on analog connectors */
-               radeon_connector->hpd.hpd = RADEON_HPD_NONE;
-               connector->polled = DRM_CONNECTOR_POLL_CONNECT;
-               connector->interlace_allowed = true;
-               connector->doublescan_allowed = true;
-               break;
-       case DRM_MODE_CONNECTOR_DVIA:
-               drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
-               drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
-               if (i2c_bus->valid) {
-                       radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-                       if (!radeon_connector->ddc_bus)
-                               DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
-               }
-               radeon_connector->dac_load_detect = true;
-               drm_connector_attach_property(&radeon_connector->base,
-                                             rdev->mode_info.load_detect_property,
-                                             1);
-               /* no HPD on analog connectors */
-               radeon_connector->hpd.hpd = RADEON_HPD_NONE;
-               connector->interlace_allowed = true;
-               connector->doublescan_allowed = true;
-               break;
-       case DRM_MODE_CONNECTOR_DVII:
-       case DRM_MODE_CONNECTOR_DVID:
+
+       if (is_dp_bridge) {
                radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
                if (!radeon_dig_connector)
                        goto failed;
                radeon_dig_connector->igp_lane_info = igp_lane_info;
                radeon_connector->con_priv = radeon_dig_connector;
-               drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
-               drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
+               drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type);
+               drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
                if (i2c_bus->valid) {
+                       /* add DP i2c bus */
+                       if (connector_type == DRM_MODE_CONNECTOR_eDP)
+                               radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "eDP-auxch");
+                       else
+                               radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch");
+                       if (!radeon_dig_connector->dp_i2c_bus)
+                               DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n");
                        radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
                        if (!radeon_connector->ddc_bus)
-                               DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                               DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
                }
-               subpixel_order = SubPixelHorizontalRGB;
-               drm_connector_attach_property(&radeon_connector->base,
-                                             rdev->mode_info.coherent_mode_property,
-                                             1);
-               if (ASIC_IS_AVIVO(rdev)) {
+               switch (connector_type) {
+               case DRM_MODE_CONNECTOR_VGA:
+               case DRM_MODE_CONNECTOR_DVIA:
+               default:
+                       connector->interlace_allowed = true;
+                       connector->doublescan_allowed = true;
+                       break;
+               case DRM_MODE_CONNECTOR_DVII:
+               case DRM_MODE_CONNECTOR_DVID:
+               case DRM_MODE_CONNECTOR_HDMIA:
+               case DRM_MODE_CONNECTOR_HDMIB:
+               case DRM_MODE_CONNECTOR_DisplayPort:
                        drm_connector_attach_property(&radeon_connector->base,
                                                      rdev->mode_info.underscan_property,
                                                      UNDERSCAN_OFF);
@@ -1344,151 +1335,234 @@ radeon_add_atom_connector(struct drm_device *dev,
                        drm_connector_attach_property(&radeon_connector->base,
                                                      rdev->mode_info.underscan_vborder_property,
                                                      0);
+                       subpixel_order = SubPixelHorizontalRGB;
+                       connector->interlace_allowed = true;
+                       if (connector_type == DRM_MODE_CONNECTOR_HDMIB)
+                               connector->doublescan_allowed = true;
+                       else
+                               connector->doublescan_allowed = false;
+                       break;
+               case DRM_MODE_CONNECTOR_LVDS:
+               case DRM_MODE_CONNECTOR_eDP:
+                       drm_connector_attach_property(&radeon_connector->base,
+                                                     dev->mode_config.scaling_mode_property,
+                                                     DRM_MODE_SCALE_FULLSCREEN);
+                       subpixel_order = SubPixelHorizontalRGB;
+                       connector->interlace_allowed = false;
+                       connector->doublescan_allowed = false;
+                       break;
                }
-               if (connector_type == DRM_MODE_CONNECTOR_DVII) {
+       } else {
+               switch (connector_type) {
+               case DRM_MODE_CONNECTOR_VGA:
+                       drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
+                       drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
+                       if (i2c_bus->valid) {
+                               radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
+                               if (!radeon_connector->ddc_bus)
+                                       DRM_ERROR("VGA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                       }
                        radeon_connector->dac_load_detect = true;
                        drm_connector_attach_property(&radeon_connector->base,
                                                      rdev->mode_info.load_detect_property,
                                                      1);
-               }
-               connector->interlace_allowed = true;
-               if (connector_type == DRM_MODE_CONNECTOR_DVII)
+                       /* no HPD on analog connectors */
+                       radeon_connector->hpd.hpd = RADEON_HPD_NONE;
+                       connector->polled = DRM_CONNECTOR_POLL_CONNECT;
+                       connector->interlace_allowed = true;
                        connector->doublescan_allowed = true;
-               else
-                       connector->doublescan_allowed = false;
-               break;
-       case DRM_MODE_CONNECTOR_HDMIA:
-       case DRM_MODE_CONNECTOR_HDMIB:
-               radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
-               if (!radeon_dig_connector)
-                       goto failed;
-               radeon_dig_connector->igp_lane_info = igp_lane_info;
-               radeon_connector->con_priv = radeon_dig_connector;
-               drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
-               drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
-               if (i2c_bus->valid) {
-                       radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-                       if (!radeon_connector->ddc_bus)
-                               DRM_ERROR("HDMI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
-               }
-               drm_connector_attach_property(&radeon_connector->base,
-                                             rdev->mode_info.coherent_mode_property,
-                                             1);
-               if (ASIC_IS_AVIVO(rdev)) {
+                       break;
+               case DRM_MODE_CONNECTOR_DVIA:
+                       drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
+                       drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
+                       if (i2c_bus->valid) {
+                               radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
+                               if (!radeon_connector->ddc_bus)
+                                       DRM_ERROR("DVIA: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                       }
+                       radeon_connector->dac_load_detect = true;
                        drm_connector_attach_property(&radeon_connector->base,
-                                                     rdev->mode_info.underscan_property,
-                                                     UNDERSCAN_OFF);
+                                                     rdev->mode_info.load_detect_property,
+                                                     1);
+                       /* no HPD on analog connectors */
+                       radeon_connector->hpd.hpd = RADEON_HPD_NONE;
+                       connector->interlace_allowed = true;
+                       connector->doublescan_allowed = true;
+                       break;
+               case DRM_MODE_CONNECTOR_DVII:
+               case DRM_MODE_CONNECTOR_DVID:
+                       radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
+                       if (!radeon_dig_connector)
+                               goto failed;
+                       radeon_dig_connector->igp_lane_info = igp_lane_info;
+                       radeon_connector->con_priv = radeon_dig_connector;
+                       drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
+                       drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
+                       if (i2c_bus->valid) {
+                               radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
+                               if (!radeon_connector->ddc_bus)
+                                       DRM_ERROR("DVI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                       }
+                       subpixel_order = SubPixelHorizontalRGB;
                        drm_connector_attach_property(&radeon_connector->base,
-                                                     rdev->mode_info.underscan_hborder_property,
-                                                     0);
+                                                     rdev->mode_info.coherent_mode_property,
+                                                     1);
+                       if (ASIC_IS_AVIVO(rdev)) {
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_property,
+                                                             UNDERSCAN_OFF);
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_hborder_property,
+                                                             0);
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_vborder_property,
+                                                             0);
+                       }
+                       if (connector_type == DRM_MODE_CONNECTOR_DVII) {
+                               radeon_connector->dac_load_detect = true;
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.load_detect_property,
+                                                             1);
+                       }
+                       connector->interlace_allowed = true;
+                       if (connector_type == DRM_MODE_CONNECTOR_DVII)
+                               connector->doublescan_allowed = true;
+                       else
+                               connector->doublescan_allowed = false;
+                       break;
+               case DRM_MODE_CONNECTOR_HDMIA:
+               case DRM_MODE_CONNECTOR_HDMIB:
+                       radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
+                       if (!radeon_dig_connector)
+                               goto failed;
+                       radeon_dig_connector->igp_lane_info = igp_lane_info;
+                       radeon_connector->con_priv = radeon_dig_connector;
+                       drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type);
+                       drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
+                       if (i2c_bus->valid) {
+                               radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
+                               if (!radeon_connector->ddc_bus)
+                                       DRM_ERROR("HDMI: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                       }
                        drm_connector_attach_property(&radeon_connector->base,
-                                                     rdev->mode_info.underscan_vborder_property,
-                                                     0);
-               }
-               subpixel_order = SubPixelHorizontalRGB;
-               connector->interlace_allowed = true;
-               if (connector_type == DRM_MODE_CONNECTOR_HDMIB)
-                       connector->doublescan_allowed = true;
-               else
+                                                     rdev->mode_info.coherent_mode_property,
+                                                     1);
+                       if (ASIC_IS_AVIVO(rdev)) {
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_property,
+                                                             UNDERSCAN_OFF);
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_hborder_property,
+                                                             0);
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_vborder_property,
+                                                             0);
+                       }
+                       subpixel_order = SubPixelHorizontalRGB;
+                       connector->interlace_allowed = true;
+                       if (connector_type == DRM_MODE_CONNECTOR_HDMIB)
+                               connector->doublescan_allowed = true;
+                       else
+                               connector->doublescan_allowed = false;
+                       break;
+               case DRM_MODE_CONNECTOR_DisplayPort:
+                       radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
+                       if (!radeon_dig_connector)
+                               goto failed;
+                       radeon_dig_connector->igp_lane_info = igp_lane_info;
+                       radeon_connector->con_priv = radeon_dig_connector;
+                       drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type);
+                       drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
+                       if (i2c_bus->valid) {
+                               /* add DP i2c bus */
+                               radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch");
+                               if (!radeon_dig_connector->dp_i2c_bus)
+                                       DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n");
+                               radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
+                               if (!radeon_connector->ddc_bus)
+                                       DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                       }
+                       subpixel_order = SubPixelHorizontalRGB;
+                       drm_connector_attach_property(&radeon_connector->base,
+                                                     rdev->mode_info.coherent_mode_property,
+                                                     1);
+                       if (ASIC_IS_AVIVO(rdev)) {
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_property,
+                                                             UNDERSCAN_OFF);
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_hborder_property,
+                                                             0);
+                               drm_connector_attach_property(&radeon_connector->base,
+                                                             rdev->mode_info.underscan_vborder_property,
+                                                             0);
+                       }
+                       connector->interlace_allowed = true;
+                       /* in theory with a DP to VGA converter... */
                        connector->doublescan_allowed = false;
-               break;
-       case DRM_MODE_CONNECTOR_DisplayPort:
-               radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
-               if (!radeon_dig_connector)
-                       goto failed;
-               radeon_dig_connector->igp_lane_info = igp_lane_info;
-               radeon_connector->con_priv = radeon_dig_connector;
-               drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type);
-               drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
-               if (i2c_bus->valid) {
-                       /* add DP i2c bus */
-                       radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch");
-                       if (!radeon_dig_connector->dp_i2c_bus)
-                               DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n");
-                       radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-                       if (!radeon_connector->ddc_bus)
-                               DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
-               }
-               subpixel_order = SubPixelHorizontalRGB;
-               drm_connector_attach_property(&radeon_connector->base,
-                                             rdev->mode_info.coherent_mode_property,
-                                             1);
-               if (ASIC_IS_AVIVO(rdev)) {
+                       break;
+               case DRM_MODE_CONNECTOR_eDP:
+                       radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
+                       if (!radeon_dig_connector)
+                               goto failed;
+                       radeon_dig_connector->igp_lane_info = igp_lane_info;
+                       radeon_connector->con_priv = radeon_dig_connector;
+                       drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type);
+                       drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
+                       if (i2c_bus->valid) {
+                               /* add DP i2c bus */
+                               radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "eDP-auxch");
+                               if (!radeon_dig_connector->dp_i2c_bus)
+                                       DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n");
+                               radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
+                               if (!radeon_connector->ddc_bus)
+                                       DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                       }
                        drm_connector_attach_property(&radeon_connector->base,
-                                                     rdev->mode_info.underscan_property,
-                                                     UNDERSCAN_OFF);
+                                                     dev->mode_config.scaling_mode_property,
+                                                     DRM_MODE_SCALE_FULLSCREEN);
+                       subpixel_order = SubPixelHorizontalRGB;
+                       connector->interlace_allowed = false;
+                       connector->doublescan_allowed = false;
+                       break;
+               case DRM_MODE_CONNECTOR_SVIDEO:
+               case DRM_MODE_CONNECTOR_Composite:
+               case DRM_MODE_CONNECTOR_9PinDIN:
+                       drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type);
+                       drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
+                       radeon_connector->dac_load_detect = true;
                        drm_connector_attach_property(&radeon_connector->base,
-                                                     rdev->mode_info.underscan_hborder_property,
-                                                     0);
+                                                     rdev->mode_info.load_detect_property,
+                                                     1);
                        drm_connector_attach_property(&radeon_connector->base,
-                                                     rdev->mode_info.underscan_vborder_property,
-                                                     0);
-               }
-               connector->interlace_allowed = true;
-               /* in theory with a DP to VGA converter... */
-               connector->doublescan_allowed = false;
-               break;
-       case DRM_MODE_CONNECTOR_eDP:
-               radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
-               if (!radeon_dig_connector)
-                       goto failed;
-               radeon_dig_connector->igp_lane_info = igp_lane_info;
-               radeon_connector->con_priv = radeon_dig_connector;
-               drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type);
-               drm_connector_helper_add(&radeon_connector->base, &radeon_dp_connector_helper_funcs);
-               if (i2c_bus->valid) {
-                       /* add DP i2c bus */
-                       radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "eDP-auxch");
-                       if (!radeon_dig_connector->dp_i2c_bus)
-                               DRM_ERROR("DP: Failed to assign dp ddc bus! Check dmesg for i2c errors.\n");
-                       radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-                       if (!radeon_connector->ddc_bus)
-                               DRM_ERROR("DP: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
-               }
-               drm_connector_attach_property(&radeon_connector->base,
-                                             dev->mode_config.scaling_mode_property,
-                                             DRM_MODE_SCALE_FULLSCREEN);
-               subpixel_order = SubPixelHorizontalRGB;
-               connector->interlace_allowed = false;
-               connector->doublescan_allowed = false;
-               break;
-       case DRM_MODE_CONNECTOR_SVIDEO:
-       case DRM_MODE_CONNECTOR_Composite:
-       case DRM_MODE_CONNECTOR_9PinDIN:
-               drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type);
-               drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
-               radeon_connector->dac_load_detect = true;
-               drm_connector_attach_property(&radeon_connector->base,
-                                             rdev->mode_info.load_detect_property,
-                                             1);
-               drm_connector_attach_property(&radeon_connector->base,
-                                             rdev->mode_info.tv_std_property,
-                                             radeon_atombios_get_tv_info(rdev));
-               /* no HPD on analog connectors */
-               radeon_connector->hpd.hpd = RADEON_HPD_NONE;
-               connector->interlace_allowed = false;
-               connector->doublescan_allowed = false;
-               break;
-       case DRM_MODE_CONNECTOR_LVDS:
-               radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
-               if (!radeon_dig_connector)
-                       goto failed;
-               radeon_dig_connector->igp_lane_info = igp_lane_info;
-               radeon_connector->con_priv = radeon_dig_connector;
-               drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type);
-               drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs);
-               if (i2c_bus->valid) {
-                       radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
-                       if (!radeon_connector->ddc_bus)
-                               DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                                                     rdev->mode_info.tv_std_property,
+                                                     radeon_atombios_get_tv_info(rdev));
+                       /* no HPD on analog connectors */
+                       radeon_connector->hpd.hpd = RADEON_HPD_NONE;
+                       connector->interlace_allowed = false;
+                       connector->doublescan_allowed = false;
+                       break;
+               case DRM_MODE_CONNECTOR_LVDS:
+                       radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
+                       if (!radeon_dig_connector)
+                               goto failed;
+                       radeon_dig_connector->igp_lane_info = igp_lane_info;
+                       radeon_connector->con_priv = radeon_dig_connector;
+                       drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type);
+                       drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs);
+                       if (i2c_bus->valid) {
+                               radeon_connector->ddc_bus = radeon_i2c_lookup(rdev, i2c_bus);
+                               if (!radeon_connector->ddc_bus)
+                                       DRM_ERROR("LVDS: Failed to assign ddc bus! Check dmesg for i2c errors.\n");
+                       }
+                       drm_connector_attach_property(&radeon_connector->base,
+                                                     dev->mode_config.scaling_mode_property,
+                                                     DRM_MODE_SCALE_FULLSCREEN);
+                       subpixel_order = SubPixelHorizontalRGB;
+                       connector->interlace_allowed = false;
+                       connector->doublescan_allowed = false;
+                       break;
                }
-               drm_connector_attach_property(&radeon_connector->base,
-                                             dev->mode_config.scaling_mode_property,
-                                             DRM_MODE_SCALE_FULLSCREEN);
-               subpixel_order = SubPixelHorizontalRGB;
-               connector->interlace_allowed = false;
-               connector->doublescan_allowed = false;
-               break;
        }
 
        if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) {