aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorZhenyu Wang <zhenyuw@linux.intel.com>2010-03-30 02:39:27 -0400
committerEric Anholt <eric@anholt.net>2010-04-09 17:16:36 -0400
commitc5e4df3382681c8ed214ee93bbe8f96044980485 (patch)
tree9fbe48d3abca053d92545f022d50d3266a58df84 /drivers
parent5bf4c9c469ffc64b85fed1f3d2b0c8b19909ed13 (diff)
drm/i915: more conversion from connector_list walk to encoder_list
What we really want is encoder info instead of connector, so change some more list walk in pipeline setup functions from connector_list to encoder_list. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 34d2652f405f..412b442dc941 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -741,12 +741,11 @@ bool intel_pipe_has_type (struct drm_crtc *crtc, int type)
741{ 741{
742 struct drm_device *dev = crtc->dev; 742 struct drm_device *dev = crtc->dev;
743 struct drm_mode_config *mode_config = &dev->mode_config; 743 struct drm_mode_config *mode_config = &dev->mode_config;
744 struct drm_connector *l_entry; 744 struct drm_encoder *l_entry;
745 745
746 list_for_each_entry(l_entry, &mode_config->connector_list, head) { 746 list_for_each_entry(l_entry, &mode_config->encoder_list, head) {
747 if (l_entry->encoder && 747 if (l_entry && l_entry->crtc == crtc) {
748 l_entry->encoder->crtc == crtc) { 748 struct intel_encoder *intel_encoder = enc_to_intel_encoder(l_entry);
749 struct intel_encoder *intel_encoder = to_intel_encoder(l_entry);
750 if (intel_encoder->type == type) 749 if (intel_encoder->type == type)
751 return true; 750 return true;
752 } 751 }
@@ -2923,7 +2922,8 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
2923 bool is_crt = false, is_lvds = false, is_tv = false, is_dp = false; 2922 bool is_crt = false, is_lvds = false, is_tv = false, is_dp = false;
2924 bool is_edp = false; 2923 bool is_edp = false;
2925 struct drm_mode_config *mode_config = &dev->mode_config; 2924 struct drm_mode_config *mode_config = &dev->mode_config;
2926 struct drm_connector *connector; 2925 struct drm_encoder *encoder;
2926 struct intel_encoder *intel_encoder;
2927 const intel_limit_t *limit; 2927 const intel_limit_t *limit;
2928 int ret; 2928 int ret;
2929 struct fdi_m_n m_n = {0}; 2929 struct fdi_m_n m_n = {0};
@@ -2941,12 +2941,13 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
2941 2941
2942 drm_vblank_pre_modeset(dev, pipe); 2942 drm_vblank_pre_modeset(dev, pipe);
2943 2943
2944 list_for_each_entry(connector, &mode_config->connector_list, head) { 2944 list_for_each_entry(encoder, &mode_config->encoder_list, head) {
2945 struct intel_encoder *intel_encoder = to_intel_encoder(connector);
2946 2945
2947 if (!connector->encoder || connector->encoder->crtc != crtc) 2946 if (!encoder || encoder->crtc != crtc)
2948 continue; 2947 continue;
2949 2948
2949 intel_encoder = enc_to_intel_encoder(encoder);
2950
2950 switch (intel_encoder->type) { 2951 switch (intel_encoder->type) {
2951 case INTEL_OUTPUT_LVDS: 2952 case INTEL_OUTPUT_LVDS:
2952 is_lvds = true; 2953 is_lvds = true;
@@ -4391,14 +4392,14 @@ struct drm_crtc *intel_get_crtc_from_pipe(struct drm_device *dev, int pipe)
4391 return crtc; 4392 return crtc;
4392} 4393}
4393 4394
4394static int intel_connector_clones(struct drm_device *dev, int type_mask) 4395static int intel_encoder_clones(struct drm_device *dev, int type_mask)
4395{ 4396{
4396 int index_mask = 0; 4397 int index_mask = 0;
4397 struct drm_connector *connector; 4398 struct drm_encoder *encoder;
4398 int entry = 0; 4399 int entry = 0;
4399 4400
4400 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { 4401 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
4401 struct intel_encoder *intel_encoder = to_intel_encoder(connector); 4402 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder);
4402 if (type_mask & intel_encoder->clone_mask) 4403 if (type_mask & intel_encoder->clone_mask)
4403 index_mask |= (1 << entry); 4404 index_mask |= (1 << entry);
4404 entry++; 4405 entry++;
@@ -4410,7 +4411,7 @@ static int intel_connector_clones(struct drm_device *dev, int type_mask)
4410static void intel_setup_outputs(struct drm_device *dev) 4411static void intel_setup_outputs(struct drm_device *dev)
4411{ 4412{
4412 struct drm_i915_private *dev_priv = dev->dev_private; 4413 struct drm_i915_private *dev_priv = dev->dev_private;
4413 struct drm_connector *connector; 4414 struct drm_encoder *encoder;
4414 4415
4415 intel_crt_init(dev); 4416 intel_crt_init(dev);
4416 4417
@@ -4493,12 +4494,11 @@ static void intel_setup_outputs(struct drm_device *dev)
4493 if (SUPPORTS_TV(dev)) 4494 if (SUPPORTS_TV(dev))
4494 intel_tv_init(dev); 4495 intel_tv_init(dev);
4495 4496
4496 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { 4497 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
4497 struct intel_encoder *intel_encoder = to_intel_encoder(connector); 4498 struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder);
4498 struct drm_encoder *encoder = &intel_encoder->enc;
4499 4499
4500 encoder->possible_crtcs = intel_encoder->crtc_mask; 4500 encoder->possible_crtcs = intel_encoder->crtc_mask;
4501 encoder->possible_clones = intel_connector_clones(dev, 4501 encoder->possible_clones = intel_encoder_clones(dev,
4502 intel_encoder->clone_mask); 4502 intel_encoder->clone_mask);
4503 } 4503 }
4504} 4504}