Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 261399
b: refs/heads/master
c: 95904d4
h: refs/heads/master
i:
  261397: aa87742
  261395: d5ddded
  261391: 208f7ca
v: v3
  • Loading branch information
Andrew Chew authored and Mauro Carvalho Chehab committed Jul 27, 2011
1 parent f919eec commit 235d8ef
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e29c9bfb3823b7733448a3232d1864c14f28fb44
refs/heads/master: 95904d4b6a188ea2f0f1781498f6ca626e21b9ac
28 changes: 28 additions & 0 deletions trunk/drivers/media/video/ov9740.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,10 @@ struct ov9740_priv {

bool flag_vflip;
bool flag_hflip;

/* For suspend/resume. */
struct v4l2_mbus_framefmt current_mf;
bool current_enable;
};

static const struct ov9740_reg ov9740_defaults[] = {
Expand Down Expand Up @@ -551,6 +555,8 @@ static int ov9740_s_stream(struct v4l2_subdev *sd, int enable)
0x00);
}

priv->current_enable = enable;

return ret;
}

Expand Down Expand Up @@ -702,6 +708,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;
Expand All @@ -728,6 +735,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;
}

Expand Down Expand Up @@ -829,6 +838,24 @@ static int ov9740_g_chip_ident(struct v4l2_subdev *sd,
return 0;
}

static int ov9740_s_power(struct v4l2_subdev *sd, int on)
{
struct ov9740_priv *priv = to_ov9740(sd);

if (!priv->current_enable)
return 0;

if (on) {
ov9740_s_fmt(sd, &priv->current_mf);
ov9740_s_stream(sd, priv->current_enable);
} else {
ov9740_s_stream(sd, 0);
priv->current_enable = true;
}

return 0;
}

#ifdef CONFIG_VIDEO_ADV_DEBUG
static int ov9740_get_register(struct v4l2_subdev *sd,
struct v4l2_dbg_register *reg)
Expand Down Expand Up @@ -942,6 +969,7 @@ static struct v4l2_subdev_core_ops ov9740_core_ops = {
.g_ctrl = ov9740_g_ctrl,
.s_ctrl = ov9740_s_ctrl,
.g_chip_ident = ov9740_g_chip_ident,
.s_power = ov9740_s_power,
#ifdef CONFIG_VIDEO_ADV_DEBUG
.g_register = ov9740_get_register,
.s_register = ov9740_set_register,
Expand Down

0 comments on commit 235d8ef

Please sign in to comment.