Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 137836
b: refs/heads/master
c: a5d6947
h: refs/heads/master
v: v3
  • Loading branch information
Alexey Klimov authored and Mauro Carvalho Chehab committed Mar 30, 2009
1 parent 43ada50 commit fee0d25
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d563399859bcc984aa2df38df62851163b1690b3
refs/heads/master: a5d6947515cc489001938339a8de9c000b2f8aba
36 changes: 25 additions & 11 deletions trunk/drivers/media/radio/radio-mr800.c
Original file line number Diff line number Diff line change
Expand Up @@ -375,13 +375,15 @@ static int vidioc_s_frequency(struct file *file, void *priv,
struct v4l2_frequency *f)
{
struct amradio_device *radio = video_get_drvdata(video_devdata(file));
int retval;

/* safety check */
if (radio->removed)
return -EIO;

radio->curfreq = f->frequency;
if (amradio_setfreq(radio, radio->curfreq) < 0)
retval = amradio_setfreq(radio, radio->curfreq);
if (retval < 0)
amradio_dev_warn(&radio->videodev->dev,
"set frequency failed\n");
return 0;
Expand Down Expand Up @@ -440,6 +442,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
struct v4l2_control *ctrl)
{
struct amradio_device *radio = video_get_drvdata(video_devdata(file));
int retval;

/* safety check */
if (radio->removed)
Expand All @@ -448,13 +451,15 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
switch (ctrl->id) {
case V4L2_CID_AUDIO_MUTE:
if (ctrl->value) {
if (amradio_stop(radio) < 0) {
retval = amradio_stop(radio);
if (retval < 0) {
amradio_dev_warn(&radio->videodev->dev,
"amradio_stop failed\n");
return -1;
}
} else {
if (amradio_start(radio) < 0) {
retval = amradio_start(radio);
if (retval < 0) {
amradio_dev_warn(&radio->videodev->dev,
"amradio_start failed\n");
return -1;
Expand Down Expand Up @@ -505,20 +510,24 @@ static int vidioc_s_input(struct file *filp, void *priv, unsigned int i)
static int usb_amradio_open(struct file *file)
{
struct amradio_device *radio = video_get_drvdata(video_devdata(file));
int retval;

lock_kernel();

radio->users = 1;
radio->muted = 1;

if (amradio_start(radio) < 0) {
retval = amradio_start(radio);
if (retval < 0) {
amradio_dev_warn(&radio->videodev->dev,
"radio did not start up properly\n");
radio->users = 0;
unlock_kernel();
return -EIO;
}
if (amradio_setfreq(radio, radio->curfreq) < 0)

retval = amradio_setfreq(radio, radio->curfreq);
if (retval < 0)
amradio_dev_warn(&radio->videodev->dev,
"set frequency failed\n");

Expand Down Expand Up @@ -551,8 +560,10 @@ static int usb_amradio_close(struct file *file)
static int usb_amradio_suspend(struct usb_interface *intf, pm_message_t message)
{
struct amradio_device *radio = usb_get_intfdata(intf);
int retval;

if (amradio_stop(radio) < 0)
retval = amradio_stop(radio);
if (retval < 0)
dev_warn(&intf->dev, "amradio_stop failed\n");

dev_info(&intf->dev, "going into suspend..\n");
Expand All @@ -564,8 +575,10 @@ static int usb_amradio_suspend(struct usb_interface *intf, pm_message_t message)
static int usb_amradio_resume(struct usb_interface *intf)
{
struct amradio_device *radio = usb_get_intfdata(intf);
int retval;

if (amradio_start(radio) < 0)
retval = amradio_start(radio);
if (retval < 0)
dev_warn(&intf->dev, "amradio_start failed\n");

dev_info(&intf->dev, "coming out of suspend..\n");
Expand Down Expand Up @@ -616,16 +629,16 @@ static struct video_device amradio_videodev_template = {
.release = usb_amradio_device_release,
};

/* check if the device is present and register with v4l and
usb if it is */
/* check if the device is present and register with v4l and usb if it is */
static int usb_amradio_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
struct amradio_device *radio;
int retval;

radio = kmalloc(sizeof(struct amradio_device), GFP_KERNEL);

if (!(radio))
if (!radio)
return -ENOMEM;

radio->buffer = kmalloc(BUFFER_LENGTH, GFP_KERNEL);
Expand Down Expand Up @@ -654,7 +667,8 @@ static int usb_amradio_probe(struct usb_interface *intf,
mutex_init(&radio->lock);

video_set_drvdata(radio->videodev, radio);
if (video_register_device(radio->videodev, VFL_TYPE_RADIO, radio_nr)) {
retval = video_register_device(radio->videodev, VFL_TYPE_RADIO, radio_nr);
if (retval < 0) {
dev_warn(&intf->dev, "could not register video device\n");
video_device_release(radio->videodev);
kfree(radio->buffer);
Expand Down

0 comments on commit fee0d25

Please sign in to comment.