V4L/DVB (9783): Change power on/off sequence on ov772x
Signed-off-by: Kuninori Morimoto <morimoto.kuninori@renesas.com> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
daa1c164db
commit
b90c032b0d
1 changed files with 22 additions and 13 deletions
|
@ -593,12 +593,30 @@ static int ov772x_reset(struct i2c_client *client)
|
||||||
|
|
||||||
static int ov772x_init(struct soc_camera_device *icd)
|
static int ov772x_init(struct soc_camera_device *icd)
|
||||||
{
|
{
|
||||||
return 0;
|
struct ov772x_priv *priv = container_of(icd, struct ov772x_priv, icd);
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (priv->info->link.power) {
|
||||||
|
ret = priv->info->link.power(&priv->client->dev, 1);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (priv->info->link.reset)
|
||||||
|
ret = priv->info->link.reset(&priv->client->dev);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ov772x_release(struct soc_camera_device *icd)
|
static int ov772x_release(struct soc_camera_device *icd)
|
||||||
{
|
{
|
||||||
return 0;
|
struct ov772x_priv *priv = container_of(icd, struct ov772x_priv, icd);
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (priv->info->link.power)
|
||||||
|
ret = priv->info->link.power(&priv->client->dev, 0);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ov772x_start_capture(struct soc_camera_device *icd)
|
static int ov772x_start_capture(struct soc_camera_device *icd)
|
||||||
|
@ -814,9 +832,6 @@ static int ov772x_video_probe(struct soc_camera_device *icd)
|
||||||
icd->formats = ov772x_fmt_lists;
|
icd->formats = ov772x_fmt_lists;
|
||||||
icd->num_formats = ARRAY_SIZE(ov772x_fmt_lists);
|
icd->num_formats = ARRAY_SIZE(ov772x_fmt_lists);
|
||||||
|
|
||||||
if (priv->info->link.power)
|
|
||||||
priv->info->link.power(&priv->client->dev, 1);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check and show product ID and manufacturer ID
|
* check and show product ID and manufacturer ID
|
||||||
*/
|
*/
|
||||||
|
@ -824,8 +839,8 @@ static int ov772x_video_probe(struct soc_camera_device *icd)
|
||||||
ver = i2c_smbus_read_byte_data(priv->client, VER);
|
ver = i2c_smbus_read_byte_data(priv->client, VER);
|
||||||
if (pid != 0x77 ||
|
if (pid != 0x77 ||
|
||||||
ver != 0x21) {
|
ver != 0x21) {
|
||||||
if (priv->info->link.power)
|
dev_err(&icd->dev,
|
||||||
priv->info->link.power(&priv->client->dev, 0);
|
"Product ID error %x:%x\n", pid, ver);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -842,13 +857,7 @@ static int ov772x_video_probe(struct soc_camera_device *icd)
|
||||||
|
|
||||||
static void ov772x_video_remove(struct soc_camera_device *icd)
|
static void ov772x_video_remove(struct soc_camera_device *icd)
|
||||||
{
|
{
|
||||||
struct ov772x_priv *priv = container_of(icd, struct ov772x_priv, icd);
|
|
||||||
|
|
||||||
soc_camera_video_stop(icd);
|
soc_camera_video_stop(icd);
|
||||||
|
|
||||||
if (priv->info->link.power)
|
|
||||||
priv->info->link.power(&priv->client->dev, 0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct soc_camera_ops ov772x_ops = {
|
static struct soc_camera_ops ov772x_ops = {
|
||||||
|
|
Loading…
Add table
Reference in a new issue