diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-04-17 19:57:48 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-05-15 20:50:13 -0400 |
commit | 8c3f6bb970413c6a537736f409a1bc9d8abd671c (patch) | |
tree | 1f2d20429a7ef276dfcbca4fd4755a7693fd5107 /drivers/gpu/drm/nouveau | |
parent | eea55c89e504a4affe66367ba3ecbae16296d9ef (diff) |
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>
Diffstat (limited to 'drivers/gpu/drm/nouveau')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_bios.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_bios.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_connector.c | 8 |
3 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c index 8486dc6ee16c..729d5fd7c88d 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c | |||
@@ -6031,6 +6031,7 @@ parse_dcb_connector_table(struct nvbios *bios) | |||
6031 | case DCB_CONNECTOR_DVI_I: | 6031 | case DCB_CONNECTOR_DVI_I: |
6032 | case DCB_CONNECTOR_DVI_D: | 6032 | case DCB_CONNECTOR_DVI_D: |
6033 | case DCB_CONNECTOR_LVDS: | 6033 | case DCB_CONNECTOR_LVDS: |
6034 | case DCB_CONNECTOR_LVDS_SPWG: | ||
6034 | case DCB_CONNECTOR_DP: | 6035 | case DCB_CONNECTOR_DP: |
6035 | case DCB_CONNECTOR_eDP: | 6036 | case DCB_CONNECTOR_eDP: |
6036 | case DCB_CONNECTOR_HDMI_0: | 6037 | case DCB_CONNECTOR_HDMI_0: |
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.h b/drivers/gpu/drm/nouveau/nouveau_bios.h index 8a54fa7edf5c..050c314119df 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.h +++ b/drivers/gpu/drm/nouveau/nouveau_bios.h | |||
@@ -82,6 +82,7 @@ enum dcb_connector_type { | |||
82 | DCB_CONNECTOR_DVI_I = 0x30, | 82 | DCB_CONNECTOR_DVI_I = 0x30, |
83 | DCB_CONNECTOR_DVI_D = 0x31, | 83 | DCB_CONNECTOR_DVI_D = 0x31, |
84 | DCB_CONNECTOR_LVDS = 0x40, | 84 | DCB_CONNECTOR_LVDS = 0x40, |
85 | DCB_CONNECTOR_LVDS_SPWG = 0x41, | ||
85 | DCB_CONNECTOR_DP = 0x46, | 86 | DCB_CONNECTOR_DP = 0x46, |
86 | DCB_CONNECTOR_eDP = 0x47, | 87 | DCB_CONNECTOR_eDP = 0x47, |
87 | DCB_CONNECTOR_HDMI_0 = 0x60, | 88 | DCB_CONNECTOR_HDMI_0 = 0x60, |
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c index 7ae151109a66..1595d0b6e815 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.c +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c | |||
@@ -442,7 +442,7 @@ nouveau_connector_set_property(struct drm_connector *connector, | |||
442 | } | 442 | } |
443 | 443 | ||
444 | /* LVDS always needs gpu scaling */ | 444 | /* LVDS always needs gpu scaling */ |
445 | if (nv_connector->dcb->type == DCB_CONNECTOR_LVDS && | 445 | if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS && |
446 | value == DRM_MODE_SCALE_NONE) | 446 | value == DRM_MODE_SCALE_NONE) |
447 | return -EINVAL; | 447 | return -EINVAL; |
448 | 448 | ||
@@ -650,6 +650,7 @@ nouveau_connector_get_modes(struct drm_connector *connector) | |||
650 | ret = get_slave_funcs(encoder)->get_modes(encoder, connector); | 650 | ret = get_slave_funcs(encoder)->get_modes(encoder, connector); |
651 | 651 | ||
652 | if (nv_connector->dcb->type == DCB_CONNECTOR_LVDS || | 652 | if (nv_connector->dcb->type == DCB_CONNECTOR_LVDS || |
653 | nv_connector->dcb->type == DCB_CONNECTOR_LVDS_SPWG || | ||
653 | nv_connector->dcb->type == DCB_CONNECTOR_eDP) | 654 | nv_connector->dcb->type == DCB_CONNECTOR_eDP) |
654 | ret += nouveau_connector_scaler_modes_add(connector); | 655 | ret += nouveau_connector_scaler_modes_add(connector); |
655 | 656 | ||
@@ -810,6 +811,7 @@ nouveau_connector_create(struct drm_device *dev, int index) | |||
810 | type = DRM_MODE_CONNECTOR_HDMIA; | 811 | type = DRM_MODE_CONNECTOR_HDMIA; |
811 | break; | 812 | break; |
812 | case DCB_CONNECTOR_LVDS: | 813 | case DCB_CONNECTOR_LVDS: |
814 | case DCB_CONNECTOR_LVDS_SPWG: | ||
813 | type = DRM_MODE_CONNECTOR_LVDS; | 815 | type = DRM_MODE_CONNECTOR_LVDS; |
814 | funcs = &nouveau_connector_funcs_lvds; | 816 | funcs = &nouveau_connector_funcs_lvds; |
815 | break; | 817 | break; |
@@ -838,7 +840,7 @@ nouveau_connector_create(struct drm_device *dev, int index) | |||
838 | drm_connector_helper_add(connector, &nouveau_connector_helper_funcs); | 840 | drm_connector_helper_add(connector, &nouveau_connector_helper_funcs); |
839 | 841 | ||
840 | /* Check if we need dithering enabled */ | 842 | /* Check if we need dithering enabled */ |
841 | if (dcb->type == DCB_CONNECTOR_LVDS) { | 843 | if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) { |
842 | bool dummy, is_24bit = false; | 844 | bool dummy, is_24bit = false; |
843 | 845 | ||
844 | ret = nouveau_bios_parse_lvds_table(dev, 0, &dummy, &is_24bit); | 846 | ret = nouveau_bios_parse_lvds_table(dev, 0, &dummy, &is_24bit); |
@@ -883,7 +885,7 @@ nouveau_connector_create(struct drm_device *dev, int index) | |||
883 | nv_connector->use_dithering ? | 885 | nv_connector->use_dithering ? |
884 | DRM_MODE_DITHERING_ON : DRM_MODE_DITHERING_OFF); | 886 | DRM_MODE_DITHERING_ON : DRM_MODE_DITHERING_OFF); |
885 | 887 | ||
886 | if (dcb->type != DCB_CONNECTOR_LVDS) { | 888 | if (connector->connector_type != DRM_MODE_CONNECTOR_LVDS) { |
887 | if (dev_priv->card_type >= NV_50) | 889 | if (dev_priv->card_type >= NV_50) |
888 | connector->polled = DRM_CONNECTOR_POLL_HPD; | 890 | connector->polled = DRM_CONNECTOR_POLL_HPD; |
889 | else | 891 | else |