linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / media / dvb / dvb-usb / dtt200u-fe.c
index 17413ad..cd21ddb 100644 (file)
@@ -18,6 +18,7 @@ struct dtt200u_fe_state {
 
        struct dvb_frontend_parameters fep;
        struct dvb_frontend frontend;
+       struct dvb_frontend_ops ops;
 };
 
 static int dtt200u_fe_read_status(struct dvb_frontend* fe, fe_status_t *stat)
@@ -162,13 +163,16 @@ struct dvb_frontend* dtt200u_fe_attach(struct dvb_usb_device *d)
        deb_info("attaching frontend dtt200u\n");
 
        state->d = d;
+       memcpy(&state->ops,&dtt200u_fe_ops,sizeof(struct dvb_frontend_ops));
 
-       memcpy(&state->frontend.ops,&dtt200u_fe_ops,sizeof(struct dvb_frontend_ops));
+       state->frontend.ops = &state->ops;
        state->frontend.demodulator_priv = state;
 
-       return &state->frontend;
+       goto success;
 error:
        return NULL;
+success:
+       return &state->frontend;
 }
 
 static struct dvb_frontend_ops dtt200u_fe_ops = {