Commit b63fb589 authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by Mauro Carvalho Chehab

V4L/DVB (12535): soc-camera: remove .init() and .release() methods from struct soc_camera_ops

Remove unneeded soc-camera operations, this also makes the soc-camera API to
v4l2 subdevices thinner.
Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 76f7df62
...@@ -122,9 +122,8 @@ static int reg_clear(struct i2c_client *client, const u8 reg, ...@@ -122,9 +122,8 @@ static int reg_clear(struct i2c_client *client, const u8 reg,
return reg_write(client, reg, ret & ~data); return reg_write(client, reg, ret & ~data);
} }
static int mt9m001_init(struct soc_camera_device *icd) static int mt9m001_init(struct i2c_client *client)
{ {
struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
int ret; int ret;
dev_dbg(&client->dev, "%s\n", __func__); dev_dbg(&client->dev, "%s\n", __func__);
...@@ -144,16 +143,6 @@ static int mt9m001_init(struct soc_camera_device *icd) ...@@ -144,16 +143,6 @@ static int mt9m001_init(struct soc_camera_device *icd)
return ret; return ret;
} }
static int mt9m001_release(struct soc_camera_device *icd)
{
struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
/* Disable the chip */
reg_write(client, MT9M001_OUTPUT_CONTROL, 0);
return 0;
}
static int mt9m001_s_stream(struct v4l2_subdev *sd, int enable) static int mt9m001_s_stream(struct v4l2_subdev *sd, int enable)
{ {
struct i2c_client *client = sd->priv; struct i2c_client *client = sd->priv;
...@@ -446,8 +435,6 @@ static const struct v4l2_queryctrl mt9m001_controls[] = { ...@@ -446,8 +435,6 @@ static const struct v4l2_queryctrl mt9m001_controls[] = {
}; };
static struct soc_camera_ops mt9m001_ops = { static struct soc_camera_ops mt9m001_ops = {
.init = mt9m001_init,
.release = mt9m001_release,
.set_bus_param = mt9m001_set_bus_param, .set_bus_param = mt9m001_set_bus_param,
.query_bus_param = mt9m001_query_bus_param, .query_bus_param = mt9m001_query_bus_param,
.controls = mt9m001_controls, .controls = mt9m001_controls,
...@@ -581,6 +568,7 @@ static int mt9m001_video_probe(struct soc_camera_device *icd, ...@@ -581,6 +568,7 @@ static int mt9m001_video_probe(struct soc_camera_device *icd,
struct soc_camera_link *icl = to_soc_camera_link(icd); struct soc_camera_link *icl = to_soc_camera_link(icd);
s32 data; s32 data;
unsigned long flags; unsigned long flags;
int ret;
/* We must have a parent by now. And it cannot be a wrong one. /* We must have a parent by now. And it cannot be a wrong one.
* So this entire test is completely redundant. */ * So this entire test is completely redundant. */
...@@ -637,7 +625,11 @@ static int mt9m001_video_probe(struct soc_camera_device *icd, ...@@ -637,7 +625,11 @@ static int mt9m001_video_probe(struct soc_camera_device *icd,
dev_info(&client->dev, "Detected a MT9M001 chip ID %x (%s)\n", data, dev_info(&client->dev, "Detected a MT9M001 chip ID %x (%s)\n", data,
data == 0x8431 ? "C12STM" : "C12ST"); data == 0x8431 ? "C12STM" : "C12ST");
return 0; ret = mt9m001_init(client);
if (ret < 0)
dev_err(&client->dev, "Failed to initialise the camera\n");
return ret;
} }
static void mt9m001_video_remove(struct soc_camera_device *icd) static void mt9m001_video_remove(struct soc_camera_device *icd)
......
...@@ -672,13 +672,9 @@ static const struct v4l2_queryctrl mt9m111_controls[] = { ...@@ -672,13 +672,9 @@ static const struct v4l2_queryctrl mt9m111_controls[] = {
}; };
static int mt9m111_resume(struct soc_camera_device *icd); static int mt9m111_resume(struct soc_camera_device *icd);
static int mt9m111_init(struct soc_camera_device *icd);
static int mt9m111_release(struct soc_camera_device *icd);
static struct soc_camera_ops mt9m111_ops = { static struct soc_camera_ops mt9m111_ops = {
.init = mt9m111_init,
.resume = mt9m111_resume, .resume = mt9m111_resume,
.release = mt9m111_release,
.query_bus_param = mt9m111_query_bus_param, .query_bus_param = mt9m111_query_bus_param,
.set_bus_param = mt9m111_set_bus_param, .set_bus_param = mt9m111_set_bus_param,
.controls = mt9m111_controls, .controls = mt9m111_controls,
...@@ -880,9 +876,8 @@ static int mt9m111_resume(struct soc_camera_device *icd) ...@@ -880,9 +876,8 @@ static int mt9m111_resume(struct soc_camera_device *icd)
return ret; return ret;
} }
static int mt9m111_init(struct soc_camera_device *icd) static int mt9m111_init(struct i2c_client *client)
{ {
struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
struct mt9m111 *mt9m111 = to_mt9m111(client); struct mt9m111 *mt9m111 = to_mt9m111(client);
int ret; int ret;
...@@ -899,22 +894,6 @@ static int mt9m111_init(struct soc_camera_device *icd) ...@@ -899,22 +894,6 @@ static int mt9m111_init(struct soc_camera_device *icd)
return ret; return ret;
} }
static int mt9m111_release(struct soc_camera_device *icd)
{
struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
struct mt9m111 *mt9m111 = to_mt9m111(client);
int ret;
ret = reg_clear(RESET, MT9M111_RESET_CHIP_ENABLE);
if (!ret)
mt9m111->powered = 0;
if (ret < 0)
dev_err(&client->dev, "mt9m11x release failed: %d\n", ret);
return ret;
}
/* /*
* Interface active, can use i2c. If it fails, it can indeed mean, that * Interface active, can use i2c. If it fails, it can indeed mean, that
* this wasn't our capture interface, so, we wait for the right one * this wasn't our capture interface, so, we wait for the right one
...@@ -934,10 +913,13 @@ static int mt9m111_video_probe(struct soc_camera_device *icd, ...@@ -934,10 +913,13 @@ static int mt9m111_video_probe(struct soc_camera_device *icd,
to_soc_camera_host(icd->dev.parent)->nr != icd->iface) to_soc_camera_host(icd->dev.parent)->nr != icd->iface)
return -ENODEV; return -ENODEV;
ret = mt9m111_enable(client); mt9m111->autoexposure = 1;
if (ret) mt9m111->autowhitebalance = 1;
goto ei2c;
ret = mt9m111_reset(client); mt9m111->swap_rgb_even_odd = 1;
mt9m111->swap_rgb_red_blue = 1;
ret = mt9m111_init(client);
if (ret) if (ret)
goto ei2c; goto ei2c;
...@@ -962,12 +944,6 @@ static int mt9m111_video_probe(struct soc_camera_device *icd, ...@@ -962,12 +944,6 @@ static int mt9m111_video_probe(struct soc_camera_device *icd,
dev_info(&client->dev, "Detected a MT9M11x chip ID %x\n", data); dev_info(&client->dev, "Detected a MT9M11x chip ID %x\n", data);
mt9m111->autoexposure = 1;
mt9m111->autowhitebalance = 1;
mt9m111->swap_rgb_even_odd = 1;
mt9m111->swap_rgb_red_blue = 1;
ei2c: ei2c:
return ret; return ret;
} }
......
...@@ -163,20 +163,6 @@ static int mt9t031_disable(struct i2c_client *client) ...@@ -163,20 +163,6 @@ static int mt9t031_disable(struct i2c_client *client)
return 0; return 0;
} }
static int mt9t031_init(struct soc_camera_device *icd)
{
struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
return mt9t031_idle(client);
}
static int mt9t031_release(struct soc_camera_device *icd)
{
struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
return mt9t031_disable(client);
}
static int mt9t031_s_stream(struct v4l2_subdev *sd, int enable) static int mt9t031_s_stream(struct v4l2_subdev *sd, int enable)
{ {
struct i2c_client *client = sd->priv; struct i2c_client *client = sd->priv;
...@@ -539,8 +525,6 @@ static const struct v4l2_queryctrl mt9t031_controls[] = { ...@@ -539,8 +525,6 @@ static const struct v4l2_queryctrl mt9t031_controls[] = {
}; };
static struct soc_camera_ops mt9t031_ops = { static struct soc_camera_ops mt9t031_ops = {
.init = mt9t031_init,
.release = mt9t031_release,
.set_bus_param = mt9t031_set_bus_param, .set_bus_param = mt9t031_set_bus_param,
.query_bus_param = mt9t031_query_bus_param, .query_bus_param = mt9t031_query_bus_param,
.controls = mt9t031_controls, .controls = mt9t031_controls,
...@@ -689,6 +673,7 @@ static int mt9t031_video_probe(struct i2c_client *client) ...@@ -689,6 +673,7 @@ static int mt9t031_video_probe(struct i2c_client *client)
struct soc_camera_device *icd = client->dev.platform_data; struct soc_camera_device *icd = client->dev.platform_data;
struct mt9t031 *mt9t031 = to_mt9t031(client); struct mt9t031 *mt9t031 = to_mt9t031(client);
s32 data; s32 data;
int ret;
/* Enable the chip */ /* Enable the chip */
data = reg_write(client, MT9T031_CHIP_ENABLE, 1); data = reg_write(client, MT9T031_CHIP_ENABLE, 1);
...@@ -711,7 +696,11 @@ static int mt9t031_video_probe(struct i2c_client *client) ...@@ -711,7 +696,11 @@ static int mt9t031_video_probe(struct i2c_client *client)
dev_info(&client->dev, "Detected a MT9T031 chip ID %x\n", data); dev_info(&client->dev, "Detected a MT9T031 chip ID %x\n", data);
return 0; ret = mt9t031_idle(client);
if (ret < 0)
dev_err(&client->dev, "Failed to initialise the camera\n");
return ret;
} }
static struct v4l2_subdev_core_ops mt9t031_subdev_core_ops = { static struct v4l2_subdev_core_ops mt9t031_subdev_core_ops = {
......
...@@ -138,9 +138,8 @@ static int reg_clear(struct i2c_client *client, const u8 reg, ...@@ -138,9 +138,8 @@ static int reg_clear(struct i2c_client *client, const u8 reg,
return reg_write(client, reg, ret & ~data); return reg_write(client, reg, ret & ~data);
} }
static int mt9v022_init(struct soc_camera_device *icd) static int mt9v022_init(struct i2c_client *client)
{ {
struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
struct mt9v022 *mt9v022 = to_mt9v022(client); struct mt9v022 *mt9v022 = to_mt9v022(client);
int ret; int ret;
...@@ -532,7 +531,6 @@ static const struct v4l2_queryctrl mt9v022_controls[] = { ...@@ -532,7 +531,6 @@ static const struct v4l2_queryctrl mt9v022_controls[] = {
}; };
static struct soc_camera_ops mt9v022_ops = { static struct soc_camera_ops mt9v022_ops = {
.init = mt9v022_init,
.set_bus_param = mt9v022_set_bus_param, .set_bus_param = mt9v022_set_bus_param,
.query_bus_param = mt9v022_query_bus_param, .query_bus_param = mt9v022_query_bus_param,
.controls = mt9v022_controls, .controls = mt9v022_controls,
...@@ -751,6 +749,10 @@ static int mt9v022_video_probe(struct soc_camera_device *icd, ...@@ -751,6 +749,10 @@ static int mt9v022_video_probe(struct soc_camera_device *icd,
data, mt9v022->model == V4L2_IDENT_MT9V022IX7ATM ? data, mt9v022->model == V4L2_IDENT_MT9V022IX7ATM ?
"monochrome" : "colour"); "monochrome" : "colour");
ret = mt9v022_init(client);
if (ret < 0)
dev_err(&client->dev, "Failed to initialise the camera\n");
ei2c: ei2c:
return ret; return ret;
} }
......
...@@ -385,12 +385,6 @@ static int soc_camera_open(struct file *file) ...@@ -385,12 +385,6 @@ static int soc_camera_open(struct file *file)
goto eiciadd; goto eiciadd;
} }
if (icd->ops->init) {
ret = icd->ops->init(icd);
if (ret < 0)
goto einit;
}
/* Try to configure with default parameters */ /* Try to configure with default parameters */
ret = soc_camera_set_fmt(icf, &f); ret = soc_camera_set_fmt(icf, &f);
if (ret < 0) if (ret < 0)
...@@ -411,9 +405,6 @@ static int soc_camera_open(struct file *file) ...@@ -411,9 +405,6 @@ static int soc_camera_open(struct file *file)
* and use_count == 1 * and use_count == 1
*/ */
esfmt: esfmt:
if (icd->ops->release)
icd->ops->release(icd);
einit:
ici->ops->remove(icd); ici->ops->remove(icd);
eiciadd: eiciadd:
if (icl->power) if (icl->power)
...@@ -438,8 +429,6 @@ static int soc_camera_close(struct file *file) ...@@ -438,8 +429,6 @@ static int soc_camera_close(struct file *file)
if (!icd->use_count) { if (!icd->use_count) {
struct soc_camera_link *icl = to_soc_camera_link(icd); struct soc_camera_link *icl = to_soc_camera_link(icd);
if (icd->ops->release)
icd->ops->release(icd);
ici->ops->remove(icd); ici->ops->remove(icd);
if (icl->power) if (icl->power)
icl->power(icd->pdev, 0); icl->power(icd->pdev, 0);
......
...@@ -191,12 +191,8 @@ struct soc_camera_format_xlate { ...@@ -191,12 +191,8 @@ struct soc_camera_format_xlate {
struct soc_camera_ops { struct soc_camera_ops {
int (*suspend)(struct soc_camera_device *, pm_message_t state); int (*suspend)(struct soc_camera_device *, pm_message_t state);
int (*resume)(struct soc_camera_device *); int (*resume)(struct soc_camera_device *);
int (*init)(struct soc_camera_device *);
int (*release)(struct soc_camera_device *);
unsigned long (*query_bus_param)(struct soc_camera_device *); unsigned long (*query_bus_param)(struct soc_camera_device *);
int (*set_bus_param)(struct soc_camera_device *, unsigned long); int (*set_bus_param)(struct soc_camera_device *, unsigned long);
int (*get_chip_id)(struct soc_camera_device *,
struct v4l2_dbg_chip_ident *);
int (*enum_input)(struct soc_camera_device *, struct v4l2_input *); int (*enum_input)(struct soc_camera_device *, struct v4l2_input *);
const struct v4l2_queryctrl *controls; const struct v4l2_queryctrl *controls;
int num_controls; int num_controls;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment