All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
To: Andrew Chew <achew@nvidia.com>
Cc: mchehab@redhat.com, olof@lixom.net, linux-media@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/5 v2] [media] ov9740: Add suspend/resume
Date: Sun, 29 May 2011 12:58:29 +0200 (CEST)	[thread overview]
Message-ID: <Pine.LNX.4.64.1105291249220.18788@axis700.grange> (raw)
In-Reply-To: <1306368272-28279-5-git-send-email-achew@nvidia.com>

On Wed, 25 May 2011, achew@nvidia.com wrote:

> From: Andrew Chew <achew@nvidia.com>
> 
> On suspend, remember whether we are streaming or not, and at what frame format,
> so that on resume, we can start streaming again.
> 
> Signed-off-by: Andrew Chew <achew@nvidia.com>
> ---
>  drivers/media/video/ov9740.c |   39 +++++++++++++++++++++++++++++++++++++++
>  1 files changed, 39 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/media/video/ov9740.c b/drivers/media/video/ov9740.c
> index 6c28ae8..4abe943 100644
> --- a/drivers/media/video/ov9740.c
> +++ b/drivers/media/video/ov9740.c
> @@ -201,6 +201,10 @@ struct ov9740_priv {
>  
>  	bool				flag_vflip;
>  	bool				flag_hflip;
> +
> +	/* For suspend/resume. */
> +	struct v4l2_mbus_framefmt	current_mf;
> +	int				current_enable;

bool?

>  };
>  
>  static const struct ov9740_reg ov9740_defaults[] = {
> @@ -551,6 +555,8 @@ static int ov9740_s_stream(struct v4l2_subdev *sd, int enable)
>  					       0x00);
>  	}
>  
> +	priv->current_enable = enable;
> +
>  	return ret;
>  }
>  
> @@ -786,6 +792,7 @@ static int ov9740_s_fmt(struct v4l2_subdev *sd,
>  			struct v4l2_mbus_framefmt *mf)
>  {
>  	struct i2c_client *client = v4l2_get_subdevdata(sd);
> +	struct ov9740_priv *priv = to_ov9740(sd);
>  	enum v4l2_colorspace cspace;
>  	enum v4l2_mbus_pixelcode code = mf->code;
>  	int ret;
> @@ -812,6 +819,8 @@ static int ov9740_s_fmt(struct v4l2_subdev *sd,
>  	mf->code	= code;
>  	mf->colorspace	= cspace;
>  
> +	memcpy(&priv->current_mf, mf, sizeof(struct v4l2_mbus_framefmt));
> +
>  	return ret;
>  }
>  
> @@ -922,7 +931,37 @@ err:
>  	return ret;
>  }
>  
> +static int ov9740_suspend(struct soc_camera_device *icd, pm_message_t state)
> +{
> +	struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
> +	struct ov9740_priv *priv = to_ov9740(sd);
> +
> +	if (priv->current_enable) {
> +		int current_enable = priv->current_enable;
> +
> +		ov9740_s_stream(sd, 0);
> +		priv->current_enable = current_enable;

You don't need the local variable, just set

	priv->current_enable = true;

> +	}
> +
> +	return 0;
> +}
> +
> +static int ov9740_resume(struct soc_camera_device *icd)
> +{
> +	struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
> +	struct ov9740_priv *priv = to_ov9740(sd);
> +
> +	if (priv->current_enable) {
> +		ov9740_s_fmt(sd, &priv->current_mf);
> +		ov9740_s_stream(sd, priv->current_enable);
> +	}
> +
> +	return 0;
> +}
> +
>  static struct soc_camera_ops ov9740_ops = {
> +	.suspend		= ov9740_suspend,
> +	.resume			= ov9740_resume,

No, we don't want to use these, whey should disappear some time... Please, 
use .s_power() from struct v4l2_subdev_core_ops, you can check 
http://article.gmane.org/gmane.linux.drivers.video-input-infrastructure/33105 
for an example. If your host is not using these ops, it has to be fixed. 
So far in the mainline only one soc-camera host driver is using these 
callbacks: pxa_camera.c, which, looking at your email address, I doubt is 
the driver, that you're using;)

>  	.set_bus_param		= ov9740_set_bus_param,
>  	.query_bus_param	= ov9740_query_bus_param,
>  	.controls		= ov9740_controls,
> -- 
> 1.7.5.2
> 

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

  reply	other threads:[~2011-05-29 10:58 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-26  0:04 [PATCH 1/5 v2] [media] ov9740: Cleanup hex casing inconsistencies achew
2011-05-26  0:04 ` [PATCH 2/5 v2] [media] ov9740: Correct print in ov9740_reg_rmw() achew
2011-05-26  0:04 ` [PATCH 3/5 v2] [media] ov9740: Fixed some settings achew
2011-05-29 10:21   ` Guennadi Liakhovetski
2011-06-01  1:12     ` Andrew Chew
2011-05-26  0:04 ` [PATCH 4/5 v2] [media] ov9740: Remove hardcoded resolution regs achew
2011-05-29 10:36   ` Guennadi Liakhovetski
2011-06-01  1:50     ` Andrew Chew
2011-06-01 19:35       ` Guennadi Liakhovetski
2011-05-26  0:04 ` [PATCH 5/5 v2] [media] ov9740: Add suspend/resume achew
2011-05-29 10:58   ` Guennadi Liakhovetski [this message]
2011-06-01  1:58     ` Andrew Chew
2011-06-01 19:51       ` Guennadi Liakhovetski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.64.1105291249220.18788@axis700.grange \
    --to=g.liakhovetski@gmx.de \
    --cc=achew@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@redhat.com \
    --cc=olof@lixom.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.