Em 26-11-2010 07:54, Richard RÃjfors escreveu: > This patch adds an open function to the radio-timb, which adds the DSP an tuner > to the I2C bus. > > Signed-off-by: Richard RÃjfors <richard.rojfors@xxxxxxxxxxxxxx> > --- > diff --git a/drivers/media/radio/radio-timb.c b/drivers/media/radio/radio-timb.c > index a185610..2b7abe2 100644 > --- a/drivers/media/radio/radio-timb.c > +++ b/drivers/media/radio/radio-timb.c > @@ -141,9 +141,50 @@ static const struct v4l2_ioctl_ops timbradio_ioctl_ops = { > .vidioc_s_ctrl = timbradio_vidioc_s_ctrl > }; > > +static int timbradio_fops_open(struct file *file) > +{ > + struct timbradio *tr = video_drvdata(file); > + struct i2c_adapter *adapt; > + int err = 0; > + > + mutex_lock(&tr->lock); > + > + /* find the I2C bus */ > + adapt = i2c_get_adapter(tr->pdata.i2c_adapter); > + if (!adapt) { > + printk(KERN_ERR DRIVER_NAME": No I2C bus\n"); > + err = -ENODEV; > + goto out; > + } > + > + /* now find the tuner and dsp */ > + if (!tr->sd_dsp) > + tr->sd_dsp = v4l2_i2c_new_subdev_board(&tr->v4l2_dev, adapt, > + tr->pdata.dsp.module_name, tr->pdata.dsp.info, NULL); > + > + if (!tr->sd_tuner) > + tr->sd_tuner = v4l2_i2c_new_subdev_board(&tr->v4l2_dev, adapt, > + tr->pdata.tuner.module_name, tr->pdata.tuner.info, > + NULL); Why are you doing it at open? It would be better to attach the I2C devices during the device probing time. > + > + i2c_put_adapter(adapt); > + > + if (!tr->sd_tuner || !tr->sd_dsp) { > + printk(KERN_ERR DRIVER_NAME > + ": Failed to get tuner or DSP\n"); > + err = -ENODEV; > + goto out; > + } > + > +out: > + mutex_unlock(&tr->lock); > + return err; > +} > + > static const struct v4l2_file_operations timbradio_fops = { > .owner = THIS_MODULE, > .unlocked_ioctl = video_ioctl2, > + .open = timbradio_fops_open, > }; > > static int __devinit timbradio_probe(struct platform_device *pdev) > > -- > To unsubscribe from this list: send the line "unsubscribe linux-media" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html