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>
这个提交包含在:
Brad Love
2018-12-20 15:14:25 -05:00
提交者 Mauro Carvalho Chehab
父节点 cac821d2ea
当前提交 6f6be37160
修改 2 个文件,包含 14 行新增0 行删除

查看文件

@@ -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;
}

查看文件

@@ -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;