{
struct tm6000_dvb *dvb = dev->dvb;
- dvb->frontend = zl10353_attach(config, i2c);
+ dvb->frontend = dvb_attach(zl10353_attach, config, i2c);
if(!dvb->frontend) {
+ printk(KERN_ERR "Error during zl10353_attach!\n");
return NULL;
}
return -1;
}
- if(dvb->frontend) {
- return 0;
- }
- else {
- return -1;
- }
+ return (!dvb->frontend) ? -1 : 0;
}
int tm6000_dvb_register(struct tm6000_core *dev)
ret = tm6000_dvb_attach_frontend(dev);
if(ret < 0) {
printk(KERN_ERR "tm6000: couldn't attach the frontend!\n");
-// goto err;
+ goto err;
}
ret = dvb_register_adapter(&dvb->adapter, "Trident TVMaster 6000 DVB-T",
printk(KERN_ERR "tm6000: couldn't register "
"frontend (xc3028)\n");
ret = -EINVAL;
- goto adapter_err;
+ goto frontend_err;
}
printk(KERN_INFO "tm6000: XC2028/3028 asked to be "
"attached to frontend!\n");
dvb_dmx_release(&dvb->demux);
frontend_err:
if(dvb->frontend) {
+ dvb_frontend_detach(dvb->frontend);
dvb_unregister_frontend(dvb->frontend);
-#ifdef CONFIG_DVB_CORE_ATTACH
- symbol_put(xc3028_attach);
-#endif
}
adapter_err:
dvb_unregister_adapter(&dvb->adapter);
// mutex_lock(&tm6000_driver.open_close_mutex);
if(dvb->frontend) {
+ dvb_frontend_detach(dvb->frontend);
dvb_unregister_frontend(dvb->frontend);
-#ifdef CONFIG_DVB_CORE_ATTACH
- symbol_put(xc3028_attach);
-#endif
}
dvb_dmxdev_release(&dvb->dmxdev);