diff --git a/drivers/media/video/au0828/au0828-cards.c b/drivers/media/video/au0828/au0828-cards.c
index 1b48eb5..1aabaa7 100644
--- a/drivers/media/video/au0828/au0828-cards.c
+++ b/drivers/media/video/au0828/au0828-cards.c
@@ -218,7 +218,8 @@
 		tun_setup.type           = dev->board.tuner_type;
 		tun_setup.addr           = dev->board.tuner_addr;
 		tun_setup.tuner_callback = au0828_tuner_callback;
-		au0828_call_i2c_clients(dev, TUNER_SET_TYPE_ADDR, &tun_setup);
+		v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_type_addr,
+				     &tun_setup);
 	}
 }
 
diff --git a/drivers/media/video/au0828/au0828-i2c.c b/drivers/media/video/au0828/au0828-i2c.c
index 1b110f3..f9a958d 100644
--- a/drivers/media/video/au0828/au0828-i2c.c
+++ b/drivers/media/video/au0828/au0828-i2c.c
@@ -299,33 +299,6 @@
 	return retval;
 }
 
-static int attach_inform(struct i2c_client *client)
-{
-	dprintk(1, "%s i2c attach [addr=0x%x,client=%s]\n",
-		client->driver->driver.name, client->addr, client->name);
-
-	if (!client->driver->command)
-		return 0;
-
-	return 0;
-}
-
-static int detach_inform(struct i2c_client *client)
-{
-	dprintk(1, "i2c detach [client=%s]\n", client->name);
-
-	return 0;
-}
-
-void au0828_call_i2c_clients(struct au0828_dev *dev,
-			      unsigned int cmd, void *arg)
-{
-	if (dev->i2c_rc != 0)
-		return;
-
-	i2c_clients_command(&dev->i2c_adap, cmd, arg);
-}
-
 static u32 au0828_functionality(struct i2c_adapter *adap)
 {
 	return I2C_FUNC_SMBUS_EMUL | I2C_FUNC_I2C;
@@ -343,8 +316,6 @@
 	.owner             = THIS_MODULE,
 	.id                = I2C_HW_B_AU0828,
 	.algo              = &au0828_i2c_algo_template,
-	.client_register   = attach_inform,
-	.client_unregister = detach_inform,
 };
 
 static struct i2c_client au0828_i2c_client_template = {
diff --git a/drivers/media/video/au0828/au0828-video.c b/drivers/media/video/au0828/au0828-video.c
index e194046..5de968e 100644
--- a/drivers/media/video/au0828/au0828-video.c
+++ b/drivers/media/video/au0828/au0828-video.c
@@ -996,7 +996,7 @@
 {
 	struct au0828_fh *fh = priv;
 	struct au0828_dev *dev = fh->dev;
-	au0828_call_i2c_clients(dev, VIDIOC_QUERYCTRL, qc);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, core, queryctrl, qc);
 	if (qc->type)
 		return 0;
 	else
@@ -1100,7 +1100,7 @@
 	   have to make the au0828 bridge adjust the size of its capture
 	   buffer, which is currently hardcoded at 720x480 */
 
-	au0828_call_i2c_clients(dev, VIDIOC_S_STD, norm);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_std, *norm);
 	return 0;
 }
 
@@ -1182,7 +1182,7 @@
 
 	route.input = AUVI_INPUT(index).vmux;
 	route.output = 0;
-	au0828_call_i2c_clients(dev, VIDIOC_INT_S_VIDEO_ROUTING, &route);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_routing, &route);
 
 	for (i = 0; i < AU0828_MAX_INPUT; i++) {
 		int enable = 0;
@@ -1206,8 +1206,7 @@
 	}
 
 	route.input = AUVI_INPUT(index).amux;
-	au0828_call_i2c_clients(dev, VIDIOC_INT_S_AUDIO_ROUTING,
-				&route);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, audio, s_routing, &route);
 	return 0;
 }
 
@@ -1246,7 +1245,7 @@
 	struct au0828_fh *fh = priv;
 	struct au0828_dev *dev = fh->dev;
 
-	au0828_call_i2c_clients(dev, VIDIOC_G_CTRL, ctrl);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, core, g_ctrl, ctrl);
 	return 0;
 
 }
@@ -1256,7 +1255,7 @@
 {
 	struct au0828_fh *fh = priv;
 	struct au0828_dev *dev = fh->dev;
-	au0828_call_i2c_clients(dev, VIDIOC_S_CTRL, ctrl);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_ctrl, ctrl);
 	return 0;
 }
 
@@ -1269,8 +1268,7 @@
 		return -EINVAL;
 
 	strcpy(t->name, "Auvitek tuner");
-
-	au0828_call_i2c_clients(dev, VIDIOC_G_TUNER, t);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_tuner, t);
 	return 0;
 }
 
@@ -1284,7 +1282,7 @@
 		return -EINVAL;
 
 	t->type = V4L2_TUNER_ANALOG_TV;
-	au0828_call_i2c_clients(dev, VIDIOC_S_TUNER, t);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_tuner, t);
 	dprintk(1, "VIDIOC_S_TUNER: signal = %x, afc = %x\n", t->signal,
 		t->afc);
 	return 0;
@@ -1315,7 +1313,7 @@
 
 	dev->ctrl_freq = freq->frequency;
 
-	au0828_call_i2c_clients(dev, VIDIOC_S_FREQUENCY, freq);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_frequency, freq);
 
 	au0828_analog_stream_reset(dev);
 
@@ -1335,7 +1333,7 @@
 		return 0;
 	}
 
-	au0828_call_i2c_clients(dev, VIDIOC_DBG_G_CHIP_IDENT, chip);
+	v4l2_device_call_all(&dev->v4l2_dev, 0, core, g_chip_ident, chip);
 	if (chip->ident == V4L2_IDENT_NONE)
 		return -EINVAL;
 
@@ -1369,7 +1367,6 @@
 {
 	struct au0828_fh *fh = priv;
 	struct au0828_dev *dev = fh->dev;
-	int b = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	int rc;
 
 	rc = check_dev(dev);
@@ -1378,7 +1375,7 @@
 
 	if (type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
 		au0828_analog_stream_enable(dev);
-		au0828_call_i2c_clients(dev, VIDIOC_STREAMON, &b);
+		v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 1);
 	}
 
 	mutex_lock(&dev->lock);
@@ -1396,7 +1393,6 @@
 {
 	struct au0828_fh *fh = priv;
 	struct au0828_dev *dev = fh->dev;
-	int b = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	int i;
 	int ret;
 	int rc;
@@ -1411,7 +1407,7 @@
 		return -EINVAL;
 
 	if (type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
-		au0828_call_i2c_clients(dev, VIDIOC_STREAMOFF, &b);
+		v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0);
 		ret = au0828_stream_interrupt(dev);
 		if (ret != 0)
 			return ret;
@@ -1439,7 +1435,7 @@
 
 	switch (reg->match.type) {
 	case V4L2_CHIP_MATCH_I2C_DRIVER:
-		au0828_call_i2c_clients(dev, VIDIOC_DBG_G_REGISTER, reg);
+		v4l2_device_call_all(&dev->v4l2_dev, 0, core, g_register, reg);
 		return 0;
 	default:
 		return -EINVAL;
@@ -1454,7 +1450,7 @@
 
 	switch (reg->match.type) {
 	case V4L2_CHIP_MATCH_I2C_DRIVER:
-		au0828_call_i2c_clients(dev, VIDIOC_DBG_S_REGISTER, reg);
+		v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_register, reg);
 		return 0;
 	default:
 		return -EINVAL;
diff --git a/drivers/media/video/au0828/au0828.h b/drivers/media/video/au0828/au0828.h
index 6d9bd454..6ed1a61 100644
--- a/drivers/media/video/au0828/au0828.h
+++ b/drivers/media/video/au0828/au0828.h
@@ -265,8 +265,6 @@
 /* au0828-i2c.c */
 extern int au0828_i2c_register(struct au0828_dev *dev);
 extern int au0828_i2c_unregister(struct au0828_dev *dev);
-extern void au0828_call_i2c_clients(struct au0828_dev *dev,
-	unsigned int cmd, void *arg);
 
 /* ----------------------------------------------------------- */
 /* au0828-video.c */
