Commit 70bfae5a authored by Michel Ludwig's avatar Michel Ludwig Committed by Mauro Carvalho Chehab

V4L/DVB (12818): tm6000: Use dvb_frontend_detach instead of single symbol_put commands

Thanks to Mike Krufky for pointed that one out. Also include some minor
cleanups.
Signed-off-by: default avatarMichel Ludwig <michel.ludwig@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent e762d420
...@@ -237,8 +237,9 @@ struct dvb_frontend* pseudo_zl10353_attach(struct tm6000_core *dev, ...@@ -237,8 +237,9 @@ struct dvb_frontend* pseudo_zl10353_attach(struct tm6000_core *dev,
{ {
struct tm6000_dvb *dvb = dev->dvb; struct tm6000_dvb *dvb = dev->dvb;
dvb->frontend = zl10353_attach(config, i2c); dvb->frontend = dvb_attach(zl10353_attach, config, i2c);
if(!dvb->frontend) { if(!dvb->frontend) {
printk(KERN_ERR "Error during zl10353_attach!\n");
return NULL; return NULL;
} }
......
...@@ -205,12 +205,7 @@ int tm6000_dvb_attach_frontend(struct tm6000_core *dev) ...@@ -205,12 +205,7 @@ int tm6000_dvb_attach_frontend(struct tm6000_core *dev)
return -1; return -1;
} }
if(dvb->frontend) { return (!dvb->frontend) ? -1 : 0;
return 0;
}
else {
return -1;
}
} }
int tm6000_dvb_register(struct tm6000_core *dev) int tm6000_dvb_register(struct tm6000_core *dev)
...@@ -226,7 +221,7 @@ int tm6000_dvb_register(struct tm6000_core *dev) ...@@ -226,7 +221,7 @@ int tm6000_dvb_register(struct tm6000_core *dev)
ret = tm6000_dvb_attach_frontend(dev); ret = tm6000_dvb_attach_frontend(dev);
if(ret < 0) { if(ret < 0) {
printk(KERN_ERR "tm6000: couldn't attach the frontend!\n"); 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", ret = dvb_register_adapter(&dvb->adapter, "Trident TVMaster 6000 DVB-T",
...@@ -250,7 +245,7 @@ int tm6000_dvb_register(struct tm6000_core *dev) ...@@ -250,7 +245,7 @@ int tm6000_dvb_register(struct tm6000_core *dev)
printk(KERN_ERR "tm6000: couldn't register " printk(KERN_ERR "tm6000: couldn't register "
"frontend (xc3028)\n"); "frontend (xc3028)\n");
ret = -EINVAL; ret = -EINVAL;
goto adapter_err; goto frontend_err;
} }
printk(KERN_INFO "tm6000: XC2028/3028 asked to be " printk(KERN_INFO "tm6000: XC2028/3028 asked to be "
"attached to frontend!\n"); "attached to frontend!\n");
...@@ -288,10 +283,8 @@ int tm6000_dvb_register(struct tm6000_core *dev) ...@@ -288,10 +283,8 @@ int tm6000_dvb_register(struct tm6000_core *dev)
dvb_dmx_release(&dvb->demux); dvb_dmx_release(&dvb->demux);
frontend_err: frontend_err:
if(dvb->frontend) { if(dvb->frontend) {
dvb_frontend_detach(dvb->frontend);
dvb_unregister_frontend(dvb->frontend); dvb_unregister_frontend(dvb->frontend);
#ifdef CONFIG_DVB_CORE_ATTACH
symbol_put(xc3028_attach);
#endif
} }
adapter_err: adapter_err:
dvb_unregister_adapter(&dvb->adapter); dvb_unregister_adapter(&dvb->adapter);
...@@ -314,10 +307,8 @@ void tm6000_dvb_unregister(struct tm6000_core *dev) ...@@ -314,10 +307,8 @@ void tm6000_dvb_unregister(struct tm6000_core *dev)
// mutex_lock(&tm6000_driver.open_close_mutex); // mutex_lock(&tm6000_driver.open_close_mutex);
if(dvb->frontend) { if(dvb->frontend) {
dvb_frontend_detach(dvb->frontend);
dvb_unregister_frontend(dvb->frontend); dvb_unregister_frontend(dvb->frontend);
#ifdef CONFIG_DVB_CORE_ATTACH
symbol_put(xc3028_attach);
#endif
} }
dvb_dmxdev_release(&dvb->dmxdev); dvb_dmxdev_release(&dvb->dmxdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment