aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2011-06-16 16:36:23 -0400
committerKeith Packard <keithp@keithp.com>2011-10-20 17:11:15 -0400
commit46eb303682f72717d1a75cdd2309733bfed43396 (patch)
tree8c8d386fac6cb2660411698b2883f223ad8383b0 /drivers/gpu/drm
parent9a1f57808afd65b1d066d5e1907526a1e45215df (diff)
drm/i915: Remove "i2c_speed" nonsense from child device table
I have no evidence for this byte being used this way, and lots of counterexamples. Restore the struct to its empirical definition and patch up gmbus setup to match. Signed-off-by: Adam Jackson <ajax@redhat.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/intel_bios.c6
-rw-r--r--drivers/gpu/drm/i915/intel_bios.h3
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c12
4 files changed, 8 insertions, 14 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 0e777fdf9c61..c02cdace744c 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -139,7 +139,6 @@ struct sdvo_device_mapping {
139 u8 slave_addr; 139 u8 slave_addr;
140 u8 dvo_wiring; 140 u8 dvo_wiring;
141 u8 i2c_pin; 141 u8 i2c_pin;
142 u8 i2c_speed;
143 u8 ddc_pin; 142 u8 ddc_pin;
144}; 143};
145 144
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index dbda66f622ee..63880e2e5cfd 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -403,15 +403,13 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv,
403 p_mapping->dvo_wiring = p_child->dvo_wiring; 403 p_mapping->dvo_wiring = p_child->dvo_wiring;
404 p_mapping->ddc_pin = p_child->ddc_pin; 404 p_mapping->ddc_pin = p_child->ddc_pin;
405 p_mapping->i2c_pin = p_child->i2c_pin; 405 p_mapping->i2c_pin = p_child->i2c_pin;
406 p_mapping->i2c_speed = p_child->i2c_speed;
407 p_mapping->initialized = 1; 406 p_mapping->initialized = 1;
408 DRM_DEBUG_KMS("SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d, i2c_speed=%d\n", 407 DRM_DEBUG_KMS("SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n",
409 p_mapping->dvo_port, 408 p_mapping->dvo_port,
410 p_mapping->slave_addr, 409 p_mapping->slave_addr,
411 p_mapping->dvo_wiring, 410 p_mapping->dvo_wiring,
412 p_mapping->ddc_pin, 411 p_mapping->ddc_pin,
413 p_mapping->i2c_pin, 412 p_mapping->i2c_pin);
414 p_mapping->i2c_speed);
415 } else { 413 } else {
416 DRM_DEBUG_KMS("Maybe one SDVO port is shared by " 414 DRM_DEBUG_KMS("Maybe one SDVO port is shared by "
417 "two SDVO device.\n"); 415 "two SDVO device.\n");
diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
index a8cad2b88e04..8af3735e27c6 100644
--- a/drivers/gpu/drm/i915/intel_bios.h
+++ b/drivers/gpu/drm/i915/intel_bios.h
@@ -202,8 +202,7 @@ struct bdb_general_features {
202struct child_device_config { 202struct child_device_config {
203 u16 handle; 203 u16 handle;
204 u16 device_type; 204 u16 device_type;
205 u8 i2c_speed; 205 u8 device_id[10]; /* ascii string */
206 u8 rsvd[9];
207 u16 addin_offset; 206 u16 addin_offset;
208 u8 dvo_port; /* See Device_PORT_* above */ 207 u8 dvo_port; /* See Device_PORT_* above */
209 u8 i2c_pin; 208 u8 i2c_pin;
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 731200243219..ed15c00aecdf 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -1896,7 +1896,7 @@ intel_sdvo_select_i2c_bus(struct drm_i915_private *dev_priv,
1896 struct intel_sdvo *sdvo, u32 reg) 1896 struct intel_sdvo *sdvo, u32 reg)
1897{ 1897{
1898 struct sdvo_device_mapping *mapping; 1898 struct sdvo_device_mapping *mapping;
1899 u8 pin, speed; 1899 u8 pin;
1900 1900
1901 if (IS_SDVOB(reg)) 1901 if (IS_SDVOB(reg))
1902 mapping = &dev_priv->sdvo_mappings[0]; 1902 mapping = &dev_priv->sdvo_mappings[0];
@@ -1904,18 +1904,16 @@ intel_sdvo_select_i2c_bus(struct drm_i915_private *dev_priv,
1904 mapping = &dev_priv->sdvo_mappings[1]; 1904 mapping = &dev_priv->sdvo_mappings[1];
1905 1905
1906 pin = GMBUS_PORT_DPB; 1906 pin = GMBUS_PORT_DPB;
1907 speed = GMBUS_RATE_1MHZ >> 8; 1907 if (mapping->initialized)
1908 if (mapping->initialized) {
1909 pin = mapping->i2c_pin; 1908 pin = mapping->i2c_pin;
1910 speed = mapping->i2c_speed;
1911 }
1912 1909
1913 if (pin < GMBUS_NUM_PORTS) { 1910 if (pin < GMBUS_NUM_PORTS) {
1914 sdvo->i2c = &dev_priv->gmbus[pin].adapter; 1911 sdvo->i2c = &dev_priv->gmbus[pin].adapter;
1915 intel_gmbus_set_speed(sdvo->i2c, speed); 1912 intel_gmbus_set_speed(sdvo->i2c, GMBUS_RATE_1MHZ >> 8);
1916 intel_gmbus_force_bit(sdvo->i2c, true); 1913 intel_gmbus_force_bit(sdvo->i2c, true);
1917 } else 1914 } else {
1918 sdvo->i2c = &dev_priv->gmbus[GMBUS_PORT_DPB].adapter; 1915 sdvo->i2c = &dev_priv->gmbus[GMBUS_PORT_DPB].adapter;
1916 }
1919} 1917}
1920 1918
1921static bool 1919static bool