Commit 37571b16 authored by Antti Palosaari's avatar Antti Palosaari Committed by Mauro Carvalho Chehab

[media] em28xx-dvb: fix PCTV 461e tuner I2C binding

Add missing m88ts2022 module reference counts as removing that module
is not allowed when it is used by em28xx-dvb module. That same module
was not unregistered correctly, fix it too.

Error cases validated by returning errors from m88ds3103, m88ts2022
and a8293 probe().
Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 418a97cb
...@@ -1602,6 +1602,7 @@ static int em28xx_dvb_suspend(struct em28xx *dev) ...@@ -1602,6 +1602,7 @@ static int em28xx_dvb_suspend(struct em28xx *dev)
em28xx_info("Suspending DVB extension"); em28xx_info("Suspending DVB extension");
if (dev->dvb) { if (dev->dvb) {
struct em28xx_dvb *dvb = dev->dvb; struct em28xx_dvb *dvb = dev->dvb;
struct i2c_client *client = dvb->i2c_client_tuner;
if (dvb->fe[0]) { if (dvb->fe[0]) {
ret = dvb_frontend_suspend(dvb->fe[0]); ret = dvb_frontend_suspend(dvb->fe[0]);
...@@ -1639,6 +1640,15 @@ static int em28xx_dvb_resume(struct em28xx *dev) ...@@ -1639,6 +1640,15 @@ static int em28xx_dvb_resume(struct em28xx *dev)
ret = dvb_frontend_resume(dvb->fe[1]); ret = dvb_frontend_resume(dvb->fe[1]);
em28xx_info("fe1 resume %d", ret); 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; return 0;
......
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