diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/atombios_dp.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_atombios.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_connectors.c | 23 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_display.c | 7 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_encoders.c | 4 |
5 files changed, 32 insertions, 12 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c index 0d63c4436e7..3eb0ca5b3d7 100644 --- a/drivers/gpu/drm/radeon/atombios_dp.c +++ b/drivers/gpu/drm/radeon/atombios_dp.c | |||
| @@ -468,7 +468,8 @@ void radeon_dp_set_link_config(struct drm_connector *connector, | |||
| 468 | struct radeon_connector *radeon_connector; | 468 | struct radeon_connector *radeon_connector; |
| 469 | struct radeon_connector_atom_dig *dig_connector; | 469 | struct radeon_connector_atom_dig *dig_connector; |
| 470 | 470 | ||
| 471 | if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) | 471 | if ((connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) || |
| 472 | (connector->connector_type != DRM_MODE_CONNECTOR_eDP)) | ||
| 472 | return; | 473 | return; |
| 473 | 474 | ||
| 474 | radeon_connector = to_radeon_connector(connector); | 475 | radeon_connector = to_radeon_connector(connector); |
| @@ -582,7 +583,8 @@ void dp_link_train(struct drm_encoder *encoder, | |||
| 582 | u8 train_set[4]; | 583 | u8 train_set[4]; |
| 583 | int i; | 584 | int i; |
| 584 | 585 | ||
| 585 | if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) | 586 | if ((connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) || |
| 587 | (connector->connector_type != DRM_MODE_CONNECTOR_eDP)) | ||
| 586 | return; | 588 | return; |
| 587 | 589 | ||
| 588 | if (!radeon_encoder->enc_priv) | 590 | if (!radeon_encoder->enc_priv) |
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index 41dd8ebff21..18340354011 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c | |||
| @@ -346,7 +346,9 @@ const int object_connector_convert[] = { | |||
| 346 | DRM_MODE_CONNECTOR_Unknown, | 346 | DRM_MODE_CONNECTOR_Unknown, |
| 347 | DRM_MODE_CONNECTOR_Unknown, | 347 | DRM_MODE_CONNECTOR_Unknown, |
| 348 | DRM_MODE_CONNECTOR_Unknown, | 348 | DRM_MODE_CONNECTOR_Unknown, |
| 349 | DRM_MODE_CONNECTOR_DisplayPort | 349 | DRM_MODE_CONNECTOR_DisplayPort, |
| 350 | DRM_MODE_CONNECTOR_eDP, | ||
| 351 | DRM_MODE_CONNECTOR_Unknown | ||
| 350 | }; | 352 | }; |
| 351 | 353 | ||
| 352 | bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev) | 354 | bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev) |
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index b82ae61d4d1..9da10dd5df8 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c | |||
| @@ -49,8 +49,10 @@ void radeon_connector_hotplug(struct drm_connector *connector) | |||
| 49 | if (radeon_connector->hpd.hpd != RADEON_HPD_NONE) | 49 | if (radeon_connector->hpd.hpd != RADEON_HPD_NONE) |
| 50 | radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); | 50 | radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); |
| 51 | 51 | ||
| 52 | if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { | 52 | if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) || |
| 53 | if (radeon_dp_getsinktype(radeon_connector) == CONNECTOR_OBJECT_ID_DISPLAYPORT) { | 53 | (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) { |
| 54 | if ((radeon_dp_getsinktype(radeon_connector) == CONNECTOR_OBJECT_ID_DISPLAYPORT) || | ||
| 55 | (radeon_dp_getsinktype(radeon_connector) == CONNECTOR_OBJECT_ID_eDP)) { | ||
| 54 | if (radeon_dp_needs_link_train(radeon_connector)) { | 56 | if (radeon_dp_needs_link_train(radeon_connector)) { |
| 55 | if (connector->encoder) | 57 | if (connector->encoder) |
| 56 | dp_link_train(connector->encoder, connector); | 58 | dp_link_train(connector->encoder, connector); |
| @@ -967,7 +969,8 @@ static enum drm_connector_status radeon_dp_detect(struct drm_connector *connecto | |||
| 967 | } | 969 | } |
| 968 | 970 | ||
| 969 | sink_type = radeon_dp_getsinktype(radeon_connector); | 971 | sink_type = radeon_dp_getsinktype(radeon_connector); |
| 970 | if (sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { | 972 | if ((sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || |
| 973 | (sink_type == CONNECTOR_OBJECT_ID_eDP)) { | ||
| 971 | if (radeon_dp_getdpcd(radeon_connector)) { | 974 | if (radeon_dp_getdpcd(radeon_connector)) { |
| 972 | radeon_dig_connector->dp_sink_type = sink_type; | 975 | radeon_dig_connector->dp_sink_type = sink_type; |
| 973 | ret = connector_status_connected; | 976 | ret = connector_status_connected; |
| @@ -992,7 +995,8 @@ static int radeon_dp_mode_valid(struct drm_connector *connector, | |||
| 992 | 995 | ||
| 993 | /* XXX check mode bandwidth */ | 996 | /* XXX check mode bandwidth */ |
| 994 | 997 | ||
| 995 | if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) | 998 | if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || |
| 999 | (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) | ||
| 996 | return radeon_dp_mode_valid_helper(radeon_connector, mode); | 1000 | return radeon_dp_mode_valid_helper(radeon_connector, mode); |
| 997 | else | 1001 | else |
| 998 | return MODE_OK; | 1002 | return MODE_OK; |
| @@ -1145,6 +1149,7 @@ radeon_add_atom_connector(struct drm_device *dev, | |||
| 1145 | subpixel_order = SubPixelHorizontalRGB; | 1149 | subpixel_order = SubPixelHorizontalRGB; |
| 1146 | break; | 1150 | break; |
| 1147 | case DRM_MODE_CONNECTOR_DisplayPort: | 1151 | case DRM_MODE_CONNECTOR_DisplayPort: |
| 1152 | case DRM_MODE_CONNECTOR_eDP: | ||
| 1148 | radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); | 1153 | radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); |
| 1149 | if (!radeon_dig_connector) | 1154 | if (!radeon_dig_connector) |
| 1150 | goto failed; | 1155 | goto failed; |
| @@ -1157,10 +1162,16 @@ radeon_add_atom_connector(struct drm_device *dev, | |||
| 1157 | goto failed; | 1162 | goto failed; |
| 1158 | if (i2c_bus->valid) { | 1163 | if (i2c_bus->valid) { |
| 1159 | /* add DP i2c bus */ | 1164 | /* add DP i2c bus */ |
| 1160 | radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch"); | 1165 | if (connector_type == DRM_MODE_CONNECTOR_eDP) |
| 1166 | radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "eDP-auxch"); | ||
| 1167 | else | ||
| 1168 | radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch"); | ||
| 1161 | if (!radeon_dig_connector->dp_i2c_bus) | 1169 | if (!radeon_dig_connector->dp_i2c_bus) |
| 1162 | goto failed; | 1170 | goto failed; |
| 1163 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DP"); | 1171 | if (connector_type == DRM_MODE_CONNECTOR_eDP) |
| 1172 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "eDP"); | ||
| 1173 | else | ||
| 1174 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DP"); | ||
| 1164 | if (!radeon_connector->ddc_bus) | 1175 | if (!radeon_connector->ddc_bus) |
| 1165 | goto failed; | 1176 | goto failed; |
| 1166 | } | 1177 | } |
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c index 1fb2f029d7e..0ec491ead2f 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c | |||
| @@ -234,7 +234,7 @@ static const char *encoder_names[34] = { | |||
| 234 | "INTERNAL_UNIPHY2", | 234 | "INTERNAL_UNIPHY2", |
| 235 | }; | 235 | }; |
| 236 | 236 | ||
| 237 | static const char *connector_names[13] = { | 237 | static const char *connector_names[15] = { |
| 238 | "Unknown", | 238 | "Unknown", |
| 239 | "VGA", | 239 | "VGA", |
| 240 | "DVI-I", | 240 | "DVI-I", |
| @@ -248,6 +248,8 @@ static const char *connector_names[13] = { | |||
| 248 | "DisplayPort", | 248 | "DisplayPort", |
| 249 | "HDMI-A", | 249 | "HDMI-A", |
| 250 | "HDMI-B", | 250 | "HDMI-B", |
| 251 | "TV", | ||
| 252 | "eDP", | ||
| 251 | }; | 253 | }; |
| 252 | 254 | ||
| 253 | static const char *hpd_names[7] = { | 255 | static const char *hpd_names[7] = { |
| @@ -352,7 +354,8 @@ int radeon_ddc_get_modes(struct radeon_connector *radeon_connector) | |||
| 352 | { | 354 | { |
| 353 | int ret = 0; | 355 | int ret = 0; |
| 354 | 356 | ||
| 355 | if (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) { | 357 | if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) || |
| 358 | (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)) { | ||
| 356 | struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; | 359 | struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; |
| 357 | if (dig->dp_i2c_bus) | 360 | if (dig->dp_i2c_bus) |
| 358 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter); | 361 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter); |
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c index 844c513f724..82eb551970b 100644 --- a/drivers/gpu/drm/radeon/radeon_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_encoders.c | |||
| @@ -596,8 +596,10 @@ atombios_get_encoder_mode(struct drm_encoder *encoder) | |||
| 596 | return ATOM_ENCODER_MODE_LVDS; | 596 | return ATOM_ENCODER_MODE_LVDS; |
| 597 | break; | 597 | break; |
| 598 | case DRM_MODE_CONNECTOR_DisplayPort: | 598 | case DRM_MODE_CONNECTOR_DisplayPort: |
| 599 | case DRM_MODE_CONNECTOR_eDP: | ||
| 599 | radeon_dig_connector = radeon_connector->con_priv; | 600 | radeon_dig_connector = radeon_connector->con_priv; |
| 600 | if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) | 601 | if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || |
| 602 | (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) | ||
| 601 | return ATOM_ENCODER_MODE_DP; | 603 | return ATOM_ENCODER_MODE_DP; |
| 602 | else if (drm_detect_hdmi_monitor(radeon_connector->edid)) | 604 | else if (drm_detect_hdmi_monitor(radeon_connector->edid)) |
| 603 | return ATOM_ENCODER_MODE_HDMI; | 605 | return ATOM_ENCODER_MODE_HDMI; |
