summaryrefslogtreecommitdiffstats
path: root/drivers/media/video
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video')
-rw-r--r--drivers/media/video/dpc7146.c19
-rw-r--r--drivers/media/video/ks0127.c1
-rw-r--r--drivers/media/video/mxb.c40
-rw-r--r--drivers/media/video/vino.c22
4 files changed, 44 insertions, 38 deletions
diff --git a/drivers/media/video/dpc7146.c b/drivers/media/video/dpc7146.c
index 255dae303708..566e479e2629 100644
--- a/drivers/media/video/dpc7146.c
+++ b/drivers/media/video/dpc7146.c
@@ -87,11 +87,24 @@ struct dpc
int cur_input; /* current input */
};
+static int dpc_check_clients(struct device *dev, void *data)
+{
+ struct dpc* dpc = data;
+ struct i2c_client *client = i2c_verify_client(dev);
+
+ if( !client )
+ return 0;
+
+ if( I2C_SAA7111A == client->addr )
+ dpc->saa7111a = client;
+
+ return 0;
+}
+
/* fixme: add vbi stuff here */
static int dpc_probe(struct saa7146_dev* dev)
{
struct dpc* dpc = NULL;
- struct i2c_client *client;
dpc = kzalloc(sizeof(struct dpc), GFP_KERNEL);
if( NULL == dpc ) {
@@ -115,9 +128,7 @@ static int dpc_probe(struct saa7146_dev* dev)
}
/* loop through all i2c-devices on the bus and look who is there */
- list_for_each_entry(client, &dpc->i2c_adapter.clients, list)
- if( I2C_SAA7111A == client->addr )
- dpc->saa7111a = client;
+ device_for_each_child(&dpc->i2c_adapter.dev, dpc, dpc_check_clients);
/* check if all devices are present */
if( 0 == dpc->saa7111a ) {
diff --git a/drivers/media/video/ks0127.c b/drivers/media/video/ks0127.c
index b6cd21e6dab9..4895540be195 100644
--- a/drivers/media/video/ks0127.c
+++ b/drivers/media/video/ks0127.c
@@ -764,7 +764,6 @@ static struct i2c_client ks0127_client_tmpl =
.addr = 0,
.adapter = NULL,
.driver = &i2c_driver_ks0127,
- .usage_count = 0
};
static int ks0127_found_proc(struct i2c_adapter *adapter, int addr, int kind)
diff --git a/drivers/media/video/mxb.c b/drivers/media/video/mxb.c
index 98ad3092a079..add6d0d680be 100644
--- a/drivers/media/video/mxb.c
+++ b/drivers/media/video/mxb.c
@@ -149,10 +149,33 @@ struct mxb
static struct saa7146_extension extension;
+static int mxb_check_clients(struct device *dev, void *data)
+{
+ struct mxb* mxb = data;
+ struct i2c_client *client = i2c_verify_client(dev);
+
+ if( !client )
+ return 0;
+
+ if( I2C_ADDR_TEA6420_1 == client->addr )
+ mxb->tea6420_1 = client;
+ if( I2C_ADDR_TEA6420_2 == client->addr )
+ mxb->tea6420_2 = client;
+ if( I2C_TEA6415C_2 == client->addr )
+ mxb->tea6415c = client;
+ if( I2C_ADDR_TDA9840 == client->addr )
+ mxb->tda9840 = client;
+ if( I2C_SAA7111 == client->addr )
+ mxb->saa7111a = client;
+ if( 0x60 == client->addr )
+ mxb->tuner = client;
+
+ return 0;
+}
+
static int mxb_probe(struct saa7146_dev* dev)
{
struct mxb* mxb = NULL;
- struct i2c_client *client;
int result;
if ((result = request_module("saa7111")) < 0) {
@@ -195,20 +218,7 @@ static int mxb_probe(struct saa7146_dev* dev)
}
/* loop through all i2c-devices on the bus and look who is there */
- list_for_each_entry(client, &mxb->i2c_adapter.clients, list) {
- if( I2C_ADDR_TEA6420_1 == client->addr )
- mxb->tea6420_1 = client;
- if( I2C_ADDR_TEA6420_2 == client->addr )
- mxb->tea6420_2 = client;
- if( I2C_TEA6415C_2 == client->addr )
- mxb->tea6415c = client;
- if( I2C_ADDR_TDA9840 == client->addr )
- mxb->tda9840 = client;
- if( I2C_SAA7111 == client->addr )
- mxb->saa7111a = client;
- if( 0x60 == client->addr )
- mxb->tuner = client;
- }
+ device_for_each_child(&mxb->i2c_adapter.dev, mxb, mxb_check_clients);
/* check if all devices are present */
if( 0 == mxb->tea6420_1 || 0 == mxb->tea6420_2 || 0 == mxb->tea6415c
diff --git a/drivers/media/video/vino.c b/drivers/media/video/vino.c
index 9a03dc82c6ca..5bb75294b5aa 100644
--- a/drivers/media/video/vino.c
+++ b/drivers/media/video/vino.c
@@ -2589,11 +2589,7 @@ static int vino_acquire_input(struct vino_channel_settings *vcs)
/* First try D1 and then SAA7191 */
if (vino_drvdata->camera.driver
&& (vino_drvdata->camera.owner == VINO_NO_CHANNEL)) {
- if (i2c_use_client(vino_drvdata->camera.driver)) {
- ret = -ENODEV;
- goto out;
- }
-
+ i2c_use_client(vino_drvdata->camera.driver);
vino_drvdata->camera.owner = vcs->channel;
vcs->input = VINO_INPUT_D1;
vcs->data_norm = VINO_DATA_NORM_D1;
@@ -2602,11 +2598,7 @@ static int vino_acquire_input(struct vino_channel_settings *vcs)
int input, data_norm;
int saa7191_input;
- if (i2c_use_client(vino_drvdata->decoder.driver)) {
- ret = -ENODEV;
- goto out;
- }
-
+ i2c_use_client(vino_drvdata->decoder.driver);
input = VINO_INPUT_COMPOSITE;
saa7191_input = vino_get_saa7191_input(input);
@@ -2688,10 +2680,7 @@ static int vino_set_input(struct vino_channel_settings *vcs, int input)
}
if (vino_drvdata->decoder.owner == VINO_NO_CHANNEL) {
- if (i2c_use_client(vino_drvdata->decoder.driver)) {
- ret = -ENODEV;
- goto out;
- }
+ i2c_use_client(vino_drvdata->decoder.driver);
vino_drvdata->decoder.owner = vcs->channel;
}
@@ -2759,10 +2748,7 @@ static int vino_set_input(struct vino_channel_settings *vcs, int input)
}
if (vino_drvdata->camera.owner == VINO_NO_CHANNEL) {
- if (i2c_use_client(vino_drvdata->camera.driver)) {
- ret = -ENODEV;
- goto out;
- }
+ i2c_use_client(vino_drvdata->camera.driver);
vino_drvdata->camera.owner = vcs->channel;
}
OpenPOWER on IntegriCloud