diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-02-14 16:37:19 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-02-29 14:44:48 -0500 |
commit | c2b9152f098e213dc5f2e8a4dbbfe090302c58ed (patch) | |
tree | 87ccf8bd7ee97e1ad073dbe7400d4e6af2c6a4c1 /drivers/gpu | |
parent | caae745a352377f48f6eb43b5040214d803a885f (diff) |
drm/i915: add dev_priv to intel_gmbus
This way we can free up the bus->adaptor.algo_data pointer and make it
available for use with the bitbanging fallback algo.
Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_i2c.c | 6 |
2 files changed, 11 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 35833fc350de..3cc2694a2b93 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -298,6 +298,13 @@ enum intel_pch { | |||
298 | struct intel_fbdev; | 298 | struct intel_fbdev; |
299 | struct intel_fbc_work; | 299 | struct intel_fbc_work; |
300 | 300 | ||
301 | struct intel_gmbus { | ||
302 | struct i2c_adapter adapter; | ||
303 | struct i2c_adapter *force_bit; | ||
304 | u32 reg0; | ||
305 | struct drm_i915_private *dev_priv; | ||
306 | }; | ||
307 | |||
301 | typedef struct drm_i915_private { | 308 | typedef struct drm_i915_private { |
302 | struct drm_device *dev; | 309 | struct drm_device *dev; |
303 | 310 | ||
@@ -315,11 +322,7 @@ typedef struct drm_i915_private { | |||
315 | /** gt_lock is also taken in irq contexts. */ | 322 | /** gt_lock is also taken in irq contexts. */ |
316 | struct spinlock gt_lock; | 323 | struct spinlock gt_lock; |
317 | 324 | ||
318 | struct intel_gmbus { | 325 | struct intel_gmbus *gmbus; |
319 | struct i2c_adapter adapter; | ||
320 | struct i2c_adapter *force_bit; | ||
321 | u32 reg0; | ||
322 | } *gmbus; | ||
323 | 326 | ||
324 | /** gmbus_mutex protects against concurrent usage of the single hw gmbus | 327 | /** gmbus_mutex protects against concurrent usage of the single hw gmbus |
325 | * controller on different i2c buses. */ | 328 | * controller on different i2c buses. */ |
diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c index 4e4ddd5d1f51..89346cc0bc4b 100644 --- a/drivers/gpu/drm/i915/intel_i2c.c +++ b/drivers/gpu/drm/i915/intel_i2c.c | |||
@@ -232,7 +232,7 @@ gmbus_xfer(struct i2c_adapter *adapter, | |||
232 | struct intel_gmbus *bus = container_of(adapter, | 232 | struct intel_gmbus *bus = container_of(adapter, |
233 | struct intel_gmbus, | 233 | struct intel_gmbus, |
234 | adapter); | 234 | adapter); |
235 | struct drm_i915_private *dev_priv = adapter->algo_data; | 235 | struct drm_i915_private *dev_priv = bus->dev_priv; |
236 | int i, reg_offset, ret; | 236 | int i, reg_offset, ret; |
237 | 237 | ||
238 | mutex_lock(&dev_priv->gmbus_mutex); | 238 | mutex_lock(&dev_priv->gmbus_mutex); |
@@ -406,7 +406,7 @@ int intel_setup_gmbus(struct drm_device *dev) | |||
406 | names[i]); | 406 | names[i]); |
407 | 407 | ||
408 | bus->adapter.dev.parent = &dev->pdev->dev; | 408 | bus->adapter.dev.parent = &dev->pdev->dev; |
409 | bus->adapter.algo_data = dev_priv; | 409 | bus->dev_priv = dev_priv; |
410 | 410 | ||
411 | bus->adapter.algo = &gmbus_algorithm; | 411 | bus->adapter.algo = &gmbus_algorithm; |
412 | ret = i2c_add_adapter(&bus->adapter); | 412 | ret = i2c_add_adapter(&bus->adapter); |
@@ -447,7 +447,7 @@ void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit) | |||
447 | 447 | ||
448 | if (force_bit) { | 448 | if (force_bit) { |
449 | if (bus->force_bit == NULL) { | 449 | if (bus->force_bit == NULL) { |
450 | struct drm_i915_private *dev_priv = adapter->algo_data; | 450 | struct drm_i915_private *dev_priv = bus->dev_priv; |
451 | bus->force_bit = intel_gpio_create(dev_priv, | 451 | bus->force_bit = intel_gpio_create(dev_priv, |
452 | bus->reg0 & 0xff); | 452 | bus->reg0 & 0xff); |
453 | } | 453 | } |