106,7 → 106,17 |
static void intel_crt_get_config(struct intel_encoder *encoder, |
struct intel_crtc_config *pipe_config) |
{ |
struct drm_device *dev = encoder->base.dev; |
int dotclock; |
|
pipe_config->adjusted_mode.flags |= intel_crt_get_flags(encoder); |
|
dotclock = pipe_config->port_clock; |
|
if (HAS_PCH_SPLIT(dev)) |
ironlake_check_encoder_dotclock(pipe_config, dotclock); |
|
pipe_config->adjusted_mode.crtc_clock = dotclock; |
} |
|
static void hsw_crt_get_config(struct intel_encoder *encoder, |
211,7 → 221,8 |
intel_modeset_check_state(connector->dev); |
} |
|
static int intel_crt_mode_valid(struct drm_connector *connector, |
static enum drm_mode_status |
intel_crt_mode_valid(struct drm_connector *connector, |
struct drm_display_mode *mode) |
{ |
struct drm_device *dev = connector->dev; |
263,7 → 274,7 |
struct drm_display_mode *adjusted_mode = &crtc->config.adjusted_mode; |
u32 adpa; |
|
if (HAS_PCH_SPLIT(dev)) |
if (INTEL_INFO(dev)->gen >= 5) |
adpa = ADPA_HOTPLUG_BITS; |
else |
adpa = 0; |
365,9 → 376,6 |
|
DRM_DEBUG_KMS("valleyview hotplug adpa=0x%x, result %d\n", adpa, ret); |
|
/* FIXME: debug force function and remove */ |
ret = true; |
|
return ret; |
} |
|
669,7 → 677,6 |
|
static void intel_crt_destroy(struct drm_connector *connector) |
{ |
drm_sysfs_connector_remove(connector); |
drm_connector_cleanup(connector); |
kfree(connector); |
} |
753,7 → 760,7 |
if (!crt) |
return; |
|
intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); |
intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL); |
if (!intel_connector) { |
kfree(crt); |
return; |
793,16 → 800,15 |
crt->base.mode_set = intel_crt_mode_set; |
crt->base.disable = intel_disable_crt; |
crt->base.enable = intel_enable_crt; |
if (IS_HASWELL(dev)) |
crt->base.get_config = hsw_crt_get_config; |
else |
crt->base.get_config = intel_crt_get_config; |
if (I915_HAS_HOTPLUG(dev)) |
crt->base.hpd_pin = HPD_CRT; |
if (HAS_DDI(dev)) |
if (HAS_DDI(dev)) { |
crt->base.get_config = hsw_crt_get_config; |
crt->base.get_hw_state = intel_ddi_get_hw_state; |
else |
} else { |
crt->base.get_config = intel_crt_get_config; |
crt->base.get_hw_state = intel_crt_get_hw_state; |
} |
intel_connector->get_hw_state = intel_connector_get_hw_state; |
|
drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); |