fmr2
static void tc9154a_set_pins(struct fmr2 *fmr2, u8 pins)
if (!fmr2->tea.mute)
outb(pins, fmr2->io);
static void tc9154a_set_attenuation(struct fmr2 *fmr2, int att, u32 channel)
tc9154a_set_pins(fmr2, bit);
tc9154a_set_pins(fmr2, bit | PT_CK);
tc9154a_set_pins(fmr2, bit);
tc9154a_set_pins(fmr2, PT_ST);
tc9154a_set_pins(fmr2, 0);
struct fmr2 *fmr2 = tea->private_data;
balance = fmr2->balance->cur.val;
volume = fmr2->volume->cur.val;
tc9154a_set_attenuation(fmr2, abs(left - 68), TC9154A_CHANNEL_LEFT);
tc9154a_set_attenuation(fmr2, abs(right - 68), TC9154A_CHANNEL_RIGHT);
struct fmr2 *fmr2 = tea->private_data;
if (!fmr2->is_fmd2 && inb(fmr2->io) & FMR2_HASVOL) {
fmr2->volume = v4l2_ctrl_new_std(&tea->ctrl_handler, &fmr2_ctrl_ops, V4L2_CID_AUDIO_VOLUME, 0, 68, 2, 56);
fmr2->balance = v4l2_ctrl_new_std(&tea->ctrl_handler, &fmr2_ctrl_ops, V4L2_CID_AUDIO_BALANCE, -68, 68, 2, 0);
static int fmr2_probe(struct fmr2 *fmr2, struct device *pdev, int io)
char *card_name = fmr2->is_fmd2 ? "SF16-FMD2" : "SF16-FMR2";
strscpy(fmr2->v4l2_dev.name, "radio-sf16fmr2",
sizeof(fmr2->v4l2_dev.name));
fmr2->io = io;
if (!request_region(fmr2->io, 2, fmr2->v4l2_dev.name)) {
printk(KERN_ERR "radio-sf16fmr2: I/O port 0x%x already in use\n", fmr2->io);
dev_set_drvdata(pdev, fmr2);
err = v4l2_device_register(pdev, &fmr2->v4l2_dev);
v4l2_err(&fmr2->v4l2_dev, "Could not register v4l2_device\n");
release_region(fmr2->io, 2);
fmr2->tea.v4l2_dev = &fmr2->v4l2_dev;
fmr2->tea.private_data = fmr2;
fmr2->tea.radio_nr = radio_nr[num_fmr2_cards];
fmr2->tea.ops = &fmr2_tea_ops;
fmr2->tea.ext_init = fmr2_tea_ext_init;
strscpy(fmr2->tea.card, card_name, sizeof(fmr2->tea.card));
snprintf(fmr2->tea.bus_info, sizeof(fmr2->tea.bus_info), "%s:%s",
fmr2->is_fmd2 ? "PnP" : "ISA", dev_name(pdev));
if (snd_tea575x_init(&fmr2->tea, THIS_MODULE)) {
release_region(fmr2->io, 2);
card_name, fmr2->io);
struct fmr2 *fmr2 = kzalloc_obj(*fmr2);
if (!fmr2)
if (fmr2_probe(fmr2, pdev, FMR2_PORT)) {
kfree(fmr2);
dev_set_drvdata(pdev, fmr2);
fmr2_cards[num_fmr2_cards++] = fmr2;
struct fmr2 *fmr2 = kzalloc_obj(*fmr2);
if (!fmr2)
fmr2->is_fmd2 = true;
ret = fmr2_probe(fmr2, &pdev->dev, pnp_port_start(pdev, 0));
kfree(fmr2);
pnp_set_drvdata(pdev, fmr2);
fmr2_cards[num_fmr2_cards++] = fmr2;
static void fmr2_remove(struct fmr2 *fmr2)
snd_tea575x_exit(&fmr2->tea);
release_region(fmr2->io, 2);
v4l2_device_unregister(&fmr2->v4l2_dev);
kfree(fmr2);
static struct fmr2 *fmr2_cards[FMR2_MAX];
struct fmr2 *fmr2 = tea->private_data;
outb(bits, fmr2->io);
struct fmr2 *fmr2 = tea->private_data;
u8 bits = inb(fmr2->io);
u8 fmr1, fmr2;
fmr2 = PEF2256_FMR2_AXRA;
fmr2 |= PEF2256_FMR2_RFS_DOUBLEFRAME;
fmr2 |= PEF2256_FMR2_RFS_CRC4_MULTIFRAME;
fmr2 |= PEF2256_FMR2_RFS_AUTO_MULTIFRAME;
pef2256_write8(pef2256, PEF2256_FMR2, fmr2);