Commit 6f6be371 authored by Brad Love's avatar Brad Love Committed by Mauro Carvalho Chehab
Browse files

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: default avatarBrad Love <brad@nextdimension.cc>
Reviewed-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent cac821d2
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -404,6 +404,9 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap)
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;
}

+3 −0
Original line number Diff line number Diff line
@@ -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;