mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
drm/nouveau: recognise DCB connector type 0x41 as LVDS
After looking at a number of different logs, it appears 0x41 likely indicates the presense of an LVDS panel following the SPWG spec (http://www.spwg.org/) Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
eea55c89e5
commit
8c3f6bb970
3 changed files with 7 additions and 3 deletions
|
@ -6031,6 +6031,7 @@ parse_dcb_connector_table(struct nvbios *bios)
|
|||
case DCB_CONNECTOR_DVI_I:
|
||||
case DCB_CONNECTOR_DVI_D:
|
||||
case DCB_CONNECTOR_LVDS:
|
||||
case DCB_CONNECTOR_LVDS_SPWG:
|
||||
case DCB_CONNECTOR_DP:
|
||||
case DCB_CONNECTOR_eDP:
|
||||
case DCB_CONNECTOR_HDMI_0:
|
||||
|
|
|
@ -82,6 +82,7 @@ enum dcb_connector_type {
|
|||
DCB_CONNECTOR_DVI_I = 0x30,
|
||||
DCB_CONNECTOR_DVI_D = 0x31,
|
||||
DCB_CONNECTOR_LVDS = 0x40,
|
||||
DCB_CONNECTOR_LVDS_SPWG = 0x41,
|
||||
DCB_CONNECTOR_DP = 0x46,
|
||||
DCB_CONNECTOR_eDP = 0x47,
|
||||
DCB_CONNECTOR_HDMI_0 = 0x60,
|
||||
|
|
|
@ -442,7 +442,7 @@ nouveau_connector_set_property(struct drm_connector *connector,
|
|||
}
|
||||
|
||||
/* LVDS always needs gpu scaling */
|
||||
if (nv_connector->dcb->type == DCB_CONNECTOR_LVDS &&
|
||||
if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS &&
|
||||
value == DRM_MODE_SCALE_NONE)
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -650,6 +650,7 @@ nouveau_connector_get_modes(struct drm_connector *connector)
|
|||
ret = get_slave_funcs(encoder)->get_modes(encoder, connector);
|
||||
|
||||
if (nv_connector->dcb->type == DCB_CONNECTOR_LVDS ||
|
||||
nv_connector->dcb->type == DCB_CONNECTOR_LVDS_SPWG ||
|
||||
nv_connector->dcb->type == DCB_CONNECTOR_eDP)
|
||||
ret += nouveau_connector_scaler_modes_add(connector);
|
||||
|
||||
|
@ -810,6 +811,7 @@ nouveau_connector_create(struct drm_device *dev, int index)
|
|||
type = DRM_MODE_CONNECTOR_HDMIA;
|
||||
break;
|
||||
case DCB_CONNECTOR_LVDS:
|
||||
case DCB_CONNECTOR_LVDS_SPWG:
|
||||
type = DRM_MODE_CONNECTOR_LVDS;
|
||||
funcs = &nouveau_connector_funcs_lvds;
|
||||
break;
|
||||
|
@ -838,7 +840,7 @@ nouveau_connector_create(struct drm_device *dev, int index)
|
|||
drm_connector_helper_add(connector, &nouveau_connector_helper_funcs);
|
||||
|
||||
/* Check if we need dithering enabled */
|
||||
if (dcb->type == DCB_CONNECTOR_LVDS) {
|
||||
if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) {
|
||||
bool dummy, is_24bit = false;
|
||||
|
||||
ret = nouveau_bios_parse_lvds_table(dev, 0, &dummy, &is_24bit);
|
||||
|
@ -883,7 +885,7 @@ nouveau_connector_create(struct drm_device *dev, int index)
|
|||
nv_connector->use_dithering ?
|
||||
DRM_MODE_DITHERING_ON : DRM_MODE_DITHERING_OFF);
|
||||
|
||||
if (dcb->type != DCB_CONNECTOR_LVDS) {
|
||||
if (connector->connector_type != DRM_MODE_CONNECTOR_LVDS) {
|
||||
if (dev_priv->card_type >= NV_50)
|
||||
connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue