diff options
author | Ondrej Zary <linux@rainbow-software.org> | 2013-07-19 12:46:18 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2013-07-26 12:34:09 -0400 |
commit | 1c9f11ed21816290a7cea36fc2dc3b16d5590340 (patch) | |
tree | 10f861bb1121715e5c1148c8c3b022850a309f70 /drivers/media/radio/radio-aztech.c | |
parent | eb27fafef69568a82c46c27a1761f037e4272b87 (diff) |
[media] radio-aztech: Implement signal strength detection and fix stereo detection
Current stereo detection code is wrong - it reads TUNED bit instead of STEREO bit.
Fix that and implement signal strength detection too.
Also remove useless s_stereo functionn.
Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/radio/radio-aztech.c')
-rw-r--r-- | drivers/media/radio/radio-aztech.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/media/radio/radio-aztech.c b/drivers/media/radio/radio-aztech.c index 2f5671f2e17e..705dd6f9162c 100644 --- a/drivers/media/radio/radio-aztech.c +++ b/drivers/media/radio/radio-aztech.c | |||
@@ -94,21 +94,16 @@ static int aztech_s_frequency(struct radio_isa_card *isa, u32 freq) | |||
94 | return 0; | 94 | return 0; |
95 | } | 95 | } |
96 | 96 | ||
97 | /* thanks to Michael Dwyer for giving me a dose of clues in | ||
98 | * the signal strength department.. | ||
99 | * | ||
100 | * This card has a stereo bit - bit 0 set = mono, not set = stereo | ||
101 | */ | ||
102 | static u32 aztech_g_rxsubchans(struct radio_isa_card *isa) | 97 | static u32 aztech_g_rxsubchans(struct radio_isa_card *isa) |
103 | { | 98 | { |
104 | if (inb(isa->io) & 1) | 99 | if (inb(isa->io) & AZTECH_BIT_MONO) |
105 | return V4L2_TUNER_SUB_MONO; | 100 | return V4L2_TUNER_SUB_MONO; |
106 | return V4L2_TUNER_SUB_STEREO; | 101 | return V4L2_TUNER_SUB_STEREO; |
107 | } | 102 | } |
108 | 103 | ||
109 | static int aztech_s_stereo(struct radio_isa_card *isa, bool stereo) | 104 | static u32 aztech_g_signal(struct radio_isa_card *isa) |
110 | { | 105 | { |
111 | return aztech_s_frequency(isa, isa->freq); | 106 | return (inb(isa->io) & AZTECH_BIT_NOT_TUNED) ? 0 : 0xffff; |
112 | } | 107 | } |
113 | 108 | ||
114 | static int aztech_s_mute_volume(struct radio_isa_card *isa, bool mute, int vol) | 109 | static int aztech_s_mute_volume(struct radio_isa_card *isa, bool mute, int vol) |
@@ -126,8 +121,8 @@ static const struct radio_isa_ops aztech_ops = { | |||
126 | .alloc = aztech_alloc, | 121 | .alloc = aztech_alloc, |
127 | .s_mute_volume = aztech_s_mute_volume, | 122 | .s_mute_volume = aztech_s_mute_volume, |
128 | .s_frequency = aztech_s_frequency, | 123 | .s_frequency = aztech_s_frequency, |
129 | .s_stereo = aztech_s_stereo, | ||
130 | .g_rxsubchans = aztech_g_rxsubchans, | 124 | .g_rxsubchans = aztech_g_rxsubchans, |
125 | .g_signal = aztech_g_signal, | ||
131 | }; | 126 | }; |
132 | 127 | ||
133 | static const int aztech_ioports[] = { 0x350, 0x358 }; | 128 | static const int aztech_ioports[] = { 0x350, 0x358 }; |