[Intel-gfx] [PATCH 1/5] drm/i915: add dev_to_i915_priv helper

Chris Wilson chris at chris-wilson.co.uk
Mon Dec 8 12:40:20 PST 2014


On Mon, Dec 08, 2014 at 06:42:05PM +0200, Imre Deak wrote:
> This will be needed by later patches, so factor it out.

The similiar function (for drm_device) is known as to_i915(), so just
call this dev_to_i915().
> 
> No functional change.
> 
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.c  | 15 ++++++---------
>  drivers/gpu/drm/i915/intel_drv.h |  8 ++++++++
>  2 files changed, 14 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 71be3c9..32c2e33 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -923,10 +923,10 @@ i915_pci_remove(struct pci_dev *pdev)
>  
>  static int i915_pm_suspend(struct device *dev)
>  {
> -	struct pci_dev *pdev = to_pci_dev(dev);
> -	struct drm_device *drm_dev = pci_get_drvdata(pdev);
> +	struct drm_i915_private *dev_priv = dev_to_i915_priv(dev);
> +	struct drm_device *drm_dev = dev_priv->dev;
>  
> -	if (!drm_dev || !drm_dev->dev_private) {
> +	if (!drm_dev || !dev_priv) {

This test is quite nonsensical since you've dereferenced both pointers
getting to this point. If it is required, we need a new patch.

>  		dev_err(dev, "DRM not initialized, aborting suspend.\n");
>  		return -ENODEV;
>  	}
> @@ -939,8 +939,7 @@ static int i915_pm_suspend(struct device *dev)
>  
>  static int i915_pm_suspend_late(struct device *dev)
>  {
> -	struct pci_dev *pdev = to_pci_dev(dev);
> -	struct drm_device *drm_dev = pci_get_drvdata(pdev);
> +	struct drm_device *drm_dev = dev_to_i915_priv(dev)->dev;
>  
>  	/*
>  	 * We have a suspedn ordering issue with the snd-hda driver also
> @@ -959,8 +958,7 @@ static int i915_pm_suspend_late(struct device *dev)
>  
>  static int i915_pm_resume_early(struct device *dev)
>  {
> -	struct pci_dev *pdev = to_pci_dev(dev);
> -	struct drm_device *drm_dev = pci_get_drvdata(pdev);
> +	struct drm_device *drm_dev = dev_to_i915_priv(dev)->dev;
>  
>  	if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF)
>  		return 0;
> @@ -970,8 +968,7 @@ static int i915_pm_resume_early(struct device *dev)
>  
>  static int i915_pm_resume(struct device *dev)
>  {
> -	struct pci_dev *pdev = to_pci_dev(dev);
> -	struct drm_device *drm_dev = pci_get_drvdata(pdev);
> +	struct drm_device *drm_dev = dev_to_i915_priv(dev)->dev;
>  
>  	if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF)
>  		return 0;
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 61a88fa..3de7a55 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -775,6 +775,14 @@ static inline unsigned int intel_num_planes(struct intel_crtc *crtc)
>  	return INTEL_INFO(crtc->base.dev)->num_sprites[crtc->pipe] + 1;
>  }
>  
> +static inline struct drm_i915_private *dev_to_i915_priv(struct device *dev)
> +{
> +	struct pci_dev *pdev = to_pci_dev(dev);
> +	struct drm_device *drm_dev = pci_get_drvdata(pdev);
> +
> +	return drm_dev->dev_private;

I think you meant 

static inline struct drm_i915_private *dev_to_i915(struct device *dev)
{
	return to_i915(pci_get_drvdata(to_pci_dev(dev)));
}
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list