V4L/DVB (12818): tm6000: Use dvb_frontend_detach instead of single symbol_put commands
authorMichel Ludwig <michel.ludwig@gmail.com>
Mon, 19 Nov 2007 09:10:54 +0000 (06:10 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 18 May 2010 03:40:01 +0000 (00:40 -0300)
Thanks to Mike Krufky for pointed that one out. Also include some minor
cleanups.

Signed-off-by: Michel Ludwig <michel.ludwig@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/staging/tm6000/hack.c
drivers/staging/tm6000/tm6000-dvb.c

index 87f3f49..f181fce 100644 (file)
@@ -237,8 +237,9 @@ struct dvb_frontend* pseudo_zl10353_attach(struct tm6000_core *dev,
 {
        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;
        }
 
index b423795..fa6d3a0 100644 (file)
@@ -205,12 +205,7 @@ int tm6000_dvb_attach_frontend(struct tm6000_core *dev)
                return -1;
        }
 
-       if(dvb->frontend) {
-               return 0;
-       }
-       else {
-               return -1;
-       }
+       return (!dvb->frontend) ? -1 : 0;
 }
 
 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);
        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",
@@ -250,7 +245,7 @@ int tm6000_dvb_register(struct tm6000_core *dev)
                        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");
@@ -288,10 +283,8 @@ dvb_dmx_err:
        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);
@@ -314,10 +307,8 @@ void tm6000_dvb_unregister(struct tm6000_core *dev)
 
 //     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);