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;
.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 = {
{
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
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;
}
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;
}
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;
}
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;
}
{
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;
}
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;
}
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;
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);
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;
{
struct au0828_fh *fh = priv;
struct au0828_dev *dev = fh->dev;
- int b = V4L2_BUF_TYPE_VIDEO_CAPTURE;
int rc;
rc = check_dev(dev);
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);
{
struct au0828_fh *fh = priv;
struct au0828_dev *dev = fh->dev;
- int b = V4L2_BUF_TYPE_VIDEO_CAPTURE;
int i;
int ret;
int rc;
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;
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;
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;