|
@@ -808,7 +808,9 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "VGA");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -821,7 +823,9 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -841,7 +845,9 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -865,7 +871,9 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "HDMI");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -884,7 +892,9 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DP");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -897,12 +907,14 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|
|
case DRM_MODE_CONNECTOR_9PinDIN:
|
|
|
if (radeon_tv == 1) {
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
+ radeon_connector->dac_load_detect = true;
|
|
|
+ drm_connector_attach_property(&radeon_connector->base,
|
|
|
+ rdev->mode_info.load_detect_property,
|
|
|
+ 1);
|
|
|
}
|
|
|
- radeon_connector->dac_load_detect = true;
|
|
|
- drm_connector_attach_property(&radeon_connector->base,
|
|
|
- rdev->mode_info.load_detect_property,
|
|
|
- 1);
|
|
|
break;
|
|
|
case DRM_MODE_CONNECTOR_LVDS:
|
|
|
radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
|
|
@@ -912,7 +924,9 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "LVDS");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -926,10 +940,6 @@ radeon_add_atom_connector(struct drm_device *dev,
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- ret = drm_fb_helper_add_connector(connector);
|
|
|
- if (ret)
|
|
|
- goto failed;
|
|
|
-
|
|
|
connector->display_info.subpixel_order = subpixel_order;
|
|
|
drm_sysfs_connector_add(connector);
|
|
|
return;
|
|
@@ -978,7 +988,9 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "VGA");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -991,7 +1003,9 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -1005,7 +1019,9 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
|
|
case DRM_MODE_CONNECTOR_DVII:
|
|
|
case DRM_MODE_CONNECTOR_DVID:
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -1022,7 +1038,9 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
|
|
case DRM_MODE_CONNECTOR_9PinDIN:
|
|
|
if (radeon_tv == 1) {
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
radeon_connector->dac_load_detect = true;
|
|
|
drm_connector_attach_property(&radeon_connector->base,
|
|
|
rdev->mode_info.load_detect_property,
|
|
@@ -1031,7 +1049,9 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
|
|
break;
|
|
|
case DRM_MODE_CONNECTOR_LVDS:
|
|
|
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);
|
|
|
+ ret = drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs);
|
|
|
+ if (ret)
|
|
|
+ goto failed;
|
|
|
if (i2c_bus->valid) {
|
|
|
radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "LVDS");
|
|
|
if (!radeon_connector->ddc_bus)
|
|
@@ -1044,10 +1064,6 @@ radeon_add_legacy_connector(struct drm_device *dev,
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- ret = drm_fb_helper_add_connector(connector);
|
|
|
- if (ret)
|
|
|
- goto failed;
|
|
|
-
|
|
|
connector->display_info.subpixel_order = subpixel_order;
|
|
|
drm_sysfs_connector_add(connector);
|
|
|
return;
|