Commit 2689d3dc authored by Devin Heitmueller's avatar Devin Heitmueller Committed by Mauro Carvalho Chehab

V4L/DVB (11088): au0828: finish videodev/subdev conversion

Per Hans Verkuil <hverkuil@xs4all.nl> instruction, remove the deprecated
attach_inform/detach_inform routines, and convert over the i2c calls to
subdev calls.

Thanks to Hans Verkuil <hverkuil@xs4all.nl> for providing feedback on the
au0828 analog support.
Signed-off-by: default avatarDevin Heitmueller <dheitmueller@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent dd27ade7
...@@ -218,7 +218,8 @@ void au0828_card_setup(struct au0828_dev *dev) ...@@ -218,7 +218,8 @@ void au0828_card_setup(struct au0828_dev *dev)
tun_setup.type = dev->board.tuner_type; tun_setup.type = dev->board.tuner_type;
tun_setup.addr = dev->board.tuner_addr; tun_setup.addr = dev->board.tuner_addr;
tun_setup.tuner_callback = au0828_tuner_callback; 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);
} }
} }
......
...@@ -299,33 +299,6 @@ static int i2c_xfer(struct i2c_adapter *i2c_adap, ...@@ -299,33 +299,6 @@ static int i2c_xfer(struct i2c_adapter *i2c_adap,
return retval; 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) static u32 au0828_functionality(struct i2c_adapter *adap)
{ {
return I2C_FUNC_SMBUS_EMUL | I2C_FUNC_I2C; return I2C_FUNC_SMBUS_EMUL | I2C_FUNC_I2C;
...@@ -343,8 +316,6 @@ static struct i2c_adapter au0828_i2c_adap_template = { ...@@ -343,8 +316,6 @@ static struct i2c_adapter au0828_i2c_adap_template = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.id = I2C_HW_B_AU0828, .id = I2C_HW_B_AU0828,
.algo = &au0828_i2c_algo_template, .algo = &au0828_i2c_algo_template,
.client_register = attach_inform,
.client_unregister = detach_inform,
}; };
static struct i2c_client au0828_i2c_client_template = { static struct i2c_client au0828_i2c_client_template = {
......
...@@ -996,7 +996,7 @@ static int vidioc_queryctrl(struct file *file, void *priv, ...@@ -996,7 +996,7 @@ static int vidioc_queryctrl(struct file *file, void *priv,
{ {
struct au0828_fh *fh = priv; struct au0828_fh *fh = priv;
struct au0828_dev *dev = fh->dev; 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) if (qc->type)
return 0; return 0;
else else
...@@ -1100,7 +1100,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id * norm) ...@@ -1100,7 +1100,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id * norm)
have to make the au0828 bridge adjust the size of its capture have to make the au0828 bridge adjust the size of its capture
buffer, which is currently hardcoded at 720x480 */ 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; return 0;
} }
...@@ -1182,7 +1182,7 @@ static int vidioc_s_input(struct file *file, void *priv, unsigned int index) ...@@ -1182,7 +1182,7 @@ static int vidioc_s_input(struct file *file, void *priv, unsigned int index)
route.input = AUVI_INPUT(index).vmux; route.input = AUVI_INPUT(index).vmux;
route.output = 0; 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++) { for (i = 0; i < AU0828_MAX_INPUT; i++) {
int enable = 0; int enable = 0;
...@@ -1206,8 +1206,7 @@ static int vidioc_s_input(struct file *file, void *priv, unsigned int index) ...@@ -1206,8 +1206,7 @@ static int vidioc_s_input(struct file *file, void *priv, unsigned int index)
} }
route.input = AUVI_INPUT(index).amux; route.input = AUVI_INPUT(index).amux;
au0828_call_i2c_clients(dev, VIDIOC_INT_S_AUDIO_ROUTING, v4l2_device_call_all(&dev->v4l2_dev, 0, audio, s_routing, &route);
&route);
return 0; return 0;
} }
...@@ -1246,7 +1245,7 @@ static int vidioc_g_ctrl(struct file *file, void *priv, ...@@ -1246,7 +1245,7 @@ static int vidioc_g_ctrl(struct file *file, void *priv,
struct au0828_fh *fh = priv; struct au0828_fh *fh = priv;
struct au0828_dev *dev = fh->dev; 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; return 0;
} }
...@@ -1256,7 +1255,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv, ...@@ -1256,7 +1255,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
{ {
struct au0828_fh *fh = priv; struct au0828_fh *fh = priv;
struct au0828_dev *dev = fh->dev; 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 0;
} }
...@@ -1269,8 +1268,7 @@ static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *t) ...@@ -1269,8 +1268,7 @@ static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *t)
return -EINVAL; return -EINVAL;
strcpy(t->name, "Auvitek tuner"); strcpy(t->name, "Auvitek tuner");
v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_tuner, t);
au0828_call_i2c_clients(dev, VIDIOC_G_TUNER, t);
return 0; return 0;
} }
...@@ -1284,7 +1282,7 @@ static int vidioc_s_tuner(struct file *file, void *priv, ...@@ -1284,7 +1282,7 @@ static int vidioc_s_tuner(struct file *file, void *priv,
return -EINVAL; return -EINVAL;
t->type = V4L2_TUNER_ANALOG_TV; 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, dprintk(1, "VIDIOC_S_TUNER: signal = %x, afc = %x\n", t->signal,
t->afc); t->afc);
return 0; return 0;
...@@ -1315,7 +1313,7 @@ static int vidioc_s_frequency(struct file *file, void *priv, ...@@ -1315,7 +1313,7 @@ static int vidioc_s_frequency(struct file *file, void *priv,
dev->ctrl_freq = freq->frequency; 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); au0828_analog_stream_reset(dev);
...@@ -1335,7 +1333,7 @@ static int vidioc_g_chip_ident(struct file *file, void *priv, ...@@ -1335,7 +1333,7 @@ static int vidioc_g_chip_ident(struct file *file, void *priv,
return 0; 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) if (chip->ident == V4L2_IDENT_NONE)
return -EINVAL; return -EINVAL;
...@@ -1369,7 +1367,6 @@ static int vidioc_streamon(struct file *file, void *priv, ...@@ -1369,7 +1367,6 @@ static int vidioc_streamon(struct file *file, void *priv,
{ {
struct au0828_fh *fh = priv; struct au0828_fh *fh = priv;
struct au0828_dev *dev = fh->dev; struct au0828_dev *dev = fh->dev;
int b = V4L2_BUF_TYPE_VIDEO_CAPTURE;
int rc; int rc;
rc = check_dev(dev); rc = check_dev(dev);
...@@ -1378,7 +1375,7 @@ static int vidioc_streamon(struct file *file, void *priv, ...@@ -1378,7 +1375,7 @@ static int vidioc_streamon(struct file *file, void *priv,
if (type == V4L2_BUF_TYPE_VIDEO_CAPTURE) { if (type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
au0828_analog_stream_enable(dev); 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); mutex_lock(&dev->lock);
...@@ -1396,7 +1393,6 @@ static int vidioc_streamoff(struct file *file, void *priv, ...@@ -1396,7 +1393,6 @@ static int vidioc_streamoff(struct file *file, void *priv,
{ {
struct au0828_fh *fh = priv; struct au0828_fh *fh = priv;
struct au0828_dev *dev = fh->dev; struct au0828_dev *dev = fh->dev;
int b = V4L2_BUF_TYPE_VIDEO_CAPTURE;
int i; int i;
int ret; int ret;
int rc; int rc;
...@@ -1411,7 +1407,7 @@ static int vidioc_streamoff(struct file *file, void *priv, ...@@ -1411,7 +1407,7 @@ static int vidioc_streamoff(struct file *file, void *priv,
return -EINVAL; return -EINVAL;
if (type == V4L2_BUF_TYPE_VIDEO_CAPTURE) { 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); ret = au0828_stream_interrupt(dev);
if (ret != 0) if (ret != 0)
return ret; return ret;
...@@ -1439,7 +1435,7 @@ static int vidioc_g_register(struct file *file, void *priv, ...@@ -1439,7 +1435,7 @@ static int vidioc_g_register(struct file *file, void *priv,
switch (reg->match.type) { switch (reg->match.type) {
case V4L2_CHIP_MATCH_I2C_DRIVER: 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; return 0;
default: default:
return -EINVAL; return -EINVAL;
...@@ -1454,7 +1450,7 @@ static int vidioc_s_register(struct file *file, void *priv, ...@@ -1454,7 +1450,7 @@ static int vidioc_s_register(struct file *file, void *priv,
switch (reg->match.type) { switch (reg->match.type) {
case V4L2_CHIP_MATCH_I2C_DRIVER: 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; return 0;
default: default:
return -EINVAL; return -EINVAL;
......
...@@ -265,8 +265,6 @@ extern void au0828_card_setup(struct au0828_dev *dev); ...@@ -265,8 +265,6 @@ extern void au0828_card_setup(struct au0828_dev *dev);
/* au0828-i2c.c */ /* au0828-i2c.c */
extern int au0828_i2c_register(struct au0828_dev *dev); extern int au0828_i2c_register(struct au0828_dev *dev);
extern int au0828_i2c_unregister(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 */ /* au0828-video.c */
......
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