Path: blob/master/drivers/media/dvb/dvb-usb/dibusb-mc.c
15111 views
/* DVB USB compliant linux driver for mobile DVB-T USB devices based on1* reference designs made by DiBcom (http://www.dibcom.fr/) (DiB3000M-C/P)2*3* Copyright (C) 2004-5 Patrick Boettcher ([email protected])4*5* based on GPL code from DiBcom, which has6* Copyright (C) 2004 Amaury Demol for DiBcom ([email protected])7*8* This program is free software; you can redistribute it and/or modify it9* under the terms of the GNU General Public License as published by the Free10* Software Foundation, version 2.11*12* see Documentation/dvb/README.dvb-usb for more information13*/14#include "dibusb.h"1516DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);1718/* USB Driver stuff */19static struct dvb_usb_device_properties dibusb_mc_properties;2021static int dibusb_mc_probe(struct usb_interface *intf,22const struct usb_device_id *id)23{24return dvb_usb_device_init(intf, &dibusb_mc_properties, THIS_MODULE,25NULL, adapter_nr);26}2728/* do not change the order of the ID table */29static struct usb_device_id dibusb_dib3000mc_table [] = {30/* 00 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3001_COLD) },31/* 01 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3001_WARM) },32/* 02 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_COLD) },33/* 03 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_WARM) }, // ( ? )34/* 04 */ { USB_DEVICE(USB_VID_LITEON, USB_PID_LITEON_DVB_T_COLD) },35/* 05 */ { USB_DEVICE(USB_VID_LITEON, USB_PID_LITEON_DVB_T_WARM) },36/* 06 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_DIGIVOX_MINI_SL_COLD) },37/* 07 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_DIGIVOX_MINI_SL_WARM) },38/* 08 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB2_COLD) },39/* 09 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB2_WARM) },40/* 10 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14_COLD) },41/* 11 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14_WARM) },42/* 12 */ { USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV_DONGLE_COLD) },43/* 13 */ { USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV_DONGLE_WARM) },44/* 14 */ { USB_DEVICE(USB_VID_HUMAX_COEX, USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD) },45/* 15 */ { USB_DEVICE(USB_VID_HUMAX_COEX, USB_PID_DVB_T_USB_STICK_HIGH_SPEED_WARM) },46{ } /* Terminating entry */47};48MODULE_DEVICE_TABLE (usb, dibusb_dib3000mc_table);4950static struct dvb_usb_device_properties dibusb_mc_properties = {51.caps = DVB_USB_IS_AN_I2C_ADAPTER,5253.usb_ctrl = CYPRESS_FX2,54.firmware = "dvb-usb-dibusb-6.0.0.8.fw",5556.num_adapters = 1,57.adapter = {58{59.caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,60.pid_filter_count = 32,61.streaming_ctrl = dibusb2_0_streaming_ctrl,62.pid_filter = dibusb_pid_filter,63.pid_filter_ctrl = dibusb_pid_filter_ctrl,64.frontend_attach = dibusb_dib3000mc_frontend_attach,65.tuner_attach = dibusb_dib3000mc_tuner_attach,6667/* parameter for the MPEG2-data transfer */68.stream = {69.type = USB_BULK,70.count = 8,71.endpoint = 0x06,72.u = {73.bulk = {74.buffersize = 4096,75}76}77},78.size_of_priv = sizeof(struct dibusb_state),79}80},81.power_ctrl = dibusb2_0_power_ctrl,8283.rc.legacy = {84.rc_interval = DEFAULT_RC_INTERVAL,85.rc_map_table = rc_map_dibusb_table,86.rc_map_size = 111, /* FIXME */87.rc_query = dibusb_rc_query,88},8990.i2c_algo = &dibusb_i2c_algo,9192.generic_bulk_ctrl_endpoint = 0x01,9394.num_device_descs = 8,95.devices = {96{ "DiBcom USB2.0 DVB-T reference design (MOD3000P)",97{ &dibusb_dib3000mc_table[0], NULL },98{ &dibusb_dib3000mc_table[1], NULL },99},100{ "Artec T1 USB2.0 TVBOX (please check the warm ID)",101{ &dibusb_dib3000mc_table[2], NULL },102{ &dibusb_dib3000mc_table[3], NULL },103},104{ "LITE-ON USB2.0 DVB-T Tuner",105/* Also rebranded as Intuix S800, Toshiba */106{ &dibusb_dib3000mc_table[4], NULL },107{ &dibusb_dib3000mc_table[5], NULL },108},109{ "MSI Digivox Mini SL",110{ &dibusb_dib3000mc_table[6], NULL },111{ &dibusb_dib3000mc_table[7], NULL },112},113{ "GRAND - USB2.0 DVB-T adapter",114{ &dibusb_dib3000mc_table[8], NULL },115{ &dibusb_dib3000mc_table[9], NULL },116},117{ "Artec T14 - USB2.0 DVB-T",118{ &dibusb_dib3000mc_table[10], NULL },119{ &dibusb_dib3000mc_table[11], NULL },120},121{ "Leadtek - USB2.0 Winfast DTV dongle",122{ &dibusb_dib3000mc_table[12], NULL },123{ &dibusb_dib3000mc_table[13], NULL },124},125{ "Humax/Coex DVB-T USB Stick 2.0 High Speed",126{ &dibusb_dib3000mc_table[14], NULL },127{ &dibusb_dib3000mc_table[15], NULL },128},129{ NULL },130}131};132133static struct usb_driver dibusb_mc_driver = {134.name = "dvb_usb_dibusb_mc",135.probe = dibusb_mc_probe,136.disconnect = dvb_usb_device_exit,137.id_table = dibusb_dib3000mc_table,138};139140/* module stuff */141static int __init dibusb_mc_module_init(void)142{143int result;144if ((result = usb_register(&dibusb_mc_driver))) {145err("usb_register failed. Error number %d",result);146return result;147}148149return 0;150}151152static void __exit dibusb_mc_module_exit(void)153{154/* deregister this driver from the USB subsystem */155usb_deregister(&dibusb_mc_driver);156}157158module_init (dibusb_mc_module_init);159module_exit (dibusb_mc_module_exit);160161MODULE_AUTHOR("Patrick Boettcher <[email protected]>");162MODULE_DESCRIPTION("Driver for DiBcom USB2.0 DVB-T (DiB3000M-C/P based) devices");163MODULE_VERSION("1.0");164MODULE_LICENSE("GPL");165166167