diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/i2c/other/tea575x-tuner.c | 21 | ||||
-rw-r--r-- | sound/pci/es1968.c | 2 | ||||
-rw-r--r-- | sound/pci/fm801.c | 4 |
3 files changed, 17 insertions, 10 deletions
diff --git a/sound/i2c/other/tea575x-tuner.c b/sound/i2c/other/tea575x-tuner.c index ba2bc511d777..b29b88f93c9e 100644 --- a/sound/i2c/other/tea575x-tuner.c +++ b/sound/i2c/other/tea575x-tuner.c | |||
@@ -37,8 +37,8 @@ MODULE_AUTHOR("Jaroslav Kysela <perex@perex.cz>"); | |||
37 | MODULE_DESCRIPTION("Routines for control of TEA5757/5759 Philips AM/FM radio tuner chips"); | 37 | MODULE_DESCRIPTION("Routines for control of TEA5757/5759 Philips AM/FM radio tuner chips"); |
38 | MODULE_LICENSE("GPL"); | 38 | MODULE_LICENSE("GPL"); |
39 | 39 | ||
40 | #define FREQ_LO (76U * 16000) | 40 | #define FREQ_LO ((tea->tea5759 ? 760 : 875) * 1600U) |
41 | #define FREQ_HI (108U * 16000) | 41 | #define FREQ_HI ((tea->tea5759 ? 910 : 1080) * 1600U) |
42 | 42 | ||
43 | /* | 43 | /* |
44 | * definitions | 44 | * definitions |
@@ -120,9 +120,9 @@ static u32 snd_tea575x_read(struct snd_tea575x *tea) | |||
120 | return data; | 120 | return data; |
121 | } | 121 | } |
122 | 122 | ||
123 | static u32 snd_tea575x_get_freq(struct snd_tea575x *tea) | 123 | static u32 snd_tea575x_val_to_freq(struct snd_tea575x *tea, u32 val) |
124 | { | 124 | { |
125 | u32 freq = snd_tea575x_read(tea) & TEA575X_BIT_FREQ_MASK; | 125 | u32 freq = val & TEA575X_BIT_FREQ_MASK; |
126 | 126 | ||
127 | if (freq == 0) | 127 | if (freq == 0) |
128 | return freq; | 128 | return freq; |
@@ -139,6 +139,11 @@ static u32 snd_tea575x_get_freq(struct snd_tea575x *tea) | |||
139 | return clamp(freq * 16, FREQ_LO, FREQ_HI); /* from kHz */ | 139 | return clamp(freq * 16, FREQ_LO, FREQ_HI); /* from kHz */ |
140 | } | 140 | } |
141 | 141 | ||
142 | static u32 snd_tea575x_get_freq(struct snd_tea575x *tea) | ||
143 | { | ||
144 | return snd_tea575x_val_to_freq(tea, snd_tea575x_read(tea)); | ||
145 | } | ||
146 | |||
142 | static void snd_tea575x_set_freq(struct snd_tea575x *tea) | 147 | static void snd_tea575x_set_freq(struct snd_tea575x *tea) |
143 | { | 148 | { |
144 | u32 freq = tea->freq; | 149 | u32 freq = tea->freq; |
@@ -156,6 +161,7 @@ static void snd_tea575x_set_freq(struct snd_tea575x *tea) | |||
156 | tea->val &= ~TEA575X_BIT_FREQ_MASK; | 161 | tea->val &= ~TEA575X_BIT_FREQ_MASK; |
157 | tea->val |= freq & TEA575X_BIT_FREQ_MASK; | 162 | tea->val |= freq & TEA575X_BIT_FREQ_MASK; |
158 | snd_tea575x_write(tea, tea->val); | 163 | snd_tea575x_write(tea, tea->val); |
164 | tea->freq = snd_tea575x_val_to_freq(tea, tea->val); | ||
159 | } | 165 | } |
160 | 166 | ||
161 | /* | 167 | /* |
@@ -319,7 +325,6 @@ static int tea575x_s_ctrl(struct v4l2_ctrl *ctrl) | |||
319 | } | 325 | } |
320 | 326 | ||
321 | static const struct v4l2_file_operations tea575x_fops = { | 327 | static const struct v4l2_file_operations tea575x_fops = { |
322 | .owner = THIS_MODULE, | ||
323 | .unlocked_ioctl = video_ioctl2, | 328 | .unlocked_ioctl = video_ioctl2, |
324 | .open = v4l2_fh_open, | 329 | .open = v4l2_fh_open, |
325 | .release = v4l2_fh_release, | 330 | .release = v4l2_fh_release, |
@@ -339,7 +344,6 @@ static const struct v4l2_ioctl_ops tea575x_ioctl_ops = { | |||
339 | }; | 344 | }; |
340 | 345 | ||
341 | static const struct video_device tea575x_radio = { | 346 | static const struct video_device tea575x_radio = { |
342 | .fops = &tea575x_fops, | ||
343 | .ioctl_ops = &tea575x_ioctl_ops, | 347 | .ioctl_ops = &tea575x_ioctl_ops, |
344 | .release = video_device_release_empty, | 348 | .release = video_device_release_empty, |
345 | }; | 349 | }; |
@@ -351,7 +355,7 @@ static const struct v4l2_ctrl_ops tea575x_ctrl_ops = { | |||
351 | /* | 355 | /* |
352 | * initialize all the tea575x chips | 356 | * initialize all the tea575x chips |
353 | */ | 357 | */ |
354 | int snd_tea575x_init(struct snd_tea575x *tea) | 358 | int snd_tea575x_init(struct snd_tea575x *tea, struct module *owner) |
355 | { | 359 | { |
356 | int retval; | 360 | int retval; |
357 | 361 | ||
@@ -376,6 +380,9 @@ int snd_tea575x_init(struct snd_tea575x *tea) | |||
376 | tea->vd.lock = &tea->mutex; | 380 | tea->vd.lock = &tea->mutex; |
377 | tea->vd.v4l2_dev = tea->v4l2_dev; | 381 | tea->vd.v4l2_dev = tea->v4l2_dev; |
378 | tea->vd.ctrl_handler = &tea->ctrl_handler; | 382 | tea->vd.ctrl_handler = &tea->ctrl_handler; |
383 | tea->fops = tea575x_fops; | ||
384 | tea->fops.owner = owner; | ||
385 | tea->vd.fops = &tea->fops; | ||
379 | set_bit(V4L2_FL_USE_FH_PRIO, &tea->vd.flags); | 386 | set_bit(V4L2_FL_USE_FH_PRIO, &tea->vd.flags); |
380 | /* disable hw_freq_seek if we can't use it */ | 387 | /* disable hw_freq_seek if we can't use it */ |
381 | if (tea->cannot_read_data) | 388 | if (tea->cannot_read_data) |
diff --git a/sound/pci/es1968.c b/sound/pci/es1968.c index a8faae1c85e4..0f2811eeeebd 100644 --- a/sound/pci/es1968.c +++ b/sound/pci/es1968.c | |||
@@ -2769,7 +2769,7 @@ static int __devinit snd_es1968_create(struct snd_card *card, | |||
2769 | chip->tea.ops = &snd_es1968_tea_ops; | 2769 | chip->tea.ops = &snd_es1968_tea_ops; |
2770 | strlcpy(chip->tea.card, "SF64-PCE2", sizeof(chip->tea.card)); | 2770 | strlcpy(chip->tea.card, "SF64-PCE2", sizeof(chip->tea.card)); |
2771 | sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci)); | 2771 | sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci)); |
2772 | if (!snd_tea575x_init(&chip->tea)) | 2772 | if (!snd_tea575x_init(&chip->tea, THIS_MODULE)) |
2773 | printk(KERN_INFO "es1968: detected TEA575x radio\n"); | 2773 | printk(KERN_INFO "es1968: detected TEA575x radio\n"); |
2774 | #endif | 2774 | #endif |
2775 | 2775 | ||
diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c index a416ea8af3e9..5265c576a26a 100644 --- a/sound/pci/fm801.c +++ b/sound/pci/fm801.c | |||
@@ -1254,7 +1254,7 @@ static int __devinit snd_fm801_create(struct snd_card *card, | |||
1254 | sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci)); | 1254 | sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci)); |
1255 | if ((tea575x_tuner & TUNER_TYPE_MASK) > 0 && | 1255 | if ((tea575x_tuner & TUNER_TYPE_MASK) > 0 && |
1256 | (tea575x_tuner & TUNER_TYPE_MASK) < 4) { | 1256 | (tea575x_tuner & TUNER_TYPE_MASK) < 4) { |
1257 | if (snd_tea575x_init(&chip->tea)) { | 1257 | if (snd_tea575x_init(&chip->tea, THIS_MODULE)) { |
1258 | snd_printk(KERN_ERR "TEA575x radio not found\n"); | 1258 | snd_printk(KERN_ERR "TEA575x radio not found\n"); |
1259 | snd_fm801_free(chip); | 1259 | snd_fm801_free(chip); |
1260 | return -ENODEV; | 1260 | return -ENODEV; |
@@ -1263,7 +1263,7 @@ static int __devinit snd_fm801_create(struct snd_card *card, | |||
1263 | /* autodetect tuner connection */ | 1263 | /* autodetect tuner connection */ |
1264 | for (tea575x_tuner = 1; tea575x_tuner <= 3; tea575x_tuner++) { | 1264 | for (tea575x_tuner = 1; tea575x_tuner <= 3; tea575x_tuner++) { |
1265 | chip->tea575x_tuner = tea575x_tuner; | 1265 | chip->tea575x_tuner = tea575x_tuner; |
1266 | if (!snd_tea575x_init(&chip->tea)) { | 1266 | if (!snd_tea575x_init(&chip->tea, THIS_MODULE)) { |
1267 | snd_printk(KERN_INFO "detected TEA575x radio type %s\n", | 1267 | snd_printk(KERN_INFO "detected TEA575x radio type %s\n", |
1268 | get_tea575x_gpio(chip)->name); | 1268 | get_tea575x_gpio(chip)->name); |
1269 | break; | 1269 | break; |