Lines Matching refs:fmr2
30 struct fmr2 { struct
40 static struct fmr2 *fmr2_cards[FMR2_MAX]; argument
61 struct fmr2 *fmr2 = tea->private_data; in fmr2_tea575x_set_pins() local
69 outb(bits, fmr2->io); in fmr2_tea575x_set_pins()
74 struct fmr2 *fmr2 = tea->private_data; in fmr2_tea575x_get_pins() local
75 u8 bits = inb(fmr2->io); in fmr2_tea575x_get_pins()
115 static void tc9154a_set_pins(struct fmr2 *fmr2, u8 pins) in tc9154a_set_pins() argument
117 if (!fmr2->tea.mute) in tc9154a_set_pins()
120 outb(pins, fmr2->io); in tc9154a_set_pins()
123 static void tc9154a_set_attenuation(struct fmr2 *fmr2, int att, u32 channel) in tc9154a_set_attenuation() argument
134 tc9154a_set_pins(fmr2, bit); in tc9154a_set_attenuation()
136 tc9154a_set_pins(fmr2, bit | PT_CK); in tc9154a_set_attenuation()
138 tc9154a_set_pins(fmr2, bit); in tc9154a_set_attenuation()
143 tc9154a_set_pins(fmr2, PT_ST); in tc9154a_set_attenuation()
145 tc9154a_set_pins(fmr2, 0); in tc9154a_set_attenuation()
151 struct fmr2 *fmr2 = tea->private_data; in fmr2_s_ctrl() local
157 balance = fmr2->balance->cur.val; in fmr2_s_ctrl()
161 volume = fmr2->volume->cur.val; in fmr2_s_ctrl()
173 tc9154a_set_attenuation(fmr2, abs(left - 68), TC9154A_CHANNEL_LEFT); in fmr2_s_ctrl()
174 tc9154a_set_attenuation(fmr2, abs(right - 68), TC9154A_CHANNEL_RIGHT); in fmr2_s_ctrl()
185 struct fmr2 *fmr2 = tea->private_data; in fmr2_tea_ext_init() local
188 if (!fmr2->is_fmd2 && inb(fmr2->io) & FMR2_HASVOL) { in fmr2_tea_ext_init()
189 …fmr2->volume = v4l2_ctrl_new_std(&tea->ctrl_handler, &fmr2_ctrl_ops, V4L2_CID_AUDIO_VOLUME, 0, 68,… in fmr2_tea_ext_init()
190 …fmr2->balance = v4l2_ctrl_new_std(&tea->ctrl_handler, &fmr2_ctrl_ops, V4L2_CID_AUDIO_BALANCE, -68,… in fmr2_tea_ext_init()
206 static int fmr2_probe(struct fmr2 *fmr2, struct device *pdev, int io) in fmr2_probe() argument
209 char *card_name = fmr2->is_fmd2 ? "SF16-FMD2" : "SF16-FMR2"; in fmr2_probe()
216 strlcpy(fmr2->v4l2_dev.name, "radio-sf16fmr2", in fmr2_probe()
217 sizeof(fmr2->v4l2_dev.name)), in fmr2_probe()
218 fmr2->io = io; in fmr2_probe()
220 if (!request_region(fmr2->io, 2, fmr2->v4l2_dev.name)) { in fmr2_probe()
221 printk(KERN_ERR "radio-sf16fmr2: I/O port 0x%x already in use\n", fmr2->io); in fmr2_probe()
225 dev_set_drvdata(pdev, fmr2); in fmr2_probe()
226 err = v4l2_device_register(pdev, &fmr2->v4l2_dev); in fmr2_probe()
228 v4l2_err(&fmr2->v4l2_dev, "Could not register v4l2_device\n"); in fmr2_probe()
229 release_region(fmr2->io, 2); in fmr2_probe()
232 fmr2->tea.v4l2_dev = &fmr2->v4l2_dev; in fmr2_probe()
233 fmr2->tea.private_data = fmr2; in fmr2_probe()
234 fmr2->tea.radio_nr = radio_nr[num_fmr2_cards]; in fmr2_probe()
235 fmr2->tea.ops = &fmr2_tea_ops; in fmr2_probe()
236 fmr2->tea.ext_init = fmr2_tea_ext_init; in fmr2_probe()
237 strlcpy(fmr2->tea.card, card_name, sizeof(fmr2->tea.card)); in fmr2_probe()
238 snprintf(fmr2->tea.bus_info, sizeof(fmr2->tea.bus_info), "%s:%s", in fmr2_probe()
239 fmr2->is_fmd2 ? "PnP" : "ISA", dev_name(pdev)); in fmr2_probe()
241 if (snd_tea575x_init(&fmr2->tea, THIS_MODULE)) { in fmr2_probe()
243 release_region(fmr2->io, 2); in fmr2_probe()
248 card_name, fmr2->io); in fmr2_probe()
254 struct fmr2 *fmr2 = kzalloc(sizeof(*fmr2), GFP_KERNEL); in fmr2_isa_match() local
255 if (!fmr2) in fmr2_isa_match()
258 if (fmr2_probe(fmr2, pdev, FMR2_PORT)) { in fmr2_isa_match()
259 kfree(fmr2); in fmr2_isa_match()
262 dev_set_drvdata(pdev, fmr2); in fmr2_isa_match()
263 fmr2_cards[num_fmr2_cards++] = fmr2; in fmr2_isa_match()
271 struct fmr2 *fmr2 = kzalloc(sizeof(*fmr2), GFP_KERNEL); in fmr2_pnp_probe() local
272 if (!fmr2) in fmr2_pnp_probe()
275 fmr2->is_fmd2 = true; in fmr2_pnp_probe()
276 ret = fmr2_probe(fmr2, &pdev->dev, pnp_port_start(pdev, 0)); in fmr2_pnp_probe()
278 kfree(fmr2); in fmr2_pnp_probe()
281 pnp_set_drvdata(pdev, fmr2); in fmr2_pnp_probe()
282 fmr2_cards[num_fmr2_cards++] = fmr2; in fmr2_pnp_probe()
287 static void fmr2_remove(struct fmr2 *fmr2) in fmr2_remove() argument
289 snd_tea575x_exit(&fmr2->tea); in fmr2_remove()
290 release_region(fmr2->io, 2); in fmr2_remove()
291 v4l2_device_unregister(&fmr2->v4l2_dev); in fmr2_remove()
292 kfree(fmr2); in fmr2_remove()