diff options
author | Ondrej Zary <linux@rainbow-software.org> | 2009-12-10 15:06:44 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-12-15 21:18:39 -0500 |
commit | 4b8303747474033d6d73828607eafab77c620d96 (patch) | |
tree | 067d5436767f3e08a7bca5cdda1de30234860f9b /drivers/media/radio | |
parent | 0b0a860fec1a6d4cdcd0dc5241390d083a82c00d (diff) |
V4L/DVB (13608): radio-sf16fmi: fix mute, add SF16-FMP to texts
Fix completely broken mute handling radio-sf16fmi.
The sound was muted immediately after tuning in KRadio.
Also fix typos and add SF16-FMP to the texts.
Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Acked-by: Petr Vandrovec <petr@vandrovec.name>
Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/radio')
-rw-r--r-- | drivers/media/radio/Kconfig | 2 | ||||
-rw-r--r-- | drivers/media/radio/radio-sf16fmi.c | 18 |
2 files changed, 10 insertions, 10 deletions
diff --git a/drivers/media/radio/Kconfig b/drivers/media/radio/Kconfig index 4c2b8a246772..0fe93f2b48bd 100644 --- a/drivers/media/radio/Kconfig +++ b/drivers/media/radio/Kconfig | |||
@@ -215,7 +215,7 @@ config RADIO_MIROPCM20 | |||
215 | module will be called radio-miropcm20. | 215 | module will be called radio-miropcm20. |
216 | 216 | ||
217 | config RADIO_SF16FMI | 217 | config RADIO_SF16FMI |
218 | tristate "SF16FMI Radio" | 218 | tristate "SF16-FMI/SF16-FMP Radio" |
219 | depends on ISA && VIDEO_V4L2 | 219 | depends on ISA && VIDEO_V4L2 |
220 | ---help--- | 220 | ---help--- |
221 | Choose Y here if you have one of these FM radio cards. If you | 221 | Choose Y here if you have one of these FM radio cards. If you |
diff --git a/drivers/media/radio/radio-sf16fmi.c b/drivers/media/radio/radio-sf16fmi.c index 93990b7899ec..e9ecfe11cda5 100644 --- a/drivers/media/radio/radio-sf16fmi.c +++ b/drivers/media/radio/radio-sf16fmi.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* SF16FMI radio driver for Linux radio support | 1 | /* SF16-FMI and SF16-FMP radio driver for Linux radio support |
2 | * heavily based on rtrack driver... | 2 | * heavily based on rtrack driver... |
3 | * (c) 1997 M. Kirkwood | 3 | * (c) 1997 M. Kirkwood |
4 | * (c) 1998 Petr Vandrovec, vandrove@vc.cvut.cz | 4 | * (c) 1998 Petr Vandrovec, vandrove@vc.cvut.cz |
@@ -11,7 +11,7 @@ | |||
11 | * | 11 | * |
12 | * Frequency control is done digitally -- ie out(port,encodefreq(95.8)); | 12 | * Frequency control is done digitally -- ie out(port,encodefreq(95.8)); |
13 | * No volume control - only mute/unmute - you have to use line volume | 13 | * No volume control - only mute/unmute - you have to use line volume |
14 | * control on SB-part of SF16FMI | 14 | * control on SB-part of SF16-FMI/SF16-FMP |
15 | * | 15 | * |
16 | * Converted to V4L2 API by Mauro Carvalho Chehab <mchehab@infradead.org> | 16 | * Converted to V4L2 API by Mauro Carvalho Chehab <mchehab@infradead.org> |
17 | */ | 17 | */ |
@@ -30,14 +30,14 @@ | |||
30 | #include <media/v4l2-ioctl.h> | 30 | #include <media/v4l2-ioctl.h> |
31 | 31 | ||
32 | MODULE_AUTHOR("Petr Vandrovec, vandrove@vc.cvut.cz and M. Kirkwood"); | 32 | MODULE_AUTHOR("Petr Vandrovec, vandrove@vc.cvut.cz and M. Kirkwood"); |
33 | MODULE_DESCRIPTION("A driver for the SF16MI radio."); | 33 | MODULE_DESCRIPTION("A driver for the SF16-FMI and SF16-FMP radio."); |
34 | MODULE_LICENSE("GPL"); | 34 | MODULE_LICENSE("GPL"); |
35 | 35 | ||
36 | static int io = -1; | 36 | static int io = -1; |
37 | static int radio_nr = -1; | 37 | static int radio_nr = -1; |
38 | 38 | ||
39 | module_param(io, int, 0); | 39 | module_param(io, int, 0); |
40 | MODULE_PARM_DESC(io, "I/O address of the SF16MI card (0x284 or 0x384)"); | 40 | MODULE_PARM_DESC(io, "I/O address of the SF16-FMI or SF16-FMP card (0x284 or 0x384)"); |
41 | module_param(radio_nr, int, 0); | 41 | module_param(radio_nr, int, 0); |
42 | 42 | ||
43 | #define RADIO_VERSION KERNEL_VERSION(0, 0, 2) | 43 | #define RADIO_VERSION KERNEL_VERSION(0, 0, 2) |
@@ -47,7 +47,7 @@ struct fmi | |||
47 | struct v4l2_device v4l2_dev; | 47 | struct v4l2_device v4l2_dev; |
48 | struct video_device vdev; | 48 | struct video_device vdev; |
49 | int io; | 49 | int io; |
50 | int curvol; /* 1 or 0 */ | 50 | bool mute; |
51 | unsigned long curfreq; /* freq in kHz */ | 51 | unsigned long curfreq; /* freq in kHz */ |
52 | struct mutex lock; | 52 | struct mutex lock; |
53 | }; | 53 | }; |
@@ -105,7 +105,7 @@ static inline int fmi_setfreq(struct fmi *fmi, unsigned long freq) | |||
105 | outbits(8, 0xC0, fmi->io); | 105 | outbits(8, 0xC0, fmi->io); |
106 | msleep(143); /* was schedule_timeout(HZ/7) */ | 106 | msleep(143); /* was schedule_timeout(HZ/7) */ |
107 | mutex_unlock(&fmi->lock); | 107 | mutex_unlock(&fmi->lock); |
108 | if (fmi->curvol) | 108 | if (!fmi->mute) |
109 | fmi_unmute(fmi); | 109 | fmi_unmute(fmi); |
110 | return 0; | 110 | return 0; |
111 | } | 111 | } |
@@ -116,7 +116,7 @@ static inline int fmi_getsigstr(struct fmi *fmi) | |||
116 | int res; | 116 | int res; |
117 | 117 | ||
118 | mutex_lock(&fmi->lock); | 118 | mutex_lock(&fmi->lock); |
119 | val = fmi->curvol ? 0x08 : 0x00; /* unmute/mute */ | 119 | val = fmi->mute ? 0x00 : 0x08; /* mute/unmute */ |
120 | outb(val, fmi->io); | 120 | outb(val, fmi->io); |
121 | outb(val | 0x10, fmi->io); | 121 | outb(val | 0x10, fmi->io); |
122 | msleep(143); /* was schedule_timeout(HZ/7) */ | 122 | msleep(143); /* was schedule_timeout(HZ/7) */ |
@@ -208,7 +208,7 @@ static int vidioc_g_ctrl(struct file *file, void *priv, | |||
208 | 208 | ||
209 | switch (ctrl->id) { | 209 | switch (ctrl->id) { |
210 | case V4L2_CID_AUDIO_MUTE: | 210 | case V4L2_CID_AUDIO_MUTE: |
211 | ctrl->value = fmi->curvol; | 211 | ctrl->value = fmi->mute; |
212 | return 0; | 212 | return 0; |
213 | } | 213 | } |
214 | return -EINVAL; | 214 | return -EINVAL; |
@@ -225,7 +225,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv, | |||
225 | fmi_mute(fmi); | 225 | fmi_mute(fmi); |
226 | else | 226 | else |
227 | fmi_unmute(fmi); | 227 | fmi_unmute(fmi); |
228 | fmi->curvol = ctrl->value; | 228 | fmi->mute = ctrl->value; |
229 | return 0; | 229 | return 0; |
230 | } | 230 | } |
231 | return -EINVAL; | 231 | return -EINVAL; |