return &state->frontend; 
struct dvb_frontend* dst_attach(const struct dst_config* config,				struct i2c_adapter* i2c,				struct bt878 *bt){	struct dst_state* state = NULL;	/* allocate memory for the internal state */	state = (struct dst_state*) kmalloc(sizeof(struct dst_state), GFP_KERNEL);	if (state == NULL) goto error;	/* setup the state */	state->config = config;	state->i2c = i2c;	state->bt = bt;	/* check if the demod is there */	if (dst_check_ci(state) < 0) goto error;	/* determine settings based on type */	switch (state->dst_type) {	case DST_TYPE_IS_TERR:		memcpy(&state->ops, &dst_dvbt_ops, sizeof(struct dvb_frontend_ops));		break;	case DST_TYPE_IS_CABLE:		memcpy(&state->ops, &dst_dvbc_ops, sizeof(struct dvb_frontend_ops));		break;	case DST_TYPE_IS_SAT:		memcpy(&state->ops, &dst_dvbs_ops, sizeof(struct dvb_frontend_ops));		break;	default:		printk("dst: unknown frontend type. please report to the LinuxTV.org DVB mailinglist.\n");		goto error;	}	/* create dvb_frontend */	state->frontend.ops = &state->ops;	state->frontend.demodulator_priv = state;	return &state->frontend;error:	kfree(state);	return NULL;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/50b215a05878ce9636dace6cd21f7e91ff005058/dst.c/clean/drivers/media/dvb/bt8xx/dst.c