diff options
Diffstat (limited to 'drivers/media/usb/dvb-usb-v2/az6007.c')
| -rw-r--r-- | drivers/media/usb/dvb-usb-v2/az6007.c | 63 | 
1 files changed, 61 insertions, 2 deletions
diff --git a/drivers/media/usb/dvb-usb-v2/az6007.c b/drivers/media/usb/dvb-usb-v2/az6007.c index 44c64ef361b..c3c4b98733b 100644 --- a/drivers/media/usb/dvb-usb-v2/az6007.c +++ b/drivers/media/usb/dvb-usb-v2/az6007.c @@ -7,7 +7,7 @@   *	http://linux.terratec.de/files/TERRATEC_H7/20110323_TERRATEC_H7_Linux.tar.gz   * The original driver's license is GPL, as declared with MODULE_LICENSE()   * - * Copyright (c) 2010-2012 Mauro Carvalho Chehab <mchehab@redhat.com> + * Copyright (c) 2010-2012 Mauro Carvalho Chehab   *	Driver modified by in order to work with upstream drxk driver, and   *	tons of bugs got fixed, and converted to use dvb-usb-v2.   * @@ -68,6 +68,19 @@ static struct drxk_config terratec_h7_drxk = {  	.microcode_name = "dvb-usb-terratec-h7-drxk.fw",  }; +static struct drxk_config cablestar_hdci_drxk = { +	.adr = 0x29, +	.parallel_ts = true, +	.dynamic_clk = true, +	.single_master = true, +	.enable_merr_cfg = true, +	.no_i2c_bridge = false, +	.chunk_size = 64, +	.mpeg_out_clk_strength = 0x02, +	.qam_demod_parameter_count = 2, +	.microcode_name = "dvb-usb-technisat-cablestar-hdci-drxk.fw", +}; +  static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)  {  	struct az6007_device_state *st = fe_to_priv(fe); @@ -630,6 +643,27 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap)  	return 0;  } +static int az6007_cablestar_hdci_frontend_attach(struct dvb_usb_adapter *adap) +{ +	struct az6007_device_state *st = adap_to_priv(adap); +	struct dvb_usb_device *d = adap_to_d(adap); + +	pr_debug("attaching demod drxk\n"); + +	adap->fe[0] = dvb_attach(drxk_attach, &cablestar_hdci_drxk, +				 &d->i2c_adap); +	if (!adap->fe[0]) +		return -EINVAL; + +	adap->fe[0]->sec_priv = adap; +	st->gate_ctrl = adap->fe[0]->ops.i2c_gate_ctrl; +	adap->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl; + +	az6007_ci_init(adap); + +	return 0; +} +  static int az6007_tuner_attach(struct dvb_usb_adapter *adap)  {  	struct dvb_usb_device *d = adap_to_d(adap); @@ -868,6 +902,29 @@ static struct dvb_usb_device_properties az6007_props = {  	}  }; +static struct dvb_usb_device_properties az6007_cablestar_hdci_props = { +	.driver_name         = KBUILD_MODNAME, +	.owner               = THIS_MODULE, +	.firmware            = AZ6007_FIRMWARE, + +	.adapter_nr          = adapter_nr, +	.size_of_priv        = sizeof(struct az6007_device_state), +	.i2c_algo            = &az6007_i2c_algo, +	.tuner_attach        = az6007_tuner_attach, +	.frontend_attach     = az6007_cablestar_hdci_frontend_attach, +	.streaming_ctrl      = az6007_streaming_ctrl, +/* ditch get_rc_config as it can't work (TS35 remote, I believe it's rc5) */ +	.get_rc_config       = NULL, +	.read_mac_address    = az6007_read_mac_addr, +	.download_firmware   = az6007_download_firmware, +	.identify_state	     = az6007_identify_state, +	.power_ctrl          = az6007_power_ctrl, +	.num_adapters        = 1, +	.adapter             = { +		{ .stream = DVB_USB_STREAM_BULK(0x02, 10, 4096), } +	} +}; +  static struct usb_device_id az6007_usb_table[] = {  	{DVB_USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_6007,  		&az6007_props, "Azurewave 6007", RC_MAP_EMPTY)}, @@ -875,6 +932,8 @@ static struct usb_device_id az6007_usb_table[] = {  		&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},  	{DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_H7_2,  		&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)}, +	{DVB_USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI, +		&az6007_cablestar_hdci_props, "Technisat CableStar Combo HD CI", RC_MAP_EMPTY)},  	{0},  }; @@ -916,7 +975,7 @@ static struct usb_driver az6007_usb_driver = {  module_usb_driver(az6007_usb_driver);  MODULE_AUTHOR("Henry Wang <Henry.wang@AzureWave.com>"); -MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@redhat.com>"); +MODULE_AUTHOR("Mauro Carvalho Chehab");  MODULE_DESCRIPTION("Driver for AzureWave 6007 DVB-C/T USB2.0 and clones");  MODULE_VERSION("2.0");  MODULE_LICENSE("GPL");  | 
