]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/media/usb/em28xx/em28xx-dvb.c
[media] em28xx-dvb: fix PCTV 461e tuner I2C binding
[karo-tx-linux.git] / drivers / media / usb / em28xx / em28xx-dvb.c
index 6638394b34577626798ed61bc8ed1cdc2df12e15..d6ec572a8a6cecb96bc1bd6fc059a9b923af98e1 100644 (file)
@@ -1602,6 +1602,7 @@ static int em28xx_dvb_suspend(struct em28xx *dev)
        em28xx_info("Suspending DVB extension");
        if (dev->dvb) {
                struct em28xx_dvb *dvb = dev->dvb;
+               struct i2c_client *client = dvb->i2c_client_tuner;
 
                if (dvb->fe[0]) {
                        ret = dvb_frontend_suspend(dvb->fe[0]);
@@ -1639,6 +1640,15 @@ static int em28xx_dvb_resume(struct em28xx *dev)
                        ret = dvb_frontend_resume(dvb->fe[1]);
                        em28xx_info("fe1 resume %d", ret);
                }
+               /* remove I2C tuner */
+               if (client) {
+                       module_put(client->dev.driver->owner);
+                       i2c_unregister_device(client);
+               }
+
+               em28xx_unregister_dvb(dvb);
+               kfree(dvb);
+               dev->dvb = NULL;
        }
 
        return 0;