1776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach/* DVB USB compliant linux driver for mobile DVB-T USB devices based on 2776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * reference designs made by DiBcom (http://www.dibcom.fr/) (DiB3000M-C/P) 3776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * 4776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@desy.de) 5776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * 6776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * based on GPL code from DiBcom, which has 7776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * Copyright (C) 2004 Amaury Demol for DiBcom (ademol@dibcom.fr) 8776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * 9776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * This program is free software; you can redistribute it and/or modify it 10776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * under the terms of the GNU General Public License as published by the Free 11776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * Software Foundation, version 2. 12776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * 13776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach * see Documentation/dvb/README.dvb-usb for more information 14776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach */ 15776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach#include "dibusb.h" 16776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 1778e92006f410a4044f8c1760c25ac9d11d259aa2Janne GrunauDVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); 1878e92006f410a4044f8c1760c25ac9d11d259aa2Janne Grunau 19776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach/* USB Driver stuff */ 204d43e13f723e12734257277cc38497fab1efc605Patrick Boettcherstatic struct dvb_usb_device_properties dibusb_mc_properties; 21776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 22776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbachstatic int dibusb_mc_probe(struct usb_interface *intf, 23776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach const struct usb_device_id *id) 24776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach{ 2578e92006f410a4044f8c1760c25ac9d11d259aa2Janne Grunau return dvb_usb_device_init(intf, &dibusb_mc_properties, THIS_MODULE, 2678e92006f410a4044f8c1760c25ac9d11d259aa2Janne Grunau NULL, adapter_nr); 27776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach} 28776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 29776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach/* do not change the order of the ID table */ 30776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbachstatic struct usb_device_id dibusb_dib3000mc_table [] = { 31776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach/* 00 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3001_COLD) }, 32776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach/* 01 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3001_WARM) }, 33776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach/* 02 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_COLD) }, 34a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET/* 03 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_WARM) }, // ( ? ) 35a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET/* 04 */ { USB_DEVICE(USB_VID_LITEON, USB_PID_LITEON_DVB_T_COLD) }, 36a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET/* 05 */ { USB_DEVICE(USB_VID_LITEON, USB_PID_LITEON_DVB_T_WARM) }, 37a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET/* 06 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_DIGIVOX_MINI_SL_COLD) }, 38a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET/* 07 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_DIGIVOX_MINI_SL_WARM) }, 39e4d6c1f74aaac1bbe5be50e7368e5ac99d54e5a2Patrick Boettcher/* 08 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB2_COLD) }, 40e4d6c1f74aaac1bbe5be50e7368e5ac99d54e5a2Patrick Boettcher/* 09 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB2_WARM) }, 41cb25a74d49f3589c7868422ec48d219246a4fca4Patrick Boettcher/* 10 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14_COLD) }, 42cb25a74d49f3589c7868422ec48d219246a4fca4Patrick Boettcher/* 11 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14_WARM) }, 43d7357a53ef4d59724ad80560e47102e0095555b6Olivier DANET/* 12 */ { USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV_DONGLE_COLD) }, 44d7357a53ef4d59724ad80560e47102e0095555b6Olivier DANET/* 13 */ { USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV_DONGLE_WARM) }, 45ce212f052fa2fe1a5e71af13be63667e1916d084Nam Phạm Thành/* 14 */ { USB_DEVICE(USB_VID_HUMAX_COEX, USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD) }, 46ce212f052fa2fe1a5e71af13be63667e1916d084Nam Phạm Thành/* 15 */ { USB_DEVICE(USB_VID_HUMAX_COEX, USB_PID_DVB_T_USB_STICK_HIGH_SPEED_WARM) }, 47776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach { } /* Terminating entry */ 48776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach}; 49776338e121b9db3156bfb4e21622a0219bbab9d4Johannes StezenbachMODULE_DEVICE_TABLE (usb, dibusb_dib3000mc_table); 50776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 514d43e13f723e12734257277cc38497fab1efc605Patrick Boettcherstatic struct dvb_usb_device_properties dibusb_mc_properties = { 524d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .caps = DVB_USB_IS_AN_I2C_ADAPTER, 53776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 54776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach .usb_ctrl = CYPRESS_FX2, 55776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach .firmware = "dvb-usb-dibusb-6.0.0.8.fw", 56776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 574d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .num_adapters = 1, 584d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .adapter = { 594d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher { 6077eed219fed5a913f59329cc846420fdeab0150fMichael Krufky .num_frontends = 1, 6177eed219fed5a913f59329cc846420fdeab0150fMichael Krufky .fe = {{ 624d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF, 634d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .pid_filter_count = 32, 6401451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .streaming_ctrl = dibusb2_0_streaming_ctrl, 6501451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .pid_filter = dibusb_pid_filter, 6601451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .pid_filter_ctrl = dibusb_pid_filter_ctrl, 6701451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .frontend_attach = dibusb_dib3000mc_frontend_attach, 6801451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .tuner_attach = dibusb_dib3000mc_tuner_attach, 69776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 70776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach /* parameter for the MPEG2-data transfer */ 714d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .stream = { 724d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .type = USB_BULK, 73ce212f052fa2fe1a5e71af13be63667e1916d084Nam Phạm Thành .count = 8, 7401451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .endpoint = 0x06, 7501451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .u = { 7601451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .bulk = { 7701451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher .buffersize = 4096, 7801451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher } 7901451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher } 8001451e722793f191f6e13c5150dd8664f4439d17Patrick Boettcher }, 8177eed219fed5a913f59329cc846420fdeab0150fMichael Krufky }}, 824d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .size_of_priv = sizeof(struct dibusb_state), 834d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher } 844d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher }, 854d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .power_ctrl = dibusb2_0_power_ctrl, 864d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher 87f72a27b8ed4458bb9f7203408441d27382bc93f4Mauro Carvalho Chehab .rc.legacy = { 88f72a27b8ed4458bb9f7203408441d27382bc93f4Mauro Carvalho Chehab .rc_interval = DEFAULT_RC_INTERVAL, 892f4f58d689dd71dea67407b74405a3c43e797cb1Mauro Carvalho Chehab .rc_map_table = rc_map_dibusb_table, 902f4f58d689dd71dea67407b74405a3c43e797cb1Mauro Carvalho Chehab .rc_map_size = 111, /* FIXME */ 91f72a27b8ed4458bb9f7203408441d27382bc93f4Mauro Carvalho Chehab .rc_query = dibusb_rc_query, 92f72a27b8ed4458bb9f7203408441d27382bc93f4Mauro Carvalho Chehab }, 934d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher 944d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .i2c_algo = &dibusb_i2c_algo, 954d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher 964d43e13f723e12734257277cc38497fab1efc605Patrick Boettcher .generic_bulk_ctrl_endpoint = 0x01, 97776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 98ce212f052fa2fe1a5e71af13be63667e1916d084Nam Phạm Thành .num_device_descs = 8, 99776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach .devices = { 100776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach { "DiBcom USB2.0 DVB-T reference design (MOD3000P)", 101776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach { &dibusb_dib3000mc_table[0], NULL }, 102776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach { &dibusb_dib3000mc_table[1], NULL }, 103776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach }, 104a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { "Artec T1 USB2.0 TVBOX (please check the warm ID)", 105776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach { &dibusb_dib3000mc_table[2], NULL }, 106a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { &dibusb_dib3000mc_table[3], NULL }, 107776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach }, 108a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { "LITE-ON USB2.0 DVB-T Tuner", 109a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET /* Also rebranded as Intuix S800, Toshiba */ 110a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { &dibusb_dib3000mc_table[4], NULL }, 111a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { &dibusb_dib3000mc_table[5], NULL }, 112a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET }, 113a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { "MSI Digivox Mini SL", 114a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { &dibusb_dib3000mc_table[6], NULL }, 115a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { &dibusb_dib3000mc_table[7], NULL }, 116a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET }, 117a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { "GRAND - USB2.0 DVB-T adapter", 118a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { &dibusb_dib3000mc_table[8], NULL }, 119a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { &dibusb_dib3000mc_table[9], NULL }, 120a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET }, 121cb25a74d49f3589c7868422ec48d219246a4fca4Patrick Boettcher { "Artec T14 - USB2.0 DVB-T", 122cb25a74d49f3589c7868422ec48d219246a4fca4Patrick Boettcher { &dibusb_dib3000mc_table[10], NULL }, 123cb25a74d49f3589c7868422ec48d219246a4fca4Patrick Boettcher { &dibusb_dib3000mc_table[11], NULL }, 124cb25a74d49f3589c7868422ec48d219246a4fca4Patrick Boettcher }, 125d7357a53ef4d59724ad80560e47102e0095555b6Olivier DANET { "Leadtek - USB2.0 Winfast DTV dongle", 126d7357a53ef4d59724ad80560e47102e0095555b6Olivier DANET { &dibusb_dib3000mc_table[12], NULL }, 127d7357a53ef4d59724ad80560e47102e0095555b6Olivier DANET { &dibusb_dib3000mc_table[13], NULL }, 128d7357a53ef4d59724ad80560e47102e0095555b6Olivier DANET }, 129ce212f052fa2fe1a5e71af13be63667e1916d084Nam Phạm Thành { "Humax/Coex DVB-T USB Stick 2.0 High Speed", 130ce212f052fa2fe1a5e71af13be63667e1916d084Nam Phạm Thành { &dibusb_dib3000mc_table[14], NULL }, 131ce212f052fa2fe1a5e71af13be63667e1916d084Nam Phạm Thành { &dibusb_dib3000mc_table[15], NULL }, 132ce212f052fa2fe1a5e71af13be63667e1916d084Nam Phạm Thành }, 133a16bf5d5603184dc1db88f37051881b2eeacfd17Olivier DANET { NULL }, 134776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach } 135776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach}; 136776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 137776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbachstatic struct usb_driver dibusb_mc_driver = { 13863b5c1c47fd6c5ae26d279756e8a050c721ea379Patrick Boettcher .name = "dvb_usb_dibusb_mc", 139776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach .probe = dibusb_mc_probe, 140776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach .disconnect = dvb_usb_device_exit, 141776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach .id_table = dibusb_dib3000mc_table, 142776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach}; 143776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 144ecb3b2b35db49778b6d89e3ffd0c400776c20735Greg Kroah-Hartmanmodule_usb_driver(dibusb_mc_driver); 145776338e121b9db3156bfb4e21622a0219bbab9d4Johannes Stezenbach 146776338e121b9db3156bfb4e21622a0219bbab9d4Johannes StezenbachMODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@desy.de>"); 147776338e121b9db3156bfb4e21622a0219bbab9d4Johannes StezenbachMODULE_DESCRIPTION("Driver for DiBcom USB2.0 DVB-T (DiB3000M-C/P based) devices"); 148776338e121b9db3156bfb4e21622a0219bbab9d4Johannes StezenbachMODULE_VERSION("1.0"); 149776338e121b9db3156bfb4e21622a0219bbab9d4Johannes StezenbachMODULE_LICENSE("GPL"); 150