* [patch review 4/8] radio-mr800: move radio start and stop in one function
@ 2009-02-03 1:08 Alexey Klimov
0 siblings, 0 replies; only message in thread
From: Alexey Klimov @ 2009-02-03 1:08 UTC (permalink / raw)
To: Douglas Schilling Landgraf; +Cc: linux-media
Patch introduces new amradio_set_mute function. Amradio_start and
amradio_stop removed. This makes driver more flexible and it's useful
for next changes.
Signed-off-by: Alexey Klimov <klimov.linux@gmail.com>
--
diff -r 8a8f7995666e linux/drivers/media/radio/radio-mr800.c
--- a/linux/drivers/media/radio/radio-mr800.c Mon Feb 02 03:09:07 2009 +0300
+++ b/linux/drivers/media/radio/radio-mr800.c Mon Feb 02 03:55:35 2009 +0300
@@ -88,6 +88,16 @@
#define FREQ_MAX 108.0
#define FREQ_MUL 16000
+/*
+ * Commands that device should understand
+ * List isnt full and will be updated with implementation of new functions
+ */
+#define AMRADIO_SET_MUTE 0xab
+
+/* Comfortable defines for amradio_set_mute */
+#define AMRADIO_START 0x00
+#define AMRADIO_STOP 0x01
+
/* module parameter */
static int radio_nr = -1;
module_param(radio_nr, int, 0);
@@ -172,40 +182,8 @@
.supports_autosuspend = 0,
};
-/* switch on radio. Send 8 bytes to device. */
-static int amradio_start(struct amradio_device *radio)
-{
- int retval;
- int size;
-
- mutex_lock(&radio->lock);
-
- radio->buffer[0] = 0x00;
- radio->buffer[1] = 0x55;
- radio->buffer[2] = 0xaa;
- radio->buffer[3] = 0x00;
- radio->buffer[4] = 0xab;
- radio->buffer[5] = 0x00;
- radio->buffer[6] = 0x00;
- radio->buffer[7] = 0x00;
-
- retval = usb_bulk_msg(radio->usbdev, usb_sndintpipe(radio->usbdev, 2),
- (void *) (radio->buffer), BUFFER_LENGTH, &size, USB_TIMEOUT);
-
- if (retval) {
- mutex_unlock(&radio->lock);
- return retval;
- }
-
- radio->muted = 0;
-
- mutex_unlock(&radio->lock);
-
- return retval;
-}
-
-/* switch off radio */
-static int amradio_stop(struct amradio_device *radio)
+/* switch on/off the radio. Send 8 bytes to device */
+static int amradio_set_mute(struct amradio_device *radio, char argument)
{
int retval;
int size;
@@ -220,8 +198,8 @@
radio->buffer[1] = 0x55;
radio->buffer[2] = 0xaa;
radio->buffer[3] = 0x00;
- radio->buffer[4] = 0xab;
- radio->buffer[5] = 0x01;
+ radio->buffer[4] = AMRADIO_SET_MUTE;
+ radio->buffer[5] = argument;
radio->buffer[6] = 0x00;
radio->buffer[7] = 0x00;
@@ -233,7 +211,7 @@
return retval;
}
- radio->muted = 1;
+ radio->muted = argument;
mutex_unlock(&radio->lock);
@@ -454,14 +432,14 @@
switch (ctrl->id) {
case V4L2_CID_AUDIO_MUTE:
if (ctrl->value) {
- retval = amradio_stop(radio);
+ retval = amradio_set_mute(radio, AMRADIO_STOP);
if (retval < 0) {
amradio_dev_warn(&radio->videodev->dev,
"amradio_stop failed\n");
return -1;
}
} else {
- retval = amradio_start(radio);
+ retval = amradio_set_mute(radio, AMRADIO_START);
if (retval < 0) {
amradio_dev_warn(&radio->videodev->dev,
"amradio_start failed\n");
@@ -520,7 +498,7 @@
radio->users = 1;
radio->muted = 1;
- retval = amradio_start(radio);
+ retval = amradio_set_mute(radio, AMRADIO_START);
if (retval < 0) {
amradio_dev_warn(&radio->videodev->dev,
"radio did not start up properly\n");
@@ -550,7 +528,7 @@
radio->users = 0;
if (!radio->removed) {
- retval = amradio_stop(radio);
+ retval = amradio_set_mute(radio, AMRADIO_STOP);
if (retval < 0)
amradio_dev_warn(&radio->videodev->dev,
"amradio_stop failed\n");
@@ -565,7 +543,7 @@
struct amradio_device *radio = usb_get_intfdata(intf);
int retval;
- retval = amradio_stop(radio);
+ retval = amradio_set_mute(radio, AMRADIO_STOP);
if (retval < 0)
dev_warn(&intf->dev, "amradio_stop failed\n");
@@ -580,7 +558,7 @@
struct amradio_device *radio = usb_get_intfdata(intf);
int retval;
- retval = amradio_start(radio);
+ retval = amradio_set_mute(radio, AMRADIO_START);
if (retval < 0)
dev_warn(&intf->dev, "amradio_start failed\n");
--
Best regards, Klimov Alexey
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-02-03 1:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-03 1:08 [patch review 4/8] radio-mr800: move radio start and stop in one function Alexey Klimov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.