diff options
author | Zhenyu Wang <zhenyuw@linux.intel.com> | 2010-03-30 02:39:31 -0400 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-04-09 17:17:31 -0400 |
commit | 335af9a235a82842854b394507ab5e310d88be42 (patch) | |
tree | e4d05c21023b46e98082558cbb03db4968274348 /drivers/gpu/drm/i915/intel_modes.c | |
parent | c1c43977e6fc789cbde094303fa9ace629a35aca (diff) |
drm/i915: change intel_ddc_get_modes() function parameters
This one replaces original param for intel_ddc_get_modes() with
DRM connector and i2c bus adapter instead. With explicit params,
we won't require that a single driver structure must hold connector
and DDC bus reference, which ease the conversion to splitted encoder/
connector model.
It also clears up for some cases that we would steal other DDC bus
for mode probe, like VGA analog DDC probe for DVI-I. Also it fixed
a bug in old DVI-I probe handling, that failed to restore origin
analog GPIO port.
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_modes.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_modes.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c index 3111a1c2731f..9562176defc4 100644 --- a/drivers/gpu/drm/i915/intel_modes.c +++ b/drivers/gpu/drm/i915/intel_modes.c | |||
@@ -53,9 +53,9 @@ bool intel_ddc_probe(struct intel_encoder *intel_encoder) | |||
53 | } | 53 | } |
54 | }; | 54 | }; |
55 | 55 | ||
56 | intel_i2c_quirk_set(intel_encoder->base.dev, true); | 56 | intel_i2c_quirk_set(intel_encoder->enc.dev, true); |
57 | ret = i2c_transfer(intel_encoder->ddc_bus, msgs, 2); | 57 | ret = i2c_transfer(intel_encoder->ddc_bus, msgs, 2); |
58 | intel_i2c_quirk_set(intel_encoder->base.dev, false); | 58 | intel_i2c_quirk_set(intel_encoder->enc.dev, false); |
59 | if (ret == 2) | 59 | if (ret == 2) |
60 | return true; | 60 | return true; |
61 | 61 | ||
@@ -65,22 +65,23 @@ bool intel_ddc_probe(struct intel_encoder *intel_encoder) | |||
65 | /** | 65 | /** |
66 | * intel_ddc_get_modes - get modelist from monitor | 66 | * intel_ddc_get_modes - get modelist from monitor |
67 | * @connector: DRM connector device to use | 67 | * @connector: DRM connector device to use |
68 | * @adapter: i2c adapter | ||
68 | * | 69 | * |
69 | * Fetch the EDID information from @connector using the DDC bus. | 70 | * Fetch the EDID information from @connector using the DDC bus. |
70 | */ | 71 | */ |
71 | int intel_ddc_get_modes(struct intel_encoder *intel_encoder) | 72 | int intel_ddc_get_modes(struct drm_connector *connector, |
73 | struct i2c_adapter *adapter) | ||
72 | { | 74 | { |
73 | struct edid *edid; | 75 | struct edid *edid; |
74 | int ret = 0; | 76 | int ret = 0; |
75 | 77 | ||
76 | intel_i2c_quirk_set(intel_encoder->base.dev, true); | 78 | intel_i2c_quirk_set(connector->dev, true); |
77 | edid = drm_get_edid(&intel_encoder->base, intel_encoder->ddc_bus); | 79 | edid = drm_get_edid(connector, adapter); |
78 | intel_i2c_quirk_set(intel_encoder->base.dev, false); | 80 | intel_i2c_quirk_set(connector->dev, false); |
79 | if (edid) { | 81 | if (edid) { |
80 | drm_mode_connector_update_edid_property(&intel_encoder->base, | 82 | drm_mode_connector_update_edid_property(connector, edid); |
81 | edid); | 83 | ret = drm_add_edid_modes(connector, edid); |
82 | ret = drm_add_edid_modes(&intel_encoder->base, edid); | 84 | connector->display_info.raw_edid = NULL; |
83 | intel_encoder->base.display_info.raw_edid = NULL; | ||
84 | kfree(edid); | 85 | kfree(edid); |
85 | } | 86 | } |
86 | 87 | ||