[PATCH 07/13 v4] drm/i915/intel_i2c: allocate gmbus array as part of drm_i915_private

Daniel Vetter daniel at ffwll.ch
Wed Mar 28 06:05:42 PDT 2012


On Wed, Mar 28, 2012 at 02:36:16AM +0800, Daniel Kurtz wrote:
> 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 at chromium.org>
> Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>

I've picked up all your patches up and including this one for d-i-n,
thanks. I'm a bit unhappy about the gmbus to gmbus pin off-by-one stuff in
the previous patch, but I could not come up with a better way to do it.
And merging these 2 enumerations into one sounds like a good idea, so I've
picked it up.
-Daniel
> ---
>  drivers/gpu/drm/i915/i915_drv.h  |    2 +-
>  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 c5ad7b9..6983b4b 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 {
>  	/** gt_lock is also taken in irq contexts. */
>  	struct spinlock gt_lock;
>  
> -	struct intel_gmbus *gmbus;
> +	struct intel_gmbus gmbus[GMBUS_NUM_PORTS];
>  
>  	/** gmbus_mutex protects against concurrent usage of the single hw gmbus
>  	 * controller on different i2c buses. */
> diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c
> index dcde6f6..c12db72 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)
>  	else
>  		dev_priv->gpio_mmio_base = 0;
>  
> -	dev_priv->gmbus = kcalloc(GMBUS_NUM_PORTS, sizeof(struct intel_gmbus),
> -				  GFP_KERNEL);
> -	if (dev_priv->gmbus == NULL)
> -		return -ENOMEM;
> -
>  	mutex_init(&dev_priv->gmbus_mutex);
>  
>  	for (i = 0; i < GMBUS_NUM_PORTS; i++) {
> @@ -428,8 +423,6 @@ err:
>  		struct intel_gmbus *bus = &dev_priv->gmbus[i];
>  		i2c_del_adapter(&bus->adapter);
>  	}
> -	kfree(dev_priv->gmbus);
> -	dev_priv->gmbus = NULL;
>  	return ret;
>  }
>  
> @@ -468,7 +461,4 @@ void intel_teardown_gmbus(struct drm_device *dev)
>  		struct intel_gmbus *bus = &dev_priv->gmbus[i];
>  		i2c_del_adapter(&bus->adapter);
>  	}
> -
> -	kfree(dev_priv->gmbus);
> -	dev_priv->gmbus = NULL;
>  }
> -- 
> 1.7.7.3
> 

-- 
Daniel Vetter
Mail: daniel at ffwll.ch
Mobile: +41 (0)79 365 57 48


More information about the dri-devel mailing list