コード例 #1
0
ファイル: radio-sf16fmr2.c プロジェクト: kprog/linux
static int __init fmr2_init(void)
{
	struct fmr2 *fmr2 = &fmr2_card;

	fmr2->io = FMR2_PORT;

	if (!request_region(fmr2->io, 2, "SF16-FMR2")) {
		printk(KERN_ERR "radio-sf16fmr2: I/O port 0x%x already in use\n", fmr2->io);
		return -EBUSY;
	}

	fmr2->tea.private_data = fmr2;
	fmr2->tea.ops = &fmr2_tea_ops;
	fmr2->tea.ext_init = fmr2_tea_ext_init;
	strlcpy(fmr2->tea.card, "SF16-FMR2", sizeof(fmr2->tea.card));
	strcpy(fmr2->tea.bus_info, "ISA");

	if (snd_tea575x_init(&fmr2->tea)) {
		printk(KERN_ERR "radio-sf16fmr2: Unable to detect TEA575x tuner\n");
		release_region(fmr2->io, 2);
		return -ENODEV;
	}

	printk(KERN_INFO "radio-sf16fmr2: SF16-FMR2 radio card at 0x%x.\n", fmr2->io);
	return 0;
}
コード例 #2
0
ファイル: radio-sf16fmr2.c プロジェクト: Niisp/MT6795.kernel
static int fmr2_probe(struct fmr2 *fmr2, struct device *pdev, int io)
{
    int err, i;
    char *card_name = fmr2->is_fmd2 ? "SF16-FMD2" : "SF16-FMR2";

    /* avoid errors if a card was already registered at given port */
    for (i = 0; i < num_fmr2_cards; i++)
        if (io == fmr2_cards[i]->io)
            return -EBUSY;

    strlcpy(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);
        return -EBUSY;
    }

    dev_set_drvdata(pdev, fmr2);
    err = v4l2_device_register(pdev, &fmr2->v4l2_dev);
    if (err < 0) {
        v4l2_err(&fmr2->v4l2_dev, "Could not register v4l2_device\n");
        release_region(fmr2->io, 2);
        return err;
    }
    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;
    strlcpy(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)) {
        printk(KERN_ERR "radio-sf16fmr2: Unable to detect TEA575x tuner\n");
        release_region(fmr2->io, 2);
        return -ENODEV;
    }

    printk(KERN_INFO "radio-sf16fmr2: %s radio card at 0x%x.\n",
           card_name, fmr2->io);
    return 0;
}