Lines Matching defs:fmr2

31 struct fmr2 {
41 static struct fmr2 *fmr2_cards[FMR2_MAX];
62 struct fmr2 *fmr2 = tea->private_data;
70 outb(bits, fmr2->io);
75 struct fmr2 *fmr2 = tea->private_data;
76 u8 bits = inb(fmr2->io);
116 static void tc9154a_set_pins(struct fmr2 *fmr2, u8 pins)
118 if (!fmr2->tea.mute)
121 outb(pins, fmr2->io);
124 static void tc9154a_set_attenuation(struct fmr2 *fmr2, int att, u32 channel)
135 tc9154a_set_pins(fmr2, bit);
137 tc9154a_set_pins(fmr2, bit | PT_CK);
139 tc9154a_set_pins(fmr2, bit);
144 tc9154a_set_pins(fmr2, PT_ST);
146 tc9154a_set_pins(fmr2, 0);
152 struct fmr2 *fmr2 = tea->private_data;
158 balance = fmr2->balance->cur.val;
162 volume = fmr2->volume->cur.val;
174 tc9154a_set_attenuation(fmr2, abs(left - 68), TC9154A_CHANNEL_LEFT);
175 tc9154a_set_attenuation(fmr2, abs(right - 68), TC9154A_CHANNEL_RIGHT);
186 struct fmr2 *fmr2 = tea->private_data;
189 if (!fmr2->is_fmd2 && inb(fmr2->io) & FMR2_HASVOL) {
190 fmr2->volume = v4l2_ctrl_new_std(&tea->ctrl_handler, &fmr2_ctrl_ops, V4L2_CID_AUDIO_VOLUME, 0, 68, 2, 56);
191 fmr2->balance = v4l2_ctrl_new_std(&tea->ctrl_handler, &fmr2_ctrl_ops, V4L2_CID_AUDIO_BALANCE, -68, 68, 2, 0);
207 static int fmr2_probe(struct fmr2 *fmr2, struct device *pdev, int io)
210 char *card_name = fmr2->is_fmd2 ? "SF16-FMD2" : "SF16-FMR2";
217 strscpy(fmr2->v4l2_dev.name, "radio-sf16fmr2",
218 sizeof(fmr2->v4l2_dev.name));
219 fmr2->io = io;
221 if (!request_region(fmr2->io, 2, fmr2->v4l2_dev.name)) {
222 printk(KERN_ERR "radio-sf16fmr2: I/O port 0x%x already in use\n", fmr2->io);
226 dev_set_drvdata(pdev, fmr2);
227 err = v4l2_device_register(pdev, &fmr2->v4l2_dev);
229 v4l2_err(&fmr2->v4l2_dev, "Could not register v4l2_device\n");
230 release_region(fmr2->io, 2);
233 fmr2->tea.v4l2_dev = &fmr2->v4l2_dev;
234 fmr2->tea.private_data = fmr2;
235 fmr2->tea.radio_nr = radio_nr[num_fmr2_cards];
236 fmr2->tea.ops = &fmr2_tea_ops;
237 fmr2->tea.ext_init = fmr2_tea_ext_init;
238 strscpy(fmr2->tea.card, card_name, sizeof(fmr2->tea.card));
239 snprintf(fmr2->tea.bus_info, sizeof(fmr2->tea.bus_info), "%s:%s",
240 fmr2->is_fmd2 ? "PnP" : "ISA", dev_name(pdev));
242 if (snd_tea575x_init(&fmr2->tea, THIS_MODULE)) {
244 release_region(fmr2->io, 2);
249 card_name, fmr2->io);
255 struct fmr2 *fmr2 = kzalloc(sizeof(*fmr2), GFP_KERNEL);
256 if (!fmr2)
259 if (fmr2_probe(fmr2, pdev, FMR2_PORT)) {
260 kfree(fmr2);
263 dev_set_drvdata(pdev, fmr2);
264 fmr2_cards[num_fmr2_cards++] = fmr2;
272 struct fmr2 *fmr2 = kzalloc(sizeof(*fmr2), GFP_KERNEL);
273 if (!fmr2)
276 fmr2->is_fmd2 = true;
277 ret = fmr2_probe(fmr2, &pdev->dev, pnp_port_start(pdev, 0));
279 kfree(fmr2);
282 pnp_set_drvdata(pdev, fmr2);
283 fmr2_cards[num_fmr2_cards++] = fmr2;
288 static void fmr2_remove(struct fmr2 *fmr2)
290 snd_tea575x_exit(&fmr2->tea);
291 release_region(fmr2->io, 2);
292 v4l2_device_unregister(&fmr2->v4l2_dev);
293 kfree(fmr2);