提交 c37f7f57 编写于 作者: J Jani Nikula

drm/i915/opregion: abstract acpi display type getter for a connector

No functional changes.
Reviewed-and-tested-by: NPeter Wu <peter@lekensteyn.nl>
Signed-off-by: NJani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/ef19172e5a00d8abd8190a5389283ef6b5f7eaa9.1465810007.git.jani.nikula@intel.com
上级 25affa73
...@@ -674,6 +674,36 @@ static void set_did(struct intel_opregion *opregion, int i, u32 val) ...@@ -674,6 +674,36 @@ static void set_did(struct intel_opregion *opregion, int i, u32 val)
} }
} }
static u32 acpi_display_type(struct drm_connector *connector)
{
u32 display_type = ACPI_DISPLAY_TYPE_OTHER;
switch (connector->connector_type) {
case DRM_MODE_CONNECTOR_VGA:
case DRM_MODE_CONNECTOR_DVIA:
display_type = ACPI_DISPLAY_TYPE_VGA;
break;
case DRM_MODE_CONNECTOR_Composite:
case DRM_MODE_CONNECTOR_SVIDEO:
case DRM_MODE_CONNECTOR_Component:
case DRM_MODE_CONNECTOR_9PinDIN:
display_type = ACPI_DISPLAY_TYPE_TV;
break;
case DRM_MODE_CONNECTOR_DVII:
case DRM_MODE_CONNECTOR_DVID:
case DRM_MODE_CONNECTOR_DisplayPort:
case DRM_MODE_CONNECTOR_HDMIA:
case DRM_MODE_CONNECTOR_HDMIB:
display_type = ACPI_DISPLAY_TYPE_EXTERNAL_DIGITAL;
break;
case DRM_MODE_CONNECTOR_LVDS:
display_type = ACPI_DISPLAY_TYPE_INTERNAL_DIGITAL;
break;
}
return display_type;
}
static void intel_didl_outputs(struct drm_i915_private *dev_priv) static void intel_didl_outputs(struct drm_i915_private *dev_priv)
{ {
struct intel_opregion *opregion = &dev_priv->opregion; struct intel_opregion *opregion = &dev_priv->opregion;
...@@ -742,36 +772,16 @@ static void intel_didl_outputs(struct drm_i915_private *dev_priv) ...@@ -742,36 +772,16 @@ static void intel_didl_outputs(struct drm_i915_private *dev_priv)
blind_set: blind_set:
i = 0; i = 0;
list_for_each_entry(connector, &dev_priv->dev->mode_config.connector_list, head) { list_for_each_entry(connector, &dev_priv->dev->mode_config.connector_list, head) {
int output_type = ACPI_DISPLAY_TYPE_OTHER; int display_type = acpi_display_type(connector);
if (i >= max_outputs) { if (i >= max_outputs) {
DRM_DEBUG_KMS("More than %u outputs in connector list\n", DRM_DEBUG_KMS("More than %u outputs in connector list\n",
max_outputs); max_outputs);
return; return;
} }
switch (connector->connector_type) {
case DRM_MODE_CONNECTOR_VGA:
case DRM_MODE_CONNECTOR_DVIA:
output_type = ACPI_DISPLAY_TYPE_VGA;
break;
case DRM_MODE_CONNECTOR_Composite:
case DRM_MODE_CONNECTOR_SVIDEO:
case DRM_MODE_CONNECTOR_Component:
case DRM_MODE_CONNECTOR_9PinDIN:
output_type = ACPI_DISPLAY_TYPE_TV;
break;
case DRM_MODE_CONNECTOR_DVII:
case DRM_MODE_CONNECTOR_DVID:
case DRM_MODE_CONNECTOR_DisplayPort:
case DRM_MODE_CONNECTOR_HDMIA:
case DRM_MODE_CONNECTOR_HDMIB:
output_type = ACPI_DISPLAY_TYPE_EXTERNAL_DIGITAL;
break;
case DRM_MODE_CONNECTOR_LVDS:
output_type = ACPI_DISPLAY_TYPE_INTERNAL_DIGITAL;
break;
}
temp = get_did(opregion, i); temp = get_did(opregion, i);
set_did(opregion, i, temp | (1 << 31) | output_type | i); set_did(opregion, i, temp | (1 << 31) | display_type | i);
i++; i++;
} }
goto end; goto end;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册