diff options
author | Daniel Kurtz <djkurtz@chromium.org> | 2012-03-27 14:36:16 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-03-28 09:03:28 -0400 |
commit | f2c9677be3158c31ba19f527e2be0f7a519e19d1 (patch) | |
tree | 98c1caa6113e659ba2ab4bce67dbfa491103dad6 | |
parent | 2ed06c93a1fce057808894d73167aae03c76deaf (diff) |
drm/i915/intel_i2c: allocate gmbus array as part of drm_i915_private
This memory is always allocated, and it is always a fixed size, so just
allocate it along with the rest of the driver state.
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_i2c.c | 10 |
2 files changed, 1 insertions, 11 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index c5ad7b96b065..6983b4bcbdea 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -326,7 +326,7 @@ typedef struct drm_i915_private { | |||
326 | /** gt_lock is also taken in irq contexts. */ | 326 | /** gt_lock is also taken in irq contexts. */ |
327 | struct spinlock gt_lock; | 327 | struct spinlock gt_lock; |
328 | 328 | ||
329 | struct intel_gmbus *gmbus; | 329 | struct intel_gmbus gmbus[GMBUS_NUM_PORTS]; |
330 | 330 | ||
331 | /** gmbus_mutex protects against concurrent usage of the single hw gmbus | 331 | /** gmbus_mutex protects against concurrent usage of the single hw gmbus |
332 | * controller on different i2c buses. */ | 332 | * controller on different i2c buses. */ |
diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c index dcde6f64777a..c12db7265893 100644 --- a/drivers/gpu/drm/i915/intel_i2c.c +++ b/drivers/gpu/drm/i915/intel_i2c.c | |||
@@ -387,11 +387,6 @@ int intel_setup_gmbus(struct drm_device *dev) | |||
387 | else | 387 | else |
388 | dev_priv->gpio_mmio_base = 0; | 388 | dev_priv->gpio_mmio_base = 0; |
389 | 389 | ||
390 | dev_priv->gmbus = kcalloc(GMBUS_NUM_PORTS, sizeof(struct intel_gmbus), | ||
391 | GFP_KERNEL); | ||
392 | if (dev_priv->gmbus == NULL) | ||
393 | return -ENOMEM; | ||
394 | |||
395 | mutex_init(&dev_priv->gmbus_mutex); | 390 | mutex_init(&dev_priv->gmbus_mutex); |
396 | 391 | ||
397 | for (i = 0; i < GMBUS_NUM_PORTS; i++) { | 392 | for (i = 0; i < GMBUS_NUM_PORTS; i++) { |
@@ -428,8 +423,6 @@ err: | |||
428 | struct intel_gmbus *bus = &dev_priv->gmbus[i]; | 423 | struct intel_gmbus *bus = &dev_priv->gmbus[i]; |
429 | i2c_del_adapter(&bus->adapter); | 424 | i2c_del_adapter(&bus->adapter); |
430 | } | 425 | } |
431 | kfree(dev_priv->gmbus); | ||
432 | dev_priv->gmbus = NULL; | ||
433 | return ret; | 426 | return ret; |
434 | } | 427 | } |
435 | 428 | ||
@@ -468,7 +461,4 @@ void intel_teardown_gmbus(struct drm_device *dev) | |||
468 | struct intel_gmbus *bus = &dev_priv->gmbus[i]; | 461 | struct intel_gmbus *bus = &dev_priv->gmbus[i]; |
469 | i2c_del_adapter(&bus->adapter); | 462 | i2c_del_adapter(&bus->adapter); |
470 | } | 463 | } |
471 | |||
472 | kfree(dev_priv->gmbus); | ||
473 | dev_priv->gmbus = NULL; | ||
474 | } | 464 | } |