struct sp8870_state* state = (struct sp8870_state*) fe->demodulator_priv; 
struct sp8870_state* state = fe->demodulator_priv; 
static int sp8870_init (struct dvb_frontend* fe){	struct sp8870_state* state = (struct sp8870_state*) fe->demodulator_priv;        const struct firmware *fw = NULL;	sp8870_wake_up(state);	if (state->initialised) return 0;	state->initialised = 1;	dprintk ("%s\n", __FUNCTION__);	/* request the firmware, this will block until someone uploads it */	printk("sp8870: waiting for firmware upload (%s)...\n", SP8870_DEFAULT_FIRMWARE);	if (state->config->request_firmware(fe, &fw, SP8870_DEFAULT_FIRMWARE)) {		printk("sp8870: no firmware upload (timeout or file not found?)\n");		release_firmware(fw);		return -EIO;	}	if (sp8870_firmware_upload(state, fw)) {		printk("sp8870: writing firmware to device failed\n");		release_firmware(fw);		return -EIO;	}	printk("sp8870: firmware upload complete\n");	/* enable TS output and interface pins */	sp8870_writereg(state, 0xc18, 0x00d);	// system controller stop	sp8870_microcontroller_stop(state);	// ADC mode	sp8870_writereg(state, 0x0301, 0x0003);	// Reed Solomon parity bytes passed to output	sp8870_writereg(state, 0x0C13, 0x0001);	// MPEG clock is suppressed if no valid data	sp8870_writereg(state, 0x0C14, 0x0001);	/* bit 0x010: enable data valid signal */	sp8870_writereg(state, 0x0D00, 0x010);	sp8870_writereg(state, 0x0D01, 0x000);	/* setup PLL */	if (state->config->pll_init) {		sp8870_writereg(state, 0x206, 0x001);		state->config->pll_init(fe);		sp8870_writereg(state, 0x206, 0x000);	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b8742700f13163ffa00cddce2a3c940b9ab2ab5a/sp8870.c/buggy/drivers/media/dvb/frontends/sp8870.c