Skip to content

Commit

Permalink
[media] typhoon: convert to unlocked_ioctl
Browse files Browse the repository at this point in the history
Convert the typhoon driver from ioctl to unlocked_ioctl.

When doing this I noticed a bug where curfreq was not initialized correctly
to mutefreq (it wasn't multiplied by 16).

The initialization is now also done before the device node is created.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Dec 1, 2010
1 parent 725ea8c commit d2c998f
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions drivers/media/radio/radio-typhoon.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand All @@ -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")) {
Expand All @@ -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;
}
Expand Down

0 comments on commit d2c998f

Please sign in to comment.