summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad Love <brad@nextdimension.cc>2018-12-20 15:14:25 -0500
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-06-13 14:29:37 -0400
commit6f6be371608e88922970a3968f963720ba3871f0 (patch)
treeb3cc2b992b8f1c1d88aa49e4573a7f7840c14bf4
parentcac821d2ea72fbefb16e8af1e192ec70aae29afe (diff)
downloadlinux-stable-6f6be371608e88922970a3968f963720ba3871f0.tar.gz
linux-stable-6f6be371608e88922970a3968f963720ba3871f0.tar.bz2
linux-stable-6f6be371608e88922970a3968f963720ba3871f0.zip
media: pvrusb2: Add i2c client demod/tuner support
i2c client device is the "new" method to attach to dvb modules, include support for this functionality. Cleanup code has been added to init in case of failure, as well as to frontend exit. Required by Hauppauge HVR-1975 Signed-off-by: Brad Love <brad@nextdimension.cc> Reviewed-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
-rw-r--r--drivers/media/usb/pvrusb2/pvrusb2-dvb.c11
-rw-r--r--drivers/media/usb/pvrusb2/pvrusb2-dvb.h3
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-dvb.c b/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
index f302f1e7670a..7f5df5c47232 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
@@ -404,6 +404,9 @@ fail_tuner:
fail_frontend0:
dvb_frontend_detach(adap->fe[0]);
adap->fe[0] = NULL;
+ dvb_module_release(adap->i2c_client_tuner);
+ dvb_module_release(adap->i2c_client_demod[1]);
+ dvb_module_release(adap->i2c_client_demod[0]);
return ret;
}
@@ -420,6 +423,14 @@ static int pvr2_dvb_frontend_exit(struct pvr2_dvb_adapter *adap)
dvb_frontend_detach(adap->fe[0]);
adap->fe[0] = NULL;
}
+
+ dvb_module_release(adap->i2c_client_tuner);
+ adap->i2c_client_tuner = NULL;
+ dvb_module_release(adap->i2c_client_demod[1]);
+ adap->i2c_client_demod[1] = NULL;
+ dvb_module_release(adap->i2c_client_demod[0]);
+ adap->i2c_client_demod[0] = NULL;
+
return 0;
}
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-dvb.h b/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
index 91bff573288d..c0b27f5211bf 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
+++ b/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
@@ -20,6 +20,9 @@ struct pvr2_dvb_adapter {
struct dvb_net dvb_net;
struct dvb_frontend *fe[2];
+ struct i2c_client *i2c_client_demod[2];
+ struct i2c_client *i2c_client_tuner;
+
int feedcount;
int max_feed_count;