You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'bkl_removal' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'bkl_removal' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: [media] uvcvideo: Convert to unlocked_ioctl [media] uvcvideo: Lock stream mutex when accessing format-related information [media] uvcvideo: Move mmap() handler to uvc_queue.c [media] uvcvideo: Move mutex lock/unlock inside uvc_free_buffers [media] uvcvideo: Lock controls mutex when querying menus [media] v4l2-dev: fix race condition [media] V4L: improve the BKL replacement heuristic [media] v4l2-dev: use mutex_lock_interruptible instead of plain mutex_lock [media] cx18: convert to unlocked_ioctl [media] radio-timb: convert to unlocked_ioctl [media] sh_vou: convert to unlocked_ioctl [media] cafe_ccic: replace ioctl by unlocked_ioctl [media] et61x251_core: trivial conversion to unlocked_ioctl [media] sn9c102: convert to unlocked_ioctl [media] BKL: trivial ioctl -> unlocked_ioctl video driver conversions [media] typhoon: convert to unlocked_ioctl [media] si4713: convert to unlocked_ioctl [media] tea5764: convert to unlocked_ioctl [media] cadet: use unlocked_ioctl [media] BKL: trivial BKL removal from V4L2 radio drivers
This commit is contained in:
@@ -361,7 +361,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations rtrack_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops rtrack_ioctl_ops = {
|
||||
@@ -412,13 +412,6 @@ static int __init rtrack_init(void)
|
||||
rt->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&rt->vdev, rt);
|
||||
|
||||
if (video_register_device(&rt->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(&rt->v4l2_dev);
|
||||
release_region(rt->io, 2);
|
||||
return -EINVAL;
|
||||
}
|
||||
v4l2_info(v4l2_dev, "AIMSlab RadioTrack/RadioReveal card driver.\n");
|
||||
|
||||
/* Set up the I/O locking */
|
||||
|
||||
mutex_init(&rt->lock);
|
||||
@@ -430,6 +423,13 @@ static int __init rtrack_init(void)
|
||||
sleep_delay(2000000); /* make sure it's totally down */
|
||||
outb(0xc0, rt->io); /* steady volume, mute card */
|
||||
|
||||
if (video_register_device(&rt->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(&rt->v4l2_dev);
|
||||
release_region(rt->io, 2);
|
||||
return -EINVAL;
|
||||
}
|
||||
v4l2_info(v4l2_dev, "AIMSlab RadioTrack/RadioReveal card driver.\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -324,7 +324,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations aztech_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops aztech_ioctl_ops = {
|
||||
@@ -375,6 +375,8 @@ static int __init aztech_init(void)
|
||||
az->vdev.ioctl_ops = &aztech_ioctl_ops;
|
||||
az->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&az->vdev, az);
|
||||
/* mute card - prevents noisy bootups */
|
||||
outb(0, az->io);
|
||||
|
||||
if (video_register_device(&az->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
@@ -383,8 +385,6 @@ static int __init aztech_init(void)
|
||||
}
|
||||
|
||||
v4l2_info(v4l2_dev, "Aztech radio card driver v1.00/19990224 rkroll@exploits.org\n");
|
||||
/* mute card - prevents noisy bootups */
|
||||
outb(0, az->io);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -328,11 +328,10 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo
|
||||
unsigned char readbuf[RDS_BUFFER];
|
||||
int i = 0;
|
||||
|
||||
mutex_lock(&dev->lock);
|
||||
if (dev->rdsstat == 0) {
|
||||
mutex_lock(&dev->lock);
|
||||
dev->rdsstat = 1;
|
||||
outb(0x80, dev->io); /* Select RDS fifo */
|
||||
mutex_unlock(&dev->lock);
|
||||
init_timer(&dev->readtimer);
|
||||
dev->readtimer.function = cadet_handler;
|
||||
dev->readtimer.data = (unsigned long)dev;
|
||||
@@ -340,12 +339,15 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo
|
||||
add_timer(&dev->readtimer);
|
||||
}
|
||||
if (dev->rdsin == dev->rdsout) {
|
||||
mutex_unlock(&dev->lock);
|
||||
if (file->f_flags & O_NONBLOCK)
|
||||
return -EWOULDBLOCK;
|
||||
interruptible_sleep_on(&dev->read_queue);
|
||||
mutex_lock(&dev->lock);
|
||||
}
|
||||
while (i < count && dev->rdsin != dev->rdsout)
|
||||
readbuf[i++] = dev->rdsbuf[dev->rdsout++];
|
||||
mutex_unlock(&dev->lock);
|
||||
|
||||
if (copy_to_user(data, readbuf, i))
|
||||
return -EFAULT;
|
||||
@@ -525,9 +527,11 @@ static int cadet_open(struct file *file)
|
||||
{
|
||||
struct cadet *dev = video_drvdata(file);
|
||||
|
||||
mutex_lock(&dev->lock);
|
||||
dev->users++;
|
||||
if (1 == dev->users)
|
||||
init_waitqueue_head(&dev->read_queue);
|
||||
mutex_unlock(&dev->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -535,11 +539,13 @@ static int cadet_release(struct file *file)
|
||||
{
|
||||
struct cadet *dev = video_drvdata(file);
|
||||
|
||||
mutex_lock(&dev->lock);
|
||||
dev->users--;
|
||||
if (0 == dev->users) {
|
||||
del_timer_sync(&dev->readtimer);
|
||||
dev->rdsstat = 0;
|
||||
}
|
||||
mutex_unlock(&dev->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -559,7 +565,7 @@ static const struct v4l2_file_operations cadet_fops = {
|
||||
.open = cadet_open,
|
||||
.release = cadet_release,
|
||||
.read = cadet_read,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
.poll = cadet_poll,
|
||||
};
|
||||
|
||||
|
||||
@@ -361,7 +361,7 @@ MODULE_DEVICE_TABLE(pci, gemtek_pci_id);
|
||||
|
||||
static const struct v4l2_file_operations gemtek_pci_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops gemtek_pci_ioctl_ops = {
|
||||
@@ -422,11 +422,11 @@ static int __devinit gemtek_pci_probe(struct pci_dev *pdev, const struct pci_dev
|
||||
card->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&card->vdev, card);
|
||||
|
||||
gemtek_pci_mute(card);
|
||||
|
||||
if (video_register_device(&card->vdev, VFL_TYPE_RADIO, nr_radio) < 0)
|
||||
goto err_video;
|
||||
|
||||
gemtek_pci_mute(card);
|
||||
|
||||
v4l2_info(v4l2_dev, "Gemtek PCI Radio (rev. %d) found at 0x%04x-0x%04x.\n",
|
||||
pdev->revision, card->iobase, card->iobase + card->length - 1);
|
||||
|
||||
|
||||
@@ -378,7 +378,7 @@ static int gemtek_probe(struct gemtek *gt)
|
||||
|
||||
static const struct v4l2_file_operations gemtek_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static int vidioc_querycap(struct file *file, void *priv,
|
||||
@@ -577,12 +577,6 @@ static int __init gemtek_init(void)
|
||||
gt->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(>->vdev, gt);
|
||||
|
||||
if (video_register_device(>->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
release_region(gt->io, 1);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
/* Set defaults */
|
||||
gt->lastfreq = GEMTEK_LOWFREQ;
|
||||
gt->bu2614data = 0;
|
||||
@@ -590,6 +584,12 @@ static int __init gemtek_init(void)
|
||||
if (initmute)
|
||||
gemtek_mute(gt);
|
||||
|
||||
if (video_register_device(>->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
release_region(gt->io, 1);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -299,7 +299,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations maestro_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops maestro_ioctl_ops = {
|
||||
@@ -383,22 +383,20 @@ static int __devinit maestro_probe(struct pci_dev *pdev,
|
||||
dev->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&dev->vdev, dev);
|
||||
|
||||
if (!radio_power_on(dev)) {
|
||||
retval = -EIO;
|
||||
goto errfr1;
|
||||
}
|
||||
|
||||
retval = video_register_device(&dev->vdev, VFL_TYPE_RADIO, radio_nr);
|
||||
if (retval) {
|
||||
v4l2_err(v4l2_dev, "can't register video device!\n");
|
||||
goto errfr1;
|
||||
}
|
||||
|
||||
if (!radio_power_on(dev)) {
|
||||
retval = -EIO;
|
||||
goto errunr;
|
||||
}
|
||||
|
||||
v4l2_info(v4l2_dev, "version " DRIVER_VERSION "\n");
|
||||
|
||||
return 0;
|
||||
errunr:
|
||||
video_unregister_device(&dev->vdev);
|
||||
errfr1:
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
errfr:
|
||||
|
||||
@@ -346,7 +346,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations maxiradio_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops maxiradio_ioctl_ops = {
|
||||
|
||||
@@ -33,6 +33,7 @@ struct pcm20 {
|
||||
unsigned long freq;
|
||||
int muted;
|
||||
struct snd_miro_aci *aci;
|
||||
struct mutex lock;
|
||||
};
|
||||
|
||||
static struct pcm20 pcm20_card = {
|
||||
@@ -72,7 +73,7 @@ static int pcm20_setfreq(struct pcm20 *dev, unsigned long freq)
|
||||
|
||||
static const struct v4l2_file_operations pcm20_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static int vidioc_querycap(struct file *file, void *priv,
|
||||
@@ -229,7 +230,7 @@ static int __init pcm20_init(void)
|
||||
return -ENODEV;
|
||||
}
|
||||
strlcpy(v4l2_dev->name, "miropcm20", sizeof(v4l2_dev->name));
|
||||
|
||||
mutex_init(&dev->lock);
|
||||
|
||||
res = v4l2_device_register(NULL, v4l2_dev);
|
||||
if (res < 0) {
|
||||
@@ -242,6 +243,7 @@ static int __init pcm20_init(void)
|
||||
dev->vdev.fops = &pcm20_fops;
|
||||
dev->vdev.ioctl_ops = &pcm20_ioctl_ops;
|
||||
dev->vdev.release = video_device_release_empty;
|
||||
dev->vdev.lock = &dev->lock;
|
||||
video_set_drvdata(&dev->vdev, dev);
|
||||
|
||||
if (video_register_device(&dev->vdev, VFL_TYPE_RADIO, radio_nr) < 0)
|
||||
|
||||
@@ -266,7 +266,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations rtrack2_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops rtrack2_ioctl_ops = {
|
||||
@@ -315,6 +315,10 @@ static int __init rtrack2_init(void)
|
||||
dev->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&dev->vdev, dev);
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
outb(1, dev->io);
|
||||
dev->muted = 1;
|
||||
|
||||
mutex_init(&dev->lock);
|
||||
if (video_register_device(&dev->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
@@ -324,10 +328,6 @@ static int __init rtrack2_init(void)
|
||||
|
||||
v4l2_info(v4l2_dev, "AIMSlab Radiotrack II card driver.\n");
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
outb(1, dev->io);
|
||||
dev->muted = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations fmi_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops fmi_ioctl_ops = {
|
||||
@@ -382,6 +382,9 @@ static int __init fmi_init(void)
|
||||
|
||||
mutex_init(&fmi->lock);
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
fmi_mute(fmi);
|
||||
|
||||
if (video_register_device(&fmi->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
release_region(fmi->io, 2);
|
||||
@@ -391,8 +394,6 @@ static int __init fmi_init(void)
|
||||
}
|
||||
|
||||
v4l2_info(v4l2_dev, "card driver at 0x%x\n", fmi->io);
|
||||
/* mute card - prevents noisy bootups */
|
||||
fmi_mute(fmi);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -376,7 +376,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations fmr2_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops fmr2_ioctl_ops = {
|
||||
@@ -424,6 +424,10 @@ static int __init fmr2_init(void)
|
||||
fmr2->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&fmr2->vdev, fmr2);
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
fmr2_mute(fmr2->io);
|
||||
fmr2_product_info(fmr2);
|
||||
|
||||
if (video_register_device(&fmr2->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
release_region(fmr2->io, 2);
|
||||
@@ -431,11 +435,6 @@ static int __init fmr2_init(void)
|
||||
}
|
||||
|
||||
v4l2_info(v4l2_dev, "SF16FMR2 radio card driver at 0x%x.\n", fmr2->io);
|
||||
/* mute card - prevents noisy bootups */
|
||||
mutex_lock(&fmr2->lock);
|
||||
fmr2_mute(fmr2->io);
|
||||
fmr2_product_info(fmr2);
|
||||
mutex_unlock(&fmr2->lock);
|
||||
debug_print((KERN_DEBUG "card_type %d\n", fmr2->card_type));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,8 @@ struct radio_si4713_device {
|
||||
/* radio_si4713_fops - file operations interface */
|
||||
static const struct v4l2_file_operations radio_si4713_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
/* Note: locking is done at the subdev level in the i2c driver. */
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
/* Video4Linux Interface */
|
||||
|
||||
@@ -142,7 +142,6 @@ struct tea5764_device {
|
||||
struct video_device *videodev;
|
||||
struct tea5764_regs regs;
|
||||
struct mutex mutex;
|
||||
int users;
|
||||
};
|
||||
|
||||
/* I2C code related */
|
||||
@@ -458,41 +457,10 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tea5764_open(struct file *file)
|
||||
{
|
||||
/* Currently we support only one device */
|
||||
struct tea5764_device *radio = video_drvdata(file);
|
||||
|
||||
mutex_lock(&radio->mutex);
|
||||
/* Only exclusive access */
|
||||
if (radio->users) {
|
||||
mutex_unlock(&radio->mutex);
|
||||
return -EBUSY;
|
||||
}
|
||||
radio->users++;
|
||||
mutex_unlock(&radio->mutex);
|
||||
file->private_data = radio;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tea5764_close(struct file *file)
|
||||
{
|
||||
struct tea5764_device *radio = video_drvdata(file);
|
||||
|
||||
if (!radio)
|
||||
return -ENODEV;
|
||||
mutex_lock(&radio->mutex);
|
||||
radio->users--;
|
||||
mutex_unlock(&radio->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* File system interface */
|
||||
static const struct v4l2_file_operations tea5764_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = tea5764_open,
|
||||
.release = tea5764_close,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops tea5764_ioctl_ops = {
|
||||
@@ -527,7 +495,7 @@ static int __devinit tea5764_i2c_probe(struct i2c_client *client,
|
||||
int ret;
|
||||
|
||||
PDEBUG("probe");
|
||||
radio = kmalloc(sizeof(struct tea5764_device), GFP_KERNEL);
|
||||
radio = kzalloc(sizeof(struct tea5764_device), GFP_KERNEL);
|
||||
if (!radio)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -555,12 +523,7 @@ static int __devinit tea5764_i2c_probe(struct i2c_client *client,
|
||||
|
||||
i2c_set_clientdata(client, radio);
|
||||
video_set_drvdata(radio->videodev, radio);
|
||||
|
||||
ret = video_register_device(radio->videodev, VFL_TYPE_RADIO, radio_nr);
|
||||
if (ret < 0) {
|
||||
PWARN("Could not register video device!");
|
||||
goto errrel;
|
||||
}
|
||||
radio->videodev->lock = &radio->mutex;
|
||||
|
||||
/* initialize and power off the chip */
|
||||
tea5764_i2c_read(radio);
|
||||
@@ -568,6 +531,12 @@ static int __devinit tea5764_i2c_probe(struct i2c_client *client,
|
||||
tea5764_mute(radio, 1);
|
||||
tea5764_power_down(radio);
|
||||
|
||||
ret = video_register_device(radio->videodev, VFL_TYPE_RADIO, radio_nr);
|
||||
if (ret < 0) {
|
||||
PWARN("Could not register video device!");
|
||||
goto errrel;
|
||||
}
|
||||
|
||||
PINFO("registered.");
|
||||
return 0;
|
||||
errrel:
|
||||
|
||||
@@ -338,7 +338,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations terratec_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops terratec_ioctl_ops = {
|
||||
@@ -389,6 +389,9 @@ static int __init terratec_init(void)
|
||||
|
||||
mutex_init(&tt->lock);
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
tt_write_vol(tt, 0);
|
||||
|
||||
if (video_register_device(&tt->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(&tt->v4l2_dev);
|
||||
release_region(tt->io, 2);
|
||||
@@ -396,9 +399,6 @@ static int __init terratec_init(void)
|
||||
}
|
||||
|
||||
v4l2_info(v4l2_dev, "TERRATEC ActivRadio Standalone card driver.\n");
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
tt_write_vol(tt, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ struct timbradio {
|
||||
struct v4l2_subdev *sd_dsp;
|
||||
struct video_device video_dev;
|
||||
struct v4l2_device v4l2_dev;
|
||||
struct mutex lock;
|
||||
};
|
||||
|
||||
|
||||
@@ -142,7 +143,7 @@ static const struct v4l2_ioctl_ops timbradio_ioctl_ops = {
|
||||
|
||||
static const struct v4l2_file_operations timbradio_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static int __devinit timbradio_probe(struct platform_device *pdev)
|
||||
@@ -164,6 +165,7 @@ static int __devinit timbradio_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
tr->pdata = *pdata;
|
||||
mutex_init(&tr->lock);
|
||||
|
||||
strlcpy(tr->video_dev.name, "Timberdale Radio",
|
||||
sizeof(tr->video_dev.name));
|
||||
@@ -171,6 +173,7 @@ static int __devinit timbradio_probe(struct platform_device *pdev)
|
||||
tr->video_dev.ioctl_ops = &timbradio_ioctl_ops;
|
||||
tr->video_dev.release = video_device_release_empty;
|
||||
tr->video_dev.minor = -1;
|
||||
tr->video_dev.lock = &tr->lock;
|
||||
|
||||
strlcpy(tr->v4l2_dev.name, DRIVER_NAME, sizeof(tr->v4l2_dev.name));
|
||||
err = v4l2_device_register(NULL, &tr->v4l2_dev);
|
||||
|
||||
@@ -344,7 +344,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
|
||||
static const struct v4l2_file_operations trust_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops trust_ioctl_ops = {
|
||||
@@ -396,14 +396,6 @@ static int __init trust_init(void)
|
||||
tr->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&tr->vdev, tr);
|
||||
|
||||
if (video_register_device(&tr->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
release_region(tr->io, 2);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
v4l2_info(v4l2_dev, "Trust FM Radio card driver v1.0.\n");
|
||||
|
||||
write_i2c(tr, 2, TDA7318_ADDR, 0x80); /* speaker att. LF = 0 dB */
|
||||
write_i2c(tr, 2, TDA7318_ADDR, 0xa0); /* speaker att. RF = 0 dB */
|
||||
write_i2c(tr, 2, TDA7318_ADDR, 0xc0); /* speaker att. LR = 0 dB */
|
||||
@@ -418,6 +410,14 @@ static int __init trust_init(void)
|
||||
/* mute card - prevents noisy bootups */
|
||||
tr_setmute(tr, 1);
|
||||
|
||||
if (video_register_device(&tr->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
release_region(tr->io, 2);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
v4l2_info(v4l2_dev, "Trust FM Radio card driver v1.0.\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -317,7 +317,7 @@ static int vidioc_log_status(struct file *file, void *priv)
|
||||
|
||||
static const struct v4l2_file_operations typhoon_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops typhoon_ioctl_ops = {
|
||||
@@ -344,18 +344,18 @@ static int __init typhoon_init(void)
|
||||
|
||||
strlcpy(v4l2_dev->name, "typhoon", sizeof(v4l2_dev->name));
|
||||
dev->io = io;
|
||||
dev->curfreq = dev->mutefreq = mutefreq;
|
||||
|
||||
if (dev->io == -1) {
|
||||
v4l2_err(v4l2_dev, "You must set an I/O address with io=0x316 or io=0x336\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (dev->mutefreq < 87000 || dev->mutefreq > 108500) {
|
||||
if (mutefreq < 87000 || mutefreq > 108500) {
|
||||
v4l2_err(v4l2_dev, "You must set a frequency (in kHz) used when muting the card,\n");
|
||||
v4l2_err(v4l2_dev, "e.g. with \"mutefreq=87500\" (87000 <= mutefreq <= 108500)\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
dev->curfreq = dev->mutefreq = mutefreq << 4;
|
||||
|
||||
mutex_init(&dev->lock);
|
||||
if (!request_region(dev->io, 8, "typhoon")) {
|
||||
@@ -378,17 +378,17 @@ static int __init typhoon_init(void)
|
||||
dev->vdev.ioctl_ops = &typhoon_ioctl_ops;
|
||||
dev->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&dev->vdev, dev);
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
typhoon_mute(dev);
|
||||
|
||||
if (video_register_device(&dev->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(&dev->v4l2_dev);
|
||||
release_region(dev->io, 8);
|
||||
return -EINVAL;
|
||||
}
|
||||
v4l2_info(v4l2_dev, "port 0x%x.\n", dev->io);
|
||||
v4l2_info(v4l2_dev, "mute frequency is %lu kHz.\n", dev->mutefreq);
|
||||
dev->mutefreq <<= 4;
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
typhoon_mute(dev);
|
||||
v4l2_info(v4l2_dev, "mute frequency is %lu kHz.\n", mutefreq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -377,7 +377,7 @@ static int vidioc_s_audio(struct file *file, void *priv,
|
||||
static const struct v4l2_file_operations zoltrix_fops =
|
||||
{
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops zoltrix_ioctl_ops = {
|
||||
@@ -424,20 +424,6 @@ static int __init zoltrix_init(void)
|
||||
return res;
|
||||
}
|
||||
|
||||
strlcpy(zol->vdev.name, v4l2_dev->name, sizeof(zol->vdev.name));
|
||||
zol->vdev.v4l2_dev = v4l2_dev;
|
||||
zol->vdev.fops = &zoltrix_fops;
|
||||
zol->vdev.ioctl_ops = &zoltrix_ioctl_ops;
|
||||
zol->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&zol->vdev, zol);
|
||||
|
||||
if (video_register_device(&zol->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
release_region(zol->io, 2);
|
||||
return -EINVAL;
|
||||
}
|
||||
v4l2_info(v4l2_dev, "Zoltrix Radio Plus card driver.\n");
|
||||
|
||||
mutex_init(&zol->lock);
|
||||
|
||||
/* mute card - prevents noisy bootups */
|
||||
@@ -452,6 +438,20 @@ static int __init zoltrix_init(void)
|
||||
zol->curvol = 0;
|
||||
zol->stereo = 1;
|
||||
|
||||
strlcpy(zol->vdev.name, v4l2_dev->name, sizeof(zol->vdev.name));
|
||||
zol->vdev.v4l2_dev = v4l2_dev;
|
||||
zol->vdev.fops = &zoltrix_fops;
|
||||
zol->vdev.ioctl_ops = &zoltrix_ioctl_ops;
|
||||
zol->vdev.release = video_device_release_empty;
|
||||
video_set_drvdata(&zol->vdev, zol);
|
||||
|
||||
if (video_register_device(&zol->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {
|
||||
v4l2_device_unregister(v4l2_dev);
|
||||
release_region(zol->io, 2);
|
||||
return -EINVAL;
|
||||
}
|
||||
v4l2_info(v4l2_dev, "Zoltrix Radio Plus card driver.\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -712,7 +712,7 @@ static int ar_initialize(struct ar *ar)
|
||||
static const struct v4l2_file_operations ar_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.read = ar_read,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
};
|
||||
|
||||
static const struct v4l2_ioctl_ops ar_ioctl_ops = {
|
||||
|
||||
@@ -860,7 +860,7 @@ static ssize_t qcam_read(struct file *file, char __user *buf,
|
||||
|
||||
static const struct v4l2_file_operations qcam_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.ioctl = video_ioctl2,
|
||||
.unlocked_ioctl = video_ioctl2,
|
||||
.read = qcam_read,
|
||||
};
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user