0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include "dibusb.h"
0013
0014 DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
0015
0016
0017 static struct dvb_usb_device_properties dibusb_mc_properties;
0018
0019 static int dibusb_mc_probe(struct usb_interface *intf,
0020 const struct usb_device_id *id)
0021 {
0022 return dvb_usb_device_init(intf, &dibusb_mc_properties, THIS_MODULE,
0023 NULL, adapter_nr);
0024 }
0025
0026
0027 enum {
0028 DIBCOM_MOD3001_COLD,
0029 DIBCOM_MOD3001_WARM,
0030 ULTIMA_TVBOX_USB2_COLD,
0031 ULTIMA_TVBOX_USB2_WARM,
0032 LITEON_DVB_T_COLD,
0033 LITEON_DVB_T_WARM,
0034 EMPIA_DIGIVOX_MINI_SL_COLD,
0035 EMPIA_DIGIVOX_MINI_SL_WARM,
0036 GRANDTEC_DVBT_USB2_COLD,
0037 GRANDTEC_DVBT_USB2_WARM,
0038 ULTIMA_ARTEC_T14_COLD,
0039 ULTIMA_ARTEC_T14_WARM,
0040 LEADTEK_WINFAST_DTV_DONGLE_COLD,
0041 LEADTEK_WINFAST_DTV_DONGLE_WARM,
0042 HUMAX_DVB_T_STICK_HIGH_SPEED_COLD,
0043 HUMAX_DVB_T_STICK_HIGH_SPEED_WARM,
0044 };
0045
0046 static struct usb_device_id dibusb_dib3000mc_table[] = {
0047 DVB_USB_DEV(DIBCOM, DIBCOM_MOD3001_COLD),
0048 DVB_USB_DEV(DIBCOM, DIBCOM_MOD3001_WARM),
0049 DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_USB2_COLD),
0050 DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_USB2_WARM),
0051 DVB_USB_DEV(LITEON, LITEON_DVB_T_COLD),
0052 DVB_USB_DEV(LITEON, LITEON_DVB_T_WARM),
0053 DVB_USB_DEV(EMPIA, EMPIA_DIGIVOX_MINI_SL_COLD),
0054 DVB_USB_DEV(EMPIA, EMPIA_DIGIVOX_MINI_SL_WARM),
0055 DVB_USB_DEV(GRANDTEC, GRANDTEC_DVBT_USB2_COLD),
0056 DVB_USB_DEV(GRANDTEC, GRANDTEC_DVBT_USB2_WARM),
0057 DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_ARTEC_T14_COLD),
0058 DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_ARTEC_T14_WARM),
0059 DVB_USB_DEV(LEADTEK, LEADTEK_WINFAST_DTV_DONGLE_COLD),
0060 DVB_USB_DEV(LEADTEK, LEADTEK_WINFAST_DTV_DONGLE_WARM),
0061 DVB_USB_DEV(HUMAX_COEX, HUMAX_DVB_T_STICK_HIGH_SPEED_COLD),
0062 DVB_USB_DEV(HUMAX_COEX, HUMAX_DVB_T_STICK_HIGH_SPEED_WARM),
0063 { }
0064 };
0065
0066 MODULE_DEVICE_TABLE (usb, dibusb_dib3000mc_table);
0067
0068 static struct dvb_usb_device_properties dibusb_mc_properties = {
0069 .caps = DVB_USB_IS_AN_I2C_ADAPTER,
0070
0071 .usb_ctrl = CYPRESS_FX2,
0072 .firmware = "dvb-usb-dibusb-6.0.0.8.fw",
0073
0074 .num_adapters = 1,
0075 .adapter = {
0076 {
0077 .num_frontends = 1,
0078 .fe = {{
0079 .caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
0080 .pid_filter_count = 32,
0081 .streaming_ctrl = dibusb2_0_streaming_ctrl,
0082 .pid_filter = dibusb_pid_filter,
0083 .pid_filter_ctrl = dibusb_pid_filter_ctrl,
0084 .frontend_attach = dibusb_dib3000mc_frontend_attach,
0085 .tuner_attach = dibusb_dib3000mc_tuner_attach,
0086
0087
0088 .stream = {
0089 .type = USB_BULK,
0090 .count = 8,
0091 .endpoint = 0x06,
0092 .u = {
0093 .bulk = {
0094 .buffersize = 4096,
0095 }
0096 }
0097 },
0098 }},
0099 .size_of_priv = sizeof(struct dibusb_state),
0100 }
0101 },
0102 .power_ctrl = dibusb2_0_power_ctrl,
0103
0104 .rc.legacy = {
0105 .rc_interval = DEFAULT_RC_INTERVAL,
0106 .rc_map_table = rc_map_dibusb_table,
0107 .rc_map_size = 111,
0108 .rc_query = dibusb_rc_query,
0109 },
0110
0111 .i2c_algo = &dibusb_i2c_algo,
0112
0113 .generic_bulk_ctrl_endpoint = 0x01,
0114
0115 .num_device_descs = 8,
0116 .devices = {
0117 { "DiBcom USB2.0 DVB-T reference design (MOD3000P)",
0118 { &dibusb_dib3000mc_table[DIBCOM_MOD3001_COLD], NULL },
0119 { &dibusb_dib3000mc_table[DIBCOM_MOD3001_WARM], NULL },
0120 },
0121 { "Artec T1 USB2.0 TVBOX (please check the warm ID)",
0122 { &dibusb_dib3000mc_table[ULTIMA_TVBOX_USB2_COLD], NULL },
0123 { &dibusb_dib3000mc_table[ULTIMA_TVBOX_USB2_WARM], NULL },
0124 },
0125 { "LITE-ON USB2.0 DVB-T Tuner",
0126
0127 { &dibusb_dib3000mc_table[LITEON_DVB_T_COLD], NULL },
0128 { &dibusb_dib3000mc_table[LITEON_DVB_T_WARM], NULL },
0129 },
0130 { "MSI Digivox Mini SL",
0131 { &dibusb_dib3000mc_table[EMPIA_DIGIVOX_MINI_SL_COLD], NULL },
0132 { &dibusb_dib3000mc_table[EMPIA_DIGIVOX_MINI_SL_WARM], NULL },
0133 },
0134 { "GRAND - USB2.0 DVB-T adapter",
0135 { &dibusb_dib3000mc_table[GRANDTEC_DVBT_USB2_COLD], NULL },
0136 { &dibusb_dib3000mc_table[GRANDTEC_DVBT_USB2_WARM], NULL },
0137 },
0138 { "Artec T14 - USB2.0 DVB-T",
0139 { &dibusb_dib3000mc_table[ULTIMA_ARTEC_T14_COLD], NULL },
0140 { &dibusb_dib3000mc_table[ULTIMA_ARTEC_T14_WARM], NULL },
0141 },
0142 { "Leadtek - USB2.0 Winfast DTV dongle",
0143 { &dibusb_dib3000mc_table[LEADTEK_WINFAST_DTV_DONGLE_COLD], NULL },
0144 { &dibusb_dib3000mc_table[LEADTEK_WINFAST_DTV_DONGLE_WARM], NULL },
0145 },
0146 { "Humax/Coex DVB-T USB Stick 2.0 High Speed",
0147 { &dibusb_dib3000mc_table[HUMAX_DVB_T_STICK_HIGH_SPEED_COLD], NULL },
0148 { &dibusb_dib3000mc_table[HUMAX_DVB_T_STICK_HIGH_SPEED_WARM], NULL },
0149 },
0150 { NULL },
0151 }
0152 };
0153
0154 static struct usb_driver dibusb_mc_driver = {
0155 .name = "dvb_usb_dibusb_mc",
0156 .probe = dibusb_mc_probe,
0157 .disconnect = dvb_usb_device_exit,
0158 .id_table = dibusb_dib3000mc_table,
0159 };
0160
0161 module_usb_driver(dibusb_mc_driver);
0162
0163 MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@posteo.de>");
0164 MODULE_DESCRIPTION("Driver for DiBcom USB2.0 DVB-T (DiB3000M-C/P based) devices");
0165 MODULE_VERSION("1.0");
0166 MODULE_LICENSE("GPL");