ret = dvb_register_frontend(av7110->dvb_adapter, av7110->fe); 
ret = dvb_register_frontend(&av7110->dvb_adapter, av7110->fe); 
static int frontend_init(struct av7110 *av7110){	int ret;	if (av7110->dev->pci->subsystem_vendor == 0x110a) {		switch(av7110->dev->pci->subsystem_device) {		case 0x0000: // Fujitsu/Siemens DVB-Cable (ves1820/Philips CD1516(??))			av7110->fe = ves1820_attach(&philips_cd1516_config,						    &av7110->i2c_adap, read_pwm(av7110));			break;		}	} else if (av7110->dev->pci->subsystem_vendor == 0x13c2) {		switch(av7110->dev->pci->subsystem_device) {		case 0x0000: // Hauppauge/TT WinTV DVB-S rev1.X		case 0x0003: // Hauppauge/TT WinTV Nexus-S Rev 2.X		case 0x1002: // Hauppauge/TT WinTV DVB-S rev1.3SE			// try the ALPS BSRV2 first of all			av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap);			if (av7110->fe) {				av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;				av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst;				av7110->fe->ops->set_tone = av7110_set_tone;				break;			}			// try the ALPS BSRU6 now			av7110->fe = stv0299_attach(&alps_bsru6_config, &av7110->i2c_adap);			if (av7110->fe) {				av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;				av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst;				av7110->fe->ops->set_tone = av7110_set_tone;				break;			}			// Try the grundig 29504-451                        av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap);			if (av7110->fe) {				av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;				av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst;				av7110->fe->ops->set_tone = av7110_set_tone;				break;			}			/* Try DVB-C cards */			switch(av7110->dev->pci->subsystem_device) {			case 0x0000:				/* Siemens DVB-C (full-length card) VES1820/Philips CD1516 */				av7110->fe = ves1820_attach(&philips_cd1516_config, &av7110->i2c_adap,							read_pwm(av7110));				break;			case 0x0003:				/* Haupauge DVB-C 2.1 VES1820/ALPS TDBE2 */				av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap,							read_pwm(av7110));				break;			}			break;		case 0x0001: // Hauppauge/TT Nexus-T premium rev1.X			// ALPS TDLB7                        av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap);			break;		case 0x0002: // Hauppauge/TT DVB-C premium rev2.X                        av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110));			break;		case 0x0006: /* Fujitsu-Siemens DVB-S rev 1.6 */			/* Grundig 29504-451 */			av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap);			if (av7110->fe) {				av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd;				av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst;				av7110->fe->ops->set_tone = av7110_set_tone;			}			break;		case 0x0008: // Hauppauge/TT DVB-T			av7110->fe = l64781_attach(&grundig_29504_401_config, &av7110->i2c_adap);			break;		case 0x000A: // Hauppauge/TT Nexus-CA rev1.X			av7110->fe = stv0297_attach(&nexusca_stv0297_config, &av7110->i2c_adap, 0x7b);			if (av7110->fe) {				/* set TDA9819 into DVB mode */				saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9198 pin9(STD)				saa7146_setgpio(av7110->dev, 3, SAA7146_GPIO_OUTLO); // TDA9198 pin30(VIF)				/* tuner on this needs a slower i2c bus speed */				av7110->dev->i2c_bitrate = SAA7146_I2C_BUS_BIT_RATE_240;				break;			}			break;		case 0x000E: /* Hauppauge/TT Nexus-S rev 2.3 */			/* ALPS BSBE1 */			av7110->fe = stv0299_attach(&alps_bsbe1_config, &av7110->i2c_adap);			if (av7110->fe)				av7110->fe->ops->set_voltage = lnbp21_set_voltage;			break;		}	}	if (!av7110->fe) {		/* FIXME: propagate the failure code from the lower layers */		ret = -ENOMEM;		printk("dvb-ttpci: A frontend driver was not found for device %04x/%04x subsystem %04x/%04x\n",		       av7110->dev->pci->vendor,		       av7110->dev->pci->device,		       av7110->dev->pci->subsystem_vendor,		       av7110->dev->pci->subsystem_device);	} else {		FE_FUNC_OVERRIDE(av7110->fe->ops->init, av7110->fe_init, av7110_fe_init);		FE_FUNC_OVERRIDE(av7110->fe->ops->read_status, av7110->fe_read_status, av7110_fe_read_status);		FE_FUNC_OVERRIDE(av7110->fe->ops->diseqc_reset_overload, av7110->fe_diseqc_reset_overload, av7110_fe_diseqc_reset_overload);		FE_FUNC_OVERRIDE(av7110->fe->ops->diseqc_send_master_cmd, av7110->fe_diseqc_send_master_cmd, av7110_fe_diseqc_send_master_cmd);		FE_FUNC_OVERRIDE(av7110->fe->ops->diseqc_send_burst, av7110->fe_diseqc_send_burst, av7110_fe_diseqc_send_burst);		FE_FUNC_OVERRIDE(av7110->fe->ops->set_tone, av7110->fe_set_tone, av7110_fe_set_tone);		FE_FUNC_OVERRIDE(av7110->fe->ops->set_voltage, av7110->fe_set_voltage, av7110_fe_set_voltage;)		FE_FUNC_OVERRIDE(av7110->fe->ops->dishnetwork_send_legacy_command, av7110->fe_dishnetwork_send_legacy_command, av7110_fe_dishnetwork_send_legacy_command);		FE_FUNC_OVERRIDE(av7110->fe->ops->set_frontend, av7110->fe_set_frontend, av7110_fe_set_frontend);		ret = dvb_register_frontend(av7110->dvb_adapter, av7110->fe);		if (ret < 0) {			printk("av7110: Frontend registration failed!\n");			if (av7110->fe->ops->release)				av7110->fe->ops->release(av7110->fe);			av7110->fe = NULL;		}	}	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/fdc53a6dbfea18e621dd23ed5cfb160837d7ce52/av7110.c/buggy/drivers/media/dvb/ttpci/av7110.c