if (UNSET == core->radio_type) core->radio_type = cx88_boards[core->board].radio_type; if (!core->tuner_addr) core->tuner_addr = cx88_boards[core->board].tuner_addr; if (!core->radio_addr) core->radio_addr = cx88_boards[core->board].radio_addr;  printk(KERN_INFO "TV tuner %d at 0x%02x, Radio tuner %d at 0x%02x\n", core->tuner_type, core->tuner_addr<<1, core->radio_type, core->radio_addr<<1);  
struct cx88_core* cx88_core_get(struct pci_dev *pci){	struct cx88_core *core;	struct list_head *item;	int i;	down(&devlist);	list_for_each(item,&cx88_devlist) {		core = list_entry(item, struct cx88_core, devlist);		if (pci->bus->number != core->pci_bus)			continue;		if (PCI_SLOT(pci->devfn) != core->pci_slot)			continue;		if (0 != get_ressources(core,pci))			goto fail_unlock;		atomic_inc(&core->refcount);		up(&devlist);		return core;	}	core = kmalloc(sizeof(*core),GFP_KERNEL);	if (NULL == core)		goto fail_unlock;	memset(core,0,sizeof(*core));	atomic_inc(&core->refcount);	core->pci_bus  = pci->bus->number;	core->pci_slot = PCI_SLOT(pci->devfn);	core->pci_irqmask = 0x00fc00;	core->nr = cx88_devcount++;	sprintf(core->name,"cx88[%d]",core->nr);	if (0 != get_ressources(core,pci)) {		cx88_devcount--;		goto fail_free;	}	list_add_tail(&core->devlist,&cx88_devlist);	/* PCI stuff */	cx88_pci_quirks(core->name, pci);	core->lmmio = ioremap(pci_resource_start(pci,0),			      pci_resource_len(pci,0));	core->bmmio = (u8 __iomem *)core->lmmio;	/* board config */	core->board = UNSET;	if (card[core->nr] < cx88_bcount)		core->board = card[core->nr];	for (i = 0; UNSET == core->board  &&  i < cx88_idcount; i++)		if (pci->subsystem_vendor == cx88_subids[i].subvendor &&		    pci->subsystem_device == cx88_subids[i].subdevice)			core->board = cx88_subids[i].card;	if (UNSET == core->board) {		core->board = CX88_BOARD_UNKNOWN;		cx88_card_list(core,pci);	}        printk(KERN_INFO "%s: subsystem: %04x:%04x, board: %s [card=%d,%s]\n",	       core->name,pci->subsystem_vendor,	       pci->subsystem_device,cx88_boards[core->board].name,	       core->board, card[core->nr] == core->board ?	       "insmod option" : "autodetected");	core->tuner_type = tuner[core->nr];	if (UNSET == core->tuner_type)		core->tuner_type = cx88_boards[core->board].tuner_type;	core->tda9887_conf = cx88_boards[core->board].tda9887_conf;	/* init hardware */	cx88_reset(core);	cx88_i2c_init(core,pci);	cx88_card_setup(core);	cx88_ir_init(core,pci);	up(&devlist);	return core;fail_free:	kfree(core);fail_unlock:	up(&devlist);	return NULL;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b45009b0288a96a3458f4f8e93cb776678d41875/cx88-core.c/clean/drivers/media/video/cx88/cx88-core.c