ttpci_eeprom_parse_mac(&budget->i2c_adap, budget->dvb_adapter->proposed_mac); 
ttpci_eeprom_parse_mac(&budget->i2c_adap, budget->dvb_adapter.proposed_mac); 
int ttpci_budget_init(struct budget *budget, struct saa7146_dev *dev,		      struct saa7146_pci_extension_data *info,		      struct module *owner){	int length = TS_WIDTH * TS_HEIGHT;	int ret = 0;	struct budget_info *bi = info->ext_priv;	memset(budget, 0, sizeof(struct budget));	dprintk(2, "dev: %p, budget: %p\n", dev, budget);	budget->card = bi;	budget->dev = (struct saa7146_dev *) dev;	dvb_register_adapter(&budget->dvb_adapter, budget->card->name, owner);	/* set dd1 stream a & b */	saa7146_write(dev, DD1_STREAM_B, 0x00000000);	saa7146_write(dev, MC2, (MASK_09 | MASK_25));	saa7146_write(dev, MC2, (MASK_10 | MASK_26));	saa7146_write(dev, DD1_INIT, 0x02000000);	saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26));	if (bi->type != BUDGET_FS_ACTIVY)		budget->video_port = BUDGET_VIDEO_PORTB;	else		budget->video_port = BUDGET_VIDEO_PORTA;	spin_lock_init(&budget->feedlock);	spin_lock_init(&budget->debilock);	/* the Siemens DVB needs this if you want to have the i2c chips	   get recognized before the main driver is loaded */	if (bi->type != BUDGET_FS_ACTIVY)		saa7146_write(dev, GPIO_CTRL, 0x500000);	/* GPIO 3 = 1 */#ifdef I2C_ADAP_CLASS_TV_DIGITAL	budget->i2c_adap.class = I2C_ADAP_CLASS_TV_DIGITAL;#else	budget->i2c_adap.class = I2C_CLASS_TV_DIGITAL;#endif	strlcpy(budget->i2c_adap.name, budget->card->name, sizeof(budget->i2c_adap.name));	saa7146_i2c_adapter_prepare(dev, &budget->i2c_adap, SAA7146_I2C_BUS_BIT_RATE_120);	strcpy(budget->i2c_adap.name, budget->card->name);	if (i2c_add_adapter(&budget->i2c_adap) < 0) {		dvb_unregister_adapter(budget->dvb_adapter);		return -ENOMEM;	}	ttpci_eeprom_parse_mac(&budget->i2c_adap, budget->dvb_adapter->proposed_mac);	if (NULL ==	    (budget->grabbing = saa7146_vmalloc_build_pgtable(dev->pci, length, &budget->pt))) {		ret = -ENOMEM;		goto err;	}	saa7146_write(dev, PCI_BT_V1, 0x001c0000);	/* upload all */	saa7146_write(dev, GPIO_CTRL, 0x000000);	tasklet_init(&budget->vpe_tasklet, vpeirq, (unsigned long) budget);	/* frontend power on */	if (bi->type == BUDGET_FS_ACTIVY)		saa7146_setgpio(dev, 1, SAA7146_GPIO_OUTHI);	else		saa7146_setgpio(dev, 2, SAA7146_GPIO_OUTHI);	if (budget_register(budget) == 0) {		return 0;	}err:	i2c_del_adapter(&budget->i2c_adap);	vfree(budget->grabbing);	dvb_unregister_adapter(budget->dvb_adapter);	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/fdc53a6dbfea18e621dd23ed5cfb160837d7ce52/budget-core.c/buggy/drivers/media/dvb/ttpci/budget-core.c