From 7bd7d3395bd7bc499417b352e80f40a13625827d Mon Sep 17 00:00:00 2001 From: David Ellingsworth Date: Wed, 23 Sep 2009 18:24:47 -0300 Subject: [PATCH] --- yaml --- r: 173895 b: refs/heads/master c: d8970e5fd9eace437bc2f1aaff1c2a05fb3448ea h: refs/heads/master i: 173893: 12724c1d86210f9be10c7e8a6ede34385429d913 173891: 4b36d1209cc331d4563d3f00c39e9341c73e0abc 173887: 07811ff53e27ea7c91b6fb45b0b0f1a70a261bd5 v: v3 --- [refs] | 2 +- trunk/drivers/media/radio/radio-mr800.c | 33 +++++++++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index b4abe1331bdc..6e830f062500 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 30dd4508b97155a3f826f877d5750d8888bc3183 +refs/heads/master: d8970e5fd9eace437bc2f1aaff1c2a05fb3448ea diff --git a/trunk/drivers/media/radio/radio-mr800.c b/trunk/drivers/media/radio/radio-mr800.c index 9764eca2c498..ac2107378942 100644 --- a/trunk/drivers/media/radio/radio-mr800.c +++ b/trunk/drivers/media/radio/radio-mr800.c @@ -574,9 +574,12 @@ static int usb_amradio_suspend(struct usb_interface *intf, pm_message_t message) mutex_lock(&radio->lock); - retval = amradio_set_mute(radio, AMRADIO_STOP); - if (retval < 0) - dev_warn(&intf->dev, "amradio_stop failed\n"); + if (!radio->muted && radio->initialized) { + retval = amradio_set_mute(radio, AMRADIO_STOP); + if (retval < 0) + dev_warn(&intf->dev, "amradio_stop failed\n"); + radio->muted = 0; + } dev_info(&intf->dev, "going into suspend..\n"); @@ -592,10 +595,30 @@ static int usb_amradio_resume(struct usb_interface *intf) mutex_lock(&radio->lock); - retval = amradio_set_mute(radio, AMRADIO_START); + if (unlikely(!radio->initialized)) + goto unlock; + + if (radio->stereo) + retval = amradio_set_stereo(radio, WANT_STEREO); + else + retval = amradio_set_stereo(radio, WANT_MONO); + if (retval < 0) - dev_warn(&intf->dev, "amradio_start failed\n"); + amradio_dev_warn(&radio->videodev.dev, "set stereo failed\n"); + retval = amradio_setfreq(radio, radio->curfreq); + if (retval < 0) + amradio_dev_warn(&radio->videodev.dev, + "set frequency failed\n"); + + if (!radio->muted) { + retval = amradio_set_mute(radio, AMRADIO_START); + if (retval < 0) + dev_warn(&radio->videodev.dev, + "amradio_start failed\n"); + } + +unlock: dev_info(&intf->dev, "coming out of suspend..\n"); mutex_unlock(&radio->lock);