public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
@ 2008-08-08 12:32 Albert Comerma
       [not found] ` <489CCD82.5030406@gmail.com>
  0 siblings, 1 reply; 14+ messages in thread
From: Albert Comerma @ 2008-08-08 12:32 UTC (permalink / raw)
  To: linux-dvb, zeph7r


[-- Attachment #1.1: Type: text/plain, Size: 526 bytes --]

Just to clarify things...

Xceive chips are just tunners, RF chips, mostly analogue with some digital
interface, they don't do anything with usb or comunication with the
computer, for this reason you need the dibcom chip, it's a usb bridge +
decoder + something else...
To start to develop something you must first be sure of what chips it's
using.
If not you can try blindly if modifying the code for the U3000-Mini works or
Pinnacle 320cx (dibcom 7700 + xceive2028) work (you just need to add your
device usb id's).

Albert

[-- Attachment #1.2: Type: text/html, Size: 589 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
       [not found] ` <489CCD82.5030406@gmail.com>
@ 2008-08-10  9:51   ` Albert Comerma
  2008-08-11 11:22     ` zePh7r
  2008-08-11 12:39     ` zePh7r
  0 siblings, 2 replies; 14+ messages in thread
From: Albert Comerma @ 2008-08-10  9:51 UTC (permalink / raw)
  To: zePh7r; +Cc: linux-dvb


[-- Attachment #1.1: Type: text/plain, Size: 1919 bytes --]

Sorry, I didn't explained much... it also took some time to me to understand
how it's working... Since xc2028 is the tunner it has no Id information on
the code. The id's are on the usb bridge code. You should add your deviece
id's at;
/v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h and then insert your
device at
/v4l-dvb/linux/drivers/media/dvb/dvb-usb/dib0700_devices.c    first the
device descriptors (at arround line 1120) and then the device itself, I
would try it around line 1418. This last file, has already the include to
the xc2028 code and calls the tunner funcions. Looking the code around this
lines I guess you will understand how it works.

Albert

2008/8/9 zePh7r <zeph7r@gmail.com>

> Albert Comerma escreveu:
>
>  Just to clarify things...
>>
>> Xceive chips are just tunners, RF chips, mostly analogue with some digital
>> interface, they don't do anything with usb or comunication with the
>> computer, for this reason you need the dibcom chip, it's a usb bridge +
>> decoder + something else...
>> To start to develop something you must first be sure of what chips it's
>> using.
>> If not you can try blindly if modifying the code for the U3000-Mini works
>> or Pinnacle 320cx (dibcom 7700 + xceive2028) work (you just need to add your
>> device usb id's).
>>
>> Albert
>>
> Thank you for replying Albert.
> I've been exploring the files downloaded through the mercurial repository
> and though I have found files which seem like they relate to that purpose in
> /v4l-dvb/linux/drivers/media/common/tuners (which are tuner-xc2028.c ,
> tuner-xc2028.h and tuner-xc2028-types.h) I can't find any section in the
> above files with some sort of list of device ID's so as to resemble them.
> There should be something like an xc2028-cards.c right?
> This must seem a noob question but this whole process looks like something
> someone who's not deeply into this project couldn't do easily..
>

[-- Attachment #1.2: Type: text/html, Size: 2445 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
  2008-08-10  9:51   ` Albert Comerma
@ 2008-08-11 11:22     ` zePh7r
  2008-08-11 12:39     ` zePh7r
  1 sibling, 0 replies; 14+ messages in thread
From: zePh7r @ 2008-08-11 11:22 UTC (permalink / raw)
  To: Albert Comerma; +Cc: linux-dvb

Albert Comerma escreveu:
> Sorry, I didn't explained much... it also took some time to me to 
> understand how it's working... Since xc2028 is the tunner it has no Id 
> information on the code. The id's are on the usb bridge code. You 
> should add your deviece id's at;
> /v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h and then insert 
> your device at
> /v4l-dvb/linux/drivers/media/dvb/dvb-usb/dib0700_devices.c    first 
> the device descriptors (at arround line 1120) and then the device 
> itself, I would try it around line 1418. This last file, has already 
> the include to the xc2028 code and calls the tunner funcions. Looking 
> the code around this lines I guess you will understand how it works.
>
> Albert
>
> 2008/8/9 zePh7r <zeph7r@gmail.com <mailto:zeph7r@gmail.com>>
>
>     Albert Comerma escreveu:
>
>         Just to clarify things...
>
>         Xceive chips are just tunners, RF chips, mostly analogue with
>         some digital interface, they don't do anything with usb or
>         comunication with the computer, for this reason you need the
>         dibcom chip, it's a usb bridge + decoder + something else...
>         To start to develop something you must first be sure of what
>         chips it's using.
>         If not you can try blindly if modifying the code for the
>         U3000-Mini works or Pinnacle 320cx (dibcom 7700 + xceive2028)
>         work (you just need to add your device usb id's).
>
>         Albert
>
>     Thank you for replying Albert.
>     I've been exploring the files downloaded through the mercurial
>     repository and though I have found files which seem like they
>     relate to that purpose in
>     /v4l-dvb/linux/drivers/media/common/tuners (which are
>     tuner-xc2028.c , tuner-xc2028.h and tuner-xc2028-types.h) I can't
>     find any section in the above files with some sort of list of
>     device ID's so as to resemble them. There should be something like
>     an xc2028-cards.c right?
>     This must seem a noob question but this whole process looks like
>     something someone who's not deeply into this project couldn't do
>     easily..
>
>
Thank you for being assisting me on this task Albert.
I've been exploring the files you mentioned and I'm a bit puzzled about 
this specific string: &dib0700_usb_id_table[32] (where 32 is the value 
for one of the cards). I couldn't find any correlation envolved with it. 
Is there any special place I should look at to get the proper value for 
this string?
Also, the last section seemed  the right one to add the entry for my 
device. Do you agree?

Thanks..

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
  2008-08-10  9:51   ` Albert Comerma
  2008-08-11 11:22     ` zePh7r
@ 2008-08-11 12:39     ` zePh7r
  2008-08-11 13:29       ` Albert Comerma
  1 sibling, 1 reply; 14+ messages in thread
From: zePh7r @ 2008-08-11 12:39 UTC (permalink / raw)
  To: Albert Comerma; +Cc: linux-dvb

Albert Comerma escreveu:
> Sorry, I didn't explained much... it also took some time to me to 
> understand how it's working... Since xc2028 is the tunner it has no Id 
> information on the code. The id's are on the usb bridge code. You 
> should add your deviece id's at;
> /v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h and then insert 
> your device at
> /v4l-dvb/linux/drivers/media/dvb/dvb-usb/dib0700_devices.c    first 
> the device descriptors (at arround line 1120) and then the device 
> itself, I would try it around line 1418. This last file, has already 
> the include to the xc2028 code and calls the tunner funcions. Looking 
> the code around this lines I guess you will understand how it works.
>
> Albert
>
> 2008/8/9 zePh7r <zeph7r@gmail.com <mailto:zeph7r@gmail.com>>
>
>     Albert Comerma escreveu:
>
>         Just to clarify things...
>
>         Xceive chips are just tunners, RF chips, mostly analogue with
>         some digital interface, they don't do anything with usb or
>         comunication with the computer, for this reason you need the
>         dibcom chip, it's a usb bridge + decoder + something else...
>         To start to develop something you must first be sure of what
>         chips it's using.
>         If not you can try blindly if modifying the code for the
>         U3000-Mini works or Pinnacle 320cx (dibcom 7700 + xceive2028)
>         work (you just need to add your device usb id's).
>
>         Albert
>
>     Thank you for replying Albert.
>     I've been exploring the files downloaded through the mercurial
>     repository and though I have found files which seem like they
>     relate to that purpose in
>     /v4l-dvb/linux/drivers/media/common/tuners (which are
>     tuner-xc2028.c , tuner-xc2028.h and tuner-xc2028-types.h) I can't
>     find any section in the above files with some sort of list of
>     device ID's so as to resemble them. There should be something like
>     an xc2028-cards.c right?
>     This must seem a noob question but this whole process looks like
>     something someone who's not deeply into this project couldn't do
>     easily..
>
>
When I try to compile the drivers I get this:

zeph7r@zeph7r-laptop:~/v4l/v4l-dvb> make all
make -C /home/zeph7r/v4l/v4l-dvb/v4l all
make[1]: Entering directory `/home/zeph7r/v4l/v4l-dvb/v4l'
Updating/Creating .config
Preparing to compile for kernel version 2.6.25
File not found: /lib/modules/2.6.25.11-0.1-default/build/.config at 
./scripts/make_kconfig.pl line 32, <IN> line 4.
make[1]: *** No rule to make target `.myconfig', needed by 
`config-compat.h'.  Stop.
make[1]: Leaving directory `/home/zeph7r/v4l/v4l-dvb/v4l'
make: *** [all] Error 2

any hints on what might be causing this? I went look at that dir and 
found a makedumpfile.config , perhaps I should edit config-compat.h and 
set it to go look for that file instead..

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
  2008-08-11 12:39     ` zePh7r
@ 2008-08-11 13:29       ` Albert Comerma
  2008-08-11 15:28         ` zePh7r
  0 siblings, 1 reply; 14+ messages in thread
From: Albert Comerma @ 2008-08-11 13:29 UTC (permalink / raw)
  To: zePh7r; +Cc: linux-dvb


[-- Attachment #1.1: Type: text/plain, Size: 3453 bytes --]

If you look around line 1082 of dib0700_devices.c you will find the table of
the cards, which refers to the id's you added on dvb-usb-ids.h. So you must
add an entry to that table. I send you the modified files, so you can see. I
also send you a .config file you must copy on v4l-dvb/v4l/ folder. Then go
into v4l-dvb and just type make, and then as root make install. That should
work without problems. To try all of this you need the dibcom and xceive
firmware at /lib/firmware

Albert

2008/8/11 zePh7r <zeph7r@gmail.com>

> Albert Comerma escreveu:
>
>> Sorry, I didn't explained much... it also took some time to me to
>> understand how it's working... Since xc2028 is the tunner it has no Id
>> information on the code. The id's are on the usb bridge code. You should add
>> your deviece id's at;
>> /v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h and then insert
>> your device at
>> /v4l-dvb/linux/drivers/media/dvb/dvb-usb/dib0700_devices.c    first the
>> device descriptors (at arround line 1120) and then the device itself, I
>> would try it around line 1418. This last file, has already the include to
>> the xc2028 code and calls the tunner funcions. Looking the code around this
>> lines I guess you will understand how it works.
>>
>> Albert
>>
>> 2008/8/9 zePh7r <zeph7r@gmail.com <mailto:zeph7r@gmail.com>>
>>
>>    Albert Comerma escreveu:
>>
>>        Just to clarify things...
>>
>>        Xceive chips are just tunners, RF chips, mostly analogue with
>>        some digital interface, they don't do anything with usb or
>>        comunication with the computer, for this reason you need the
>>        dibcom chip, it's a usb bridge + decoder + something else...
>>        To start to develop something you must first be sure of what
>>        chips it's using.
>>        If not you can try blindly if modifying the code for the
>>        U3000-Mini works or Pinnacle 320cx (dibcom 7700 + xceive2028)
>>        work (you just need to add your device usb id's).
>>
>>        Albert
>>
>>    Thank you for replying Albert.
>>    I've been exploring the files downloaded through the mercurial
>>    repository and though I have found files which seem like they
>>    relate to that purpose in
>>    /v4l-dvb/linux/drivers/media/common/tuners (which are
>>    tuner-xc2028.c , tuner-xc2028.h and tuner-xc2028-types.h) I can't
>>    find any section in the above files with some sort of list of
>>    device ID's so as to resemble them. There should be something like
>>    an xc2028-cards.c right?
>>    This must seem a noob question but this whole process looks like
>>    something someone who's not deeply into this project couldn't do
>>    easily..
>>
>>
>>  When I try to compile the drivers I get this:
>
> zeph7r@zeph7r-laptop:~/v4l/v4l-dvb> make all
> make -C /home/zeph7r/v4l/v4l-dvb/v4l all
> make[1]: Entering directory `/home/zeph7r/v4l/v4l-dvb/v4l'
> Updating/Creating .config
> Preparing to compile for kernel version 2.6.25
> File not found: /lib/modules/2.6.25.11-0.1-default/build/.config at
> ./scripts/make_kconfig.pl line 32, <IN> line 4.
> make[1]: *** No rule to make target `.myconfig', needed by
> `config-compat.h'.  Stop.
> make[1]: Leaving directory `/home/zeph7r/v4l/v4l-dvb/v4l'
> make: *** [all] Error 2
>
> any hints on what might be causing this? I went look at that dir and found
> a makedumpfile.config , perhaps I should edit config-compat.h and set it to
> go look for that file instead..
>

[-- Attachment #1.2: Type: text/html, Size: 4562 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: dvb-usb-ids.h --]
[-- Type: text/x-chdr; name=dvb-usb-ids.h, Size: 8767 bytes --]

/* dvb-usb-ids.h is part of the DVB USB library.
 *
 * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@desy.de) see
 * dvb-usb-init.c for copyright information.
 *
 * a header file containing define's for the USB device supported by the
 * various drivers.
 */
#ifndef _DVB_USB_IDS_H_
#define _DVB_USB_IDS_H_

/* Vendor IDs */
#define USB_VID_ADSTECH				0x06e1
#define USB_VID_AFATECH				0x15a4
#define USB_VID_ALCOR_MICRO			0x058f
#define USB_VID_ALINK				0x05e3
#define USB_VID_AMT				0x1c73
#define USB_VID_ANCHOR				0x0547
#define USB_VID_ANSONIC				0x10b9
#define USB_VID_ANUBIS_ELECTRONIC		0x10fd
#define USB_VID_ASUS				0x0b05
#define USB_VID_AVERMEDIA			0x07ca
#define USB_VID_COMPRO				0x185b
#define USB_VID_COMPRO_UNK			0x145f
#define USB_VID_CYPRESS				0x04b4
#define USB_VID_DIBCOM				0x10b8
#define USB_VID_DPOSH				0x1498
#define USB_VID_DVICO				0x0fe9
#define USB_VID_EMPIA				0xeb1a
#define USB_VID_GENPIX				0x09c0
#define USB_VID_GRANDTEC			0x5032
#define USB_VID_HANFTEK				0x15f4
#define USB_VID_HAUPPAUGE			0x2040
#define USB_VID_HYPER_PALTEK			0x1025
#define USB_VID_KWORLD				0xeb2a
#define USB_VID_KYE				0x0458
#define USB_VID_LEADTEK				0x0413
#define USB_VID_LITEON				0x04ca
#define USB_VID_MEDION				0x1660
#define USB_VID_MIGLIA				0x18f3
#define USB_VID_MSI				0x0db0
#define USB_VID_OPERA1				0x695c
#define USB_VID_PINNACLE			0x2304
#define USB_VID_TECHNOTREND			0x0b48
#define USB_VID_TERRATEC			0x0ccd
#define USB_VID_VISIONPLUS			0x13d3
#define USB_VID_TWINHAN				0x1822
#define USB_VID_ULTIMA_ELECTRONIC		0x05d8
#define USB_VID_UNIWILL				0x1584
#define USB_VID_WIDEVIEW			0x14aa
#define USB_VID_GIGABYTE			0x1044
#define USB_VID_YUAN				0x1164


/* Product IDs */
#define USB_PID_ADSTECH_USB2_COLD			0xa333
#define USB_PID_ADSTECH_USB2_WARM			0xa334
#define USB_PID_AFATECH_AF9005				0x9020
#define USB_VID_ALINK_DTU				0xf170
#define USB_PID_ANSONIC_DVBT_USB			0x6000
#define USB_PID_ANYSEE					0x861f
#define USB_PID_AVERMEDIA_DVBT_USB_COLD			0x0001
#define USB_PID_AVERMEDIA_DVBT_USB_WARM			0x0002
#define USB_PID_AVERMEDIA_DVBT_USB2_COLD		0xa800
#define USB_PID_AVERMEDIA_DVBT_USB2_WARM		0xa801
#define USB_PID_COMPRO_DVBU2000_COLD			0xd000
#define USB_PID_COMPRO_DVBU2000_WARM			0xd001
#define USB_PID_COMPRO_DVBU2000_UNK_COLD		0x010c
#define USB_PID_COMPRO_DVBU2000_UNK_WARM		0x010d
#define USB_PID_COMPRO_VIDEOMATE_U500			0x1e78
#define USB_PID_COMPRO_VIDEOMATE_U500_PC		0x1e80
#define USB_PID_DIBCOM_HOOK_DEFAULT			0x0064
#define USB_PID_DIBCOM_HOOK_DEFAULT_REENUM		0x0065
#define USB_PID_DIBCOM_MOD3000_COLD			0x0bb8
#define USB_PID_DIBCOM_MOD3000_WARM			0x0bb9
#define USB_PID_DIBCOM_MOD3001_COLD			0x0bc6
#define USB_PID_DIBCOM_MOD3001_WARM			0x0bc7
#define USB_PID_DIBCOM_STK7700P				0x1e14
#define USB_PID_DIBCOM_STK7700P_PC			0x1e78
#define USB_PID_DIBCOM_STK7700D				0x1ef0
#define USB_PID_DIBCOM_STK7700_U7000			0x7001
#define USB_PID_DIBCOM_STK7070P				0x1ebc
#define USB_PID_DIBCOM_STK7070PD			0x1ebe
#define USB_PID_DIBCOM_ANCHOR_2135_COLD			0x2131
#define USB_PID_DPOSH_M9206_COLD			0x9206
#define USB_PID_DPOSH_M9206_WARM			0xa090
#define USB_PID_UNIWILL_STK7700P			0x6003
#define USB_PID_GRANDTEC_DVBT_USB_COLD			0x0fa0
#define USB_PID_GRANDTEC_DVBT_USB_WARM			0x0fa1
#define USB_PID_KWORLD_VSTREAM_COLD			0x17de
#define USB_PID_KWORLD_VSTREAM_WARM			0x17df
#define USB_PID_TERRATEC_CINERGY_T_USB_XE		0x0055
#define USB_PID_TWINHAN_VP7041_COLD			0x3201
#define USB_PID_TWINHAN_VP7041_WARM			0x3202
#define USB_PID_TWINHAN_VP7020_COLD			0x3203
#define USB_PID_TWINHAN_VP7020_WARM			0x3204
#define USB_PID_TWINHAN_VP7045_COLD			0x3205
#define USB_PID_TWINHAN_VP7045_WARM			0x3206
#define USB_PID_TWINHAN_VP7021_COLD			0x3207
#define USB_PID_TWINHAN_VP7021_WARM			0x3208
#define USB_PID_DNTV_TINYUSB2_COLD			0x3223
#define USB_PID_DNTV_TINYUSB2_WARM			0x3224
#define USB_PID_ULTIMA_TVBOX_COLD			0x8105
#define USB_PID_ULTIMA_TVBOX_WARM			0x8106
#define USB_PID_ULTIMA_TVBOX_AN2235_COLD		0x8107
#define USB_PID_ULTIMA_TVBOX_AN2235_WARM		0x8108
#define USB_PID_ULTIMA_TVBOX_ANCHOR_COLD		0x2235
#define USB_PID_ULTIMA_TVBOX_USB2_COLD			0x8109
#define USB_PID_ULTIMA_TVBOX_USB2_WARM			0x810a
#define USB_PID_ARTEC_T14_COLD				0x810b
#define USB_PID_ARTEC_T14_WARM				0x810c
#define USB_PID_ARTEC_T14BR				0x810f
#define USB_PID_ULTIMA_TVBOX_USB2_FX_COLD		0x8613
#define USB_PID_ULTIMA_TVBOX_USB2_FX_WARM		0x1002
#define USB_PID_UNK_HYPER_PALTEK_COLD			0x005e
#define USB_PID_UNK_HYPER_PALTEK_WARM			0x005f
#define USB_PID_HANFTEK_UMT_010_COLD			0x0001
#define USB_PID_HANFTEK_UMT_010_WARM			0x0015
#define USB_PID_DTT200U_COLD				0x0201
#define USB_PID_DTT200U_WARM				0x0301
#define USB_PID_WT220U_ZAP250_COLD			0x0220
#define USB_PID_WT220U_COLD				0x0222
#define USB_PID_WT220U_WARM				0x0221
#define USB_PID_WT220U_FC_COLD				0x0225
#define USB_PID_WT220U_FC_WARM				0x0226
#define USB_PID_WT220U_ZL0353_COLD			0x022a
#define USB_PID_WT220U_ZL0353_WARM			0x022b
#define USB_PID_WINTV_NOVA_T_USB2_COLD			0x9300
#define USB_PID_WINTV_NOVA_T_USB2_WARM			0x9301
#define USB_PID_HAUPPAUGE_NOVA_T_500			0x9941
#define USB_PID_HAUPPAUGE_NOVA_T_500_2			0x9950
#define USB_PID_HAUPPAUGE_NOVA_T_STICK			0x7050
#define USB_PID_HAUPPAUGE_NOVA_T_STICK_2		0x7060
#define USB_PID_HAUPPAUGE_NOVA_T_STICK_3		0x7070
#define USB_PID_HAUPPAUGE_MYTV_T			0x7080
#define USB_PID_HAUPPAUGE_NOVA_TD_STICK			0x9580
#define USB_PID_HAUPPAUGE_NOVA_TD_STICK_52009		0x5200
#define USB_PID_AVERMEDIA_EXPRESS			0xb568
#define USB_PID_AVERMEDIA_VOLAR				0xa807
#define USB_PID_AVERMEDIA_VOLAR_2			0xb808
#define USB_PID_AVERMEDIA_VOLAR_A868R			0xa868
#define USB_PID_AVERMEDIA_MCE_USB_M038			0x1228
#define USB_PID_AVERMEDIA_HYBRID_ULTRA_USB_M039R	0x0039
#define USB_PID_AVERMEDIA_HYBRID_ULTRA_USB_M039R_ATSC	0x1039
#define USB_PID_AVERMEDIA_HYBRID_ULTRA_USB_M039R_DVBT	0x2039
#define USB_PID_TECHNOTREND_CONNECT_S2400               0x3006
#define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY	0x005a
#define USB_PID_TERRATEC_CINERGY_HT_USB_XE		0x0058
#define USB_PID_TERRATEC_CINERGY_HT_EXPRESS		0x0060
#define USB_PID_TERRATEC_CINERGY_T_XXS			0x0078
#define USB_PID_PINNACLE_EXPRESSCARD_320CX		0x022e
#define USB_PID_PINNACLE_PCTV2000E			0x022c
#define USB_PID_PINNACLE_PCTV_DVB_T_FLASH		0x0228
#define USB_PID_PINNACLE_PCTV_DUAL_DIVERSITY_DVB_T	0x0229
#define USB_PID_PINNACLE_PCTV72E			0x0236
#define USB_PID_PINNACLE_PCTV73E			0x0237
#define USB_PID_PCTV_200E				0x020e
#define USB_PID_PCTV_400E				0x020f
#define USB_PID_PCTV_450E				0x0222
#define USB_PID_NEBULA_DIGITV				0x0201
#define USB_PID_DVICO_BLUEBIRD_LGDT			0xd820
#define USB_PID_DVICO_BLUEBIRD_LG064F_COLD		0xd500
#define USB_PID_DVICO_BLUEBIRD_LG064F_WARM		0xd501
#define USB_PID_DVICO_BLUEBIRD_LGZ201_COLD		0xdb00
#define USB_PID_DVICO_BLUEBIRD_LGZ201_WARM		0xdb01
#define USB_PID_DVICO_BLUEBIRD_TH7579_COLD		0xdb10
#define USB_PID_DVICO_BLUEBIRD_TH7579_WARM		0xdb11
#define USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD		0xdb50
#define USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM		0xdb51
#define USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD		0xdb58
#define USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM		0xdb59
#define USB_PID_DVICO_BLUEBIRD_DUAL_4			0xdb78
#define USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2		0xdb70
#define USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM	0xdb71
#define USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD		0xdb54
#define USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM		0xdb55
#define USB_PID_MEDION_MD95700				0x0932
#define USB_PID_MSI_MEGASKY580				0x5580
#define USB_PID_MSI_MEGASKY580_55801			0x5581
#define USB_PID_KYE_DVB_T_COLD				0x701e
#define USB_PID_KYE_DVB_T_WARM				0x701f
#define USB_PID_LITEON_DVB_T_COLD			0xf000
#define USB_PID_LITEON_DVB_T_WARM			0xf001
#define USB_PID_DIGIVOX_MINI_SL_COLD			0xe360
#define USB_PID_DIGIVOX_MINI_SL_WARM			0xe361
#define USB_PID_GRANDTEC_DVBT_USB2_COLD			0x0bc6
#define USB_PID_GRANDTEC_DVBT_USB2_WARM			0x0bc7
#define USB_PID_WINFAST_DTV_DONGLE_COLD			0x6025
#define USB_PID_WINFAST_DTV_DONGLE_WARM			0x6026
#define USB_PID_WINFAST_DTV_DONGLE_STK7700P		0x6f00
#define USB_PID_WINFAST_DTV_DONGLE_STK7700P_2		0x6f01
#define USB_PID_GENPIX_8PSK_REV_1_COLD			0x0200
#define USB_PID_GENPIX_8PSK_REV_1_WARM			0x0201
#define USB_PID_GENPIX_8PSK_REV_2			0x0202
#define USB_PID_GENPIX_SKYWALKER_1			0x0203
#define USB_PID_GENPIX_SKYWALKER_CW3K			0x0204
#define USB_PID_SIGMATEK_DVB_110			0x6610
#define USB_PID_MSI_DIGI_VOX_MINI_II			0x1513
#define USB_PID_OPERA1_COLD				0x2830
#define USB_PID_OPERA1_WARM				0x3829
#define USB_PID_LIFEVIEW_TV_WALKER_TWIN_COLD		0x0514
#define USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM		0x0513
#define USB_PID_GIGABYTE_U7000				0x7001
#define USB_PID_ASUS_U3000				0x171f
#define USB_PID_ASUS_U3000H				0x1736
#define USB_PID_ASUS_U3100				0x173f
#define USB_PID_YUAN_EC372S				0x1edc
#define USB_PID_DW2102					0x2102

#endif

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: dib0700_devices.c --]
[-- Type: text/x-csrc; name=dib0700_devices.c, Size: 40873 bytes --]

/* Linux driver for devices based on the DiBcom DiB0700 USB bridge
 *
 *	This program is free software; you can redistribute it and/or modify it
 *	under the terms of the GNU General Public License as published by the Free
 *	Software Foundation, version 2.
 *
 *  Copyright (C) 2005-7 DiBcom, SA
 */
#include "dib0700.h"

#include "dib3000mc.h"
#include "dib7000m.h"
#include "dib7000p.h"
#include "mt2060.h"
#include "mt2266.h"
#include "tuner-xc2028.h"
#include "dib0070.h"

static int force_lna_activation;
module_param(force_lna_activation, int, 0644);
MODULE_PARM_DESC(force_lna_activation, "force the activation of Low-Noise-Amplifyer(s) (LNA), "
		"if applicable for the device (default: 0=automatic/off).");

struct dib0700_adapter_state {
	int (*set_param_save) (struct dvb_frontend *, struct dvb_frontend_parameters *);
};

/* Hauppauge Nova-T 500 (aka Bristol)
 *  has a LNA on GPIO0 which is enabled by setting 1 */
static struct mt2060_config bristol_mt2060_config[2] = {
	{
		.i2c_address = 0x60,
		.clock_out   = 3,
	}, {
		.i2c_address = 0x61,
	}
};

static struct dibx000_agc_config bristol_dib3000p_mt2060_agc_config = {
	.band_caps = BAND_VHF | BAND_UHF,
	.setup     = (1 << 8) | (5 << 5) | (0 << 4) | (0 << 3) | (0 << 2) | (2 << 0),

	.agc1_max = 42598,
	.agc1_min = 17694,
	.agc2_max = 45875,
	.agc2_min = 0,

	.agc1_pt1 = 0,
	.agc1_pt2 = 59,

	.agc1_slope1 = 0,
	.agc1_slope2 = 69,

	.agc2_pt1 = 0,
	.agc2_pt2 = 59,

	.agc2_slope1 = 111,
	.agc2_slope2 = 28,
};

static struct dib3000mc_config bristol_dib3000mc_config[2] = {
	{	.agc          = &bristol_dib3000p_mt2060_agc_config,
		.max_time     = 0x196,
		.ln_adc_level = 0x1cc7,
		.output_mpeg2_in_188_bytes = 1,
	},
	{	.agc          = &bristol_dib3000p_mt2060_agc_config,
		.max_time     = 0x196,
		.ln_adc_level = 0x1cc7,
		.output_mpeg2_in_188_bytes = 1,
	}
};

static int bristol_frontend_attach(struct dvb_usb_adapter *adap)
{
	struct dib0700_state *st = adap->dev->priv;
	if (adap->id == 0) {
		dib0700_set_gpio(adap->dev, GPIO6,  GPIO_OUT, 0); msleep(10);
		dib0700_set_gpio(adap->dev, GPIO6,  GPIO_OUT, 1); msleep(10);
		dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0); msleep(10);
		dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); msleep(10);

		if (force_lna_activation)
			dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
		else
			dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 0);

		if (dib3000mc_i2c_enumeration(&adap->dev->i2c_adap, 2, DEFAULT_DIB3000P_I2C_ADDRESS, bristol_dib3000mc_config) != 0) {
			dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0); msleep(10);
			return -ENODEV;
		}
	}
	st->mt2060_if1[adap->id] = 1220;
	return (adap->fe = dvb_attach(dib3000mc_attach, &adap->dev->i2c_adap,
		(10 + adap->id) << 1, &bristol_dib3000mc_config[adap->id])) == NULL ? -ENODEV : 0;
}

static int eeprom_read(struct i2c_adapter *adap,u8 adrs,u8 *pval)
{
	struct i2c_msg msg[2] = {
		{ .addr = 0x50, .flags = 0,        .buf = &adrs, .len = 1 },
		{ .addr = 0x50, .flags = I2C_M_RD, .buf = pval,  .len = 1 },
	};
	if (i2c_transfer(adap, msg, 2) != 2) return -EREMOTEIO;
	return 0;
}

static int bristol_tuner_attach(struct dvb_usb_adapter *adap)
{
	struct i2c_adapter *prim_i2c = &adap->dev->i2c_adap;
	struct i2c_adapter *tun_i2c = dib3000mc_get_tuner_i2c_master(adap->fe, 1);
	s8 a;
	int if1=1220;
	if (adap->dev->udev->descriptor.idVendor  == cpu_to_le16(USB_VID_HAUPPAUGE) &&
		adap->dev->udev->descriptor.idProduct == cpu_to_le16(USB_PID_HAUPPAUGE_NOVA_T_500_2)) {
		if (!eeprom_read(prim_i2c,0x59 + adap->id,&a)) if1=1220+a;
	}
	return dvb_attach(mt2060_attach,adap->fe, tun_i2c,&bristol_mt2060_config[adap->id],
		if1) == NULL ? -ENODEV : 0;
}

/* STK7700D: Pinnacle/Terratec/Hauppauge Dual DVB-T Diversity */

/* MT226x */
static struct dibx000_agc_config stk7700d_7000p_mt2266_agc_config[2] = {
	{
		BAND_UHF, // band_caps

		/* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, P_agc_freq_pwm_div=1, P_agc_inv_pwm1=1, P_agc_inv_pwm2=1,
		* P_agc_inh_dc_rv_est=0, P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=2, P_agc_write=0 */
		(0 << 15) | (0 << 14) | (1 << 11) | (1 << 10) | (1 << 9) | (0 << 8) | (3 << 5) | (0 << 4) | (5 << 1) | (0 << 0), // setup

		1130,  // inv_gain
		21,  // time_stabiliz

		0,  // alpha_level
		118,  // thlock

		0,     // wbd_inv
		3530,  // wbd_ref
		1,     // wbd_sel
		0,     // wbd_alpha

		65535,  // agc1_max
		33770,  // agc1_min
		65535,  // agc2_max
		23592,  // agc2_min

		0,    // agc1_pt1
		62,   // agc1_pt2
		255,  // agc1_pt3
		64,   // agc1_slope1
		64,   // agc1_slope2
		132,  // agc2_pt1
		192,  // agc2_pt2
		80,   // agc2_slope1
		80,   // agc2_slope2

		17,  // alpha_mant
		27,  // alpha_exp
		23,  // beta_mant
		51,  // beta_exp

		1,  // perform_agc_softsplit
	}, {
		BAND_VHF | BAND_LBAND, // band_caps

		/* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, P_agc_freq_pwm_div=1, P_agc_inv_pwm1=1, P_agc_inv_pwm2=1,
		* P_agc_inh_dc_rv_est=0, P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=2, P_agc_write=0 */
		(0 << 15) | (0 << 14) | (1 << 11) | (1 << 10) | (1 << 9) | (0 << 8) | (3 << 5) | (0 << 4) | (2 << 1) | (0 << 0), // setup

		2372, // inv_gain
		21,   // time_stabiliz

		0,    // alpha_level
		118,  // thlock

		0,    // wbd_inv
		3530, // wbd_ref
		1,     // wbd_sel
		0,    // wbd_alpha

		65535, // agc1_max
		0,     // agc1_min
		65535, // agc2_max
		23592, // agc2_min

		0,    // agc1_pt1
		128,  // agc1_pt2
		128,  // agc1_pt3
		128,  // agc1_slope1
		0,    // agc1_slope2
		128,  // agc2_pt1
		253,  // agc2_pt2
		81,   // agc2_slope1
		0,    // agc2_slope2

		17,  // alpha_mant
		27,  // alpha_exp
		23,  // beta_mant
		51,  // beta_exp

		1,  // perform_agc_softsplit
	}
};

static struct dibx000_bandwidth_config stk7700d_mt2266_pll_config = {
	60000, 30000, // internal, sampling
	1, 8, 3, 1, 0, // pll_cfg: prediv, ratio, range, reset, bypass
	0, 0, 1, 1, 2, // misc: refdiv, bypclk_div, IO_CLK_en_core, ADClkSrc, modulo
	(3 << 14) | (1 << 12) | (524 << 0), // sad_cfg: refsel, sel, freq_15k
	0, // ifreq
	20452225, // timf
};

static struct dib7000p_config stk7700d_dib7000p_mt2266_config[] = {
	{	.output_mpeg2_in_188_bytes = 1,
		.hostbus_diversity = 1,
		.tuner_is_baseband = 1,

		.agc_config_count = 2,
		.agc = stk7700d_7000p_mt2266_agc_config,
		.bw  = &stk7700d_mt2266_pll_config,

		.gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
		.gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
		.gpio_pwm_pos = DIB7000P_GPIO_DEFAULT_PWM_POS,
	},
	{	.output_mpeg2_in_188_bytes = 1,
		.hostbus_diversity = 1,
		.tuner_is_baseband = 1,

		.agc_config_count = 2,
		.agc = stk7700d_7000p_mt2266_agc_config,
		.bw  = &stk7700d_mt2266_pll_config,

		.gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
		.gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
		.gpio_pwm_pos = DIB7000P_GPIO_DEFAULT_PWM_POS,
	}
};

static struct mt2266_config stk7700d_mt2266_config[2] = {
	{	.i2c_address = 0x60
	},
	{	.i2c_address = 0x60
	}
};

static int stk7700P2_frontend_attach(struct dvb_usb_adapter *adap)
{
	if (adap->id == 0) {
		dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1);
		msleep(10);
		dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1);
		dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1);
		dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1);
		dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0);
		msleep(10);
		dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1);
		msleep(10);
		dib7000p_i2c_enumeration(&adap->dev->i2c_adap,1,18,stk7700d_dib7000p_mt2266_config);
	}

	adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap,0x80+(adap->id << 1),
				&stk7700d_dib7000p_mt2266_config[adap->id]);

	return adap->fe == NULL ? -ENODEV : 0;
}

static int stk7700d_frontend_attach(struct dvb_usb_adapter *adap)
{
	if (adap->id == 0) {
		dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1);
		msleep(10);
		dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1);
		dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1);
		dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1);
		dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0);
		msleep(10);
		dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1);
		msleep(10);
		dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
		dib7000p_i2c_enumeration(&adap->dev->i2c_adap,2,18,stk7700d_dib7000p_mt2266_config);
	}

	adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap,0x80+(adap->id << 1),
				&stk7700d_dib7000p_mt2266_config[adap->id]);

	return adap->fe == NULL ? -ENODEV : 0;
}

static int stk7700d_tuner_attach(struct dvb_usb_adapter *adap)
{
	struct i2c_adapter *tun_i2c;
	tun_i2c = dib7000p_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1);
	return dvb_attach(mt2266_attach, adap->fe, tun_i2c,
		&stk7700d_mt2266_config[adap->id]) == NULL ? -ENODEV : 0;;
}

/* STK7700-PH: Digital/Analog Hybrid Tuner, e.h. Cinergy HT USB HE */
static struct dibx000_agc_config xc3028_agc_config = {
	BAND_VHF | BAND_UHF,       /* band_caps */

	/* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, P_agc_freq_pwm_div=0,
	 * P_agc_inv_pwm1=0, P_agc_inv_pwm2=0, P_agc_inh_dc_rv_est=0,
	 * P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=2, P_agc_write=0 */
	(0 << 15) | (0 << 14) | (0 << 11) | (0 << 10) | (0 << 9) | (0 << 8) |
	(3 << 5) | (0 << 4) | (2 << 1) | (0 << 0), /* setup */

	712,	/* inv_gain */
	21,	/* time_stabiliz */

	0,	/* alpha_level */
	118,	/* thlock */

	0,	/* wbd_inv */
	2867,	/* wbd_ref */
	0,	/* wbd_sel */
	2,	/* wbd_alpha */

	0,	/* agc1_max */
	0,	/* agc1_min */
	39718,	/* agc2_max */
	9930,	/* agc2_min */
	0,	/* agc1_pt1 */
	0,	/* agc1_pt2 */
	0,	/* agc1_pt3 */
	0,	/* agc1_slope1 */
	0,	/* agc1_slope2 */
	0,	/* agc2_pt1 */
	128,	/* agc2_pt2 */
	29,	/* agc2_slope1 */
	29,	/* agc2_slope2 */

	17,	/* alpha_mant */
	27,	/* alpha_exp */
	23,	/* beta_mant */
	51,	/* beta_exp */

	1,	/* perform_agc_softsplit */
};

/* PLL Configuration for COFDM BW_MHz = 8.00 with external clock = 30.00 */
static struct dibx000_bandwidth_config xc3028_bw_config = {
	60000, 30000, /* internal, sampling */
	1, 8, 3, 1, 0, /* pll_cfg: prediv, ratio, range, reset, bypass */
	0, 0, 1, 1, 0, /* misc: refdiv, bypclk_div, IO_CLK_en_core, ADClkSrc,
			  modulo */
	(3 << 14) | (1 << 12) | (524 << 0), /* sad_cfg: refsel, sel, freq_15k */
	(1 << 25) | 5816102, /* ifreq = 5.200000 MHz */
	20452225, /* timf */
	30000000, /* xtal_hz */
};

static struct dib7000p_config stk7700ph_dib7700_xc3028_config = {
	.output_mpeg2_in_188_bytes = 1,
	.tuner_is_baseband = 1,

	.agc_config_count = 1,
	.agc = &xc3028_agc_config,
	.bw  = &xc3028_bw_config,

	.gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
	.gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
	.gpio_pwm_pos = DIB7000P_GPIO_DEFAULT_PWM_POS,
};

static int stk7700ph_xc3028_callback(void *ptr, int command, int arg)
{
	struct dvb_usb_adapter *adap = ptr;

	switch (command) {
	case XC2028_TUNER_RESET:
		/* Send the tuner in then out of reset */
		dib7000p_set_gpio(adap->fe, 8, 0, 0); msleep(10);
		dib7000p_set_gpio(adap->fe, 8, 0, 1);
		break;
	case XC2028_RESET_CLK:
		break;
	default:
		err("%s: unknown command %d, arg %d\n", __func__,
			command, arg);
		return -EINVAL;
	}
	return 0;
}

static struct xc2028_ctrl stk7700ph_xc3028_ctrl = {
	.fname = XC2028_DEFAULT_FIRMWARE,
	.max_len = 64,
	.demod = XC3028_FE_DIBCOM52,
};

static struct xc2028_config stk7700ph_xc3028_config = {
	.i2c_addr = 0x61,
	.callback = stk7700ph_xc3028_callback,
	.ctrl = &stk7700ph_xc3028_ctrl,
};

static int stk7700ph_frontend_attach(struct dvb_usb_adapter *adap)
{
	struct usb_device_descriptor *desc = &adap->dev->udev->descriptor;

	if (desc->idVendor  == cpu_to_le16(USB_VID_PINNACLE) &&
	    desc->idProduct == cpu_to_le16(USB_PID_PINNACLE_EXPRESSCARD_320CX))
	dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0);
	else
	dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1);
	msleep(20);
	dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0);
	msleep(10);
	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1);
	msleep(20);
	dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
	msleep(10);

	dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18,
		&stk7700ph_dib7700_xc3028_config);

	adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80,
		&stk7700ph_dib7700_xc3028_config);

	return adap->fe == NULL ? -ENODEV : 0;
}

static int stk7700ph_tuner_attach(struct dvb_usb_adapter *adap)
{
	struct i2c_adapter *tun_i2c;

	tun_i2c = dib7000p_get_i2c_master(adap->fe,
		DIBX000_I2C_INTERFACE_TUNER, 1);

	stk7700ph_xc3028_config.i2c_adap = tun_i2c;
	stk7700ph_xc3028_config.video_dev = adap;

	return dvb_attach(xc2028_attach, adap->fe, &stk7700ph_xc3028_config)
		== NULL ? -ENODEV : 0;
}

#define DEFAULT_RC_INTERVAL 150

static u8 rc_request[] = { REQUEST_POLL_RC, 0 };

/* Number of keypresses to ignore before start repeating */
#define RC_REPEAT_DELAY 2

static int dib0700_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
{
	u8 key[4];
	int i;
	struct dvb_usb_rc_key *keymap = d->props.rc_key_map;
	struct dib0700_state *st = d->priv;
	*event = 0;
	*state = REMOTE_NO_KEY_PRESSED;
	i=dib0700_ctrl_rd(d,rc_request,2,key,4);
	if (i<=0) {
		err("RC Query Failed");
		return -1;
	}

	/* losing half of KEY_0 events from Philipps rc5 remotes.. */
	if (key[0]==0 && key[1]==0 && key[2]==0 && key[3]==0) return 0;

	/* info("%d: %2X %2X %2X %2X",dvb_usb_dib0700_ir_proto,(int)key[3-2],(int)key[3-3],(int)key[3-1],(int)key[3]);  */

	dib0700_rc_setup(d); /* reset ir sensor data to prevent false events */

	switch (dvb_usb_dib0700_ir_proto) {
	case 0: {
		/* NEC protocol sends repeat code as 0 0 0 FF */
		if ((key[3-2] == 0x00) && (key[3-3] == 0x00) &&
		    (key[3] == 0xFF)) {
			st->rc_counter++;
			if (st->rc_counter > RC_REPEAT_DELAY) {
				*event = d->last_event;
				*state = REMOTE_KEY_PRESSED;
				st->rc_counter = RC_REPEAT_DELAY;
			}
			return 0;
		}
		for (i=0;i<d->props.rc_key_map_size; i++) {
			if (keymap[i].custom == key[3-2] && keymap[i].data == key[3-3]) {
				st->rc_counter = 0;
				*event = keymap[i].event;
				*state = REMOTE_KEY_PRESSED;
				d->last_event = keymap[i].event;
				return 0;
			}
		}
		break;
	}
	default: {
		/* RC-5 protocol changes toggle bit on new keypress */
		for (i = 0; i < d->props.rc_key_map_size; i++) {
			if (keymap[i].custom == key[3-2] && keymap[i].data == key[3-3]) {
				if (d->last_event == keymap[i].event &&
					key[3-1] == st->rc_toggle) {
					st->rc_counter++;
					/* prevents unwanted double hits */
					if (st->rc_counter > RC_REPEAT_DELAY) {
						*event = d->last_event;
						*state = REMOTE_KEY_PRESSED;
						st->rc_counter = RC_REPEAT_DELAY;
					}

					return 0;
				}
				st->rc_counter = 0;
				*event = keymap[i].event;
				*state = REMOTE_KEY_PRESSED;
				st->rc_toggle = key[3-1];
				d->last_event = keymap[i].event;
				return 0;
			}
		}
		break;
	}
	}
	err("Unknown remote controller key: %2X %2X %2X %2X", (int) key[3-2], (int) key[3-3], (int) key[3-1], (int) key[3]);
	d->last_event = 0;
	return 0;
}

static struct dvb_usb_rc_key dib0700_rc_keys[] = {
	/* Key codes for the tiny Pinnacle remote*/
	{ 0x07, 0x00, KEY_MUTE },
	{ 0x07, 0x01, KEY_MENU }, // Pinnacle logo
	{ 0x07, 0x39, KEY_POWER },
	{ 0x07, 0x03, KEY_VOLUMEUP },
	{ 0x07, 0x09, KEY_VOLUMEDOWN },
	{ 0x07, 0x06, KEY_CHANNELUP },
	{ 0x07, 0x0c, KEY_CHANNELDOWN },
	{ 0x07, 0x0f, KEY_1 },
	{ 0x07, 0x15, KEY_2 },
	{ 0x07, 0x10, KEY_3 },
	{ 0x07, 0x18, KEY_4 },
	{ 0x07, 0x1b, KEY_5 },
	{ 0x07, 0x1e, KEY_6 },
	{ 0x07, 0x11, KEY_7 },
	{ 0x07, 0x21, KEY_8 },
	{ 0x07, 0x12, KEY_9 },
	{ 0x07, 0x27, KEY_0 },
	{ 0x07, 0x24, KEY_SCREEN }, // 'Square' key
	{ 0x07, 0x2a, KEY_TEXT },   // 'T' key
	{ 0x07, 0x2d, KEY_REWIND },
	{ 0x07, 0x30, KEY_PLAY },
	{ 0x07, 0x33, KEY_FASTFORWARD },
	{ 0x07, 0x36, KEY_RECORD },
	{ 0x07, 0x3c, KEY_STOP },
	{ 0x07, 0x3f, KEY_CANCEL }, // '?' key
	/* Key codes for the Terratec Cinergy DT XS Diversity, similar to cinergyT2.c */
	{ 0xeb, 0x01, KEY_POWER },
	{ 0xeb, 0x02, KEY_1 },
	{ 0xeb, 0x03, KEY_2 },
	{ 0xeb, 0x04, KEY_3 },
	{ 0xeb, 0x05, KEY_4 },
	{ 0xeb, 0x06, KEY_5 },
	{ 0xeb, 0x07, KEY_6 },
	{ 0xeb, 0x08, KEY_7 },
	{ 0xeb, 0x09, KEY_8 },
	{ 0xeb, 0x0a, KEY_9 },
	{ 0xeb, 0x0b, KEY_VIDEO },
	{ 0xeb, 0x0c, KEY_0 },
	{ 0xeb, 0x0d, KEY_REFRESH },
	{ 0xeb, 0x0f, KEY_EPG },
	{ 0xeb, 0x10, KEY_UP },
	{ 0xeb, 0x11, KEY_LEFT },
	{ 0xeb, 0x12, KEY_OK },
	{ 0xeb, 0x13, KEY_RIGHT },
	{ 0xeb, 0x14, KEY_DOWN },
	{ 0xeb, 0x16, KEY_INFO },
	{ 0xeb, 0x17, KEY_RED },
	{ 0xeb, 0x18, KEY_GREEN },
	{ 0xeb, 0x19, KEY_YELLOW },
	{ 0xeb, 0x1a, KEY_BLUE },
	{ 0xeb, 0x1b, KEY_CHANNELUP },
	{ 0xeb, 0x1c, KEY_VOLUMEUP },
	{ 0xeb, 0x1d, KEY_MUTE },
	{ 0xeb, 0x1e, KEY_VOLUMEDOWN },
	{ 0xeb, 0x1f, KEY_CHANNELDOWN },
	{ 0xeb, 0x40, KEY_PAUSE },
	{ 0xeb, 0x41, KEY_HOME },
	{ 0xeb, 0x42, KEY_MENU }, /* DVD Menu */
	{ 0xeb, 0x43, KEY_SUBTITLE },
	{ 0xeb, 0x44, KEY_TEXT }, /* Teletext */
	{ 0xeb, 0x45, KEY_DELETE },
	{ 0xeb, 0x46, KEY_TV },
	{ 0xeb, 0x47, KEY_DVD },
	{ 0xeb, 0x48, KEY_STOP },
	{ 0xeb, 0x49, KEY_VIDEO },
	{ 0xeb, 0x4a, KEY_AUDIO }, /* Music */
	{ 0xeb, 0x4b, KEY_SCREEN }, /* Pic */
	{ 0xeb, 0x4c, KEY_PLAY },
	{ 0xeb, 0x4d, KEY_BACK },
	{ 0xeb, 0x4e, KEY_REWIND },
	{ 0xeb, 0x4f, KEY_FASTFORWARD },
	{ 0xeb, 0x54, KEY_PREVIOUS },
	{ 0xeb, 0x58, KEY_RECORD },
	{ 0xeb, 0x5c, KEY_NEXT },

	/* Key codes for the Haupauge WinTV Nova-TD, copied from nova-t-usb2.c (Nova-T USB2) */
	{ 0x1e, 0x00, KEY_0 },
	{ 0x1e, 0x01, KEY_1 },
	{ 0x1e, 0x02, KEY_2 },
	{ 0x1e, 0x03, KEY_3 },
	{ 0x1e, 0x04, KEY_4 },
	{ 0x1e, 0x05, KEY_5 },
	{ 0x1e, 0x06, KEY_6 },
	{ 0x1e, 0x07, KEY_7 },
	{ 0x1e, 0x08, KEY_8 },
	{ 0x1e, 0x09, KEY_9 },
	{ 0x1e, 0x0a, KEY_KPASTERISK },
	{ 0x1e, 0x0b, KEY_RED },
	{ 0x1e, 0x0c, KEY_RADIO },
	{ 0x1e, 0x0d, KEY_MENU },
	{ 0x1e, 0x0e, KEY_GRAVE }, /* # */
	{ 0x1e, 0x0f, KEY_MUTE },
	{ 0x1e, 0x10, KEY_VOLUMEUP },
	{ 0x1e, 0x11, KEY_VOLUMEDOWN },
	{ 0x1e, 0x12, KEY_CHANNEL },
	{ 0x1e, 0x14, KEY_UP },
	{ 0x1e, 0x15, KEY_DOWN },
	{ 0x1e, 0x16, KEY_LEFT },
	{ 0x1e, 0x17, KEY_RIGHT },
	{ 0x1e, 0x18, KEY_VIDEO },
	{ 0x1e, 0x19, KEY_AUDIO },
	{ 0x1e, 0x1a, KEY_MEDIA },
	{ 0x1e, 0x1b, KEY_EPG },
	{ 0x1e, 0x1c, KEY_TV },
	{ 0x1e, 0x1e, KEY_NEXT },
	{ 0x1e, 0x1f, KEY_BACK },
	{ 0x1e, 0x20, KEY_CHANNELUP },
	{ 0x1e, 0x21, KEY_CHANNELDOWN },
	{ 0x1e, 0x24, KEY_LAST }, /* Skip backwards */
	{ 0x1e, 0x25, KEY_OK },
	{ 0x1e, 0x29, KEY_BLUE},
	{ 0x1e, 0x2e, KEY_GREEN },
	{ 0x1e, 0x30, KEY_PAUSE },
	{ 0x1e, 0x32, KEY_REWIND },
	{ 0x1e, 0x34, KEY_FASTFORWARD },
	{ 0x1e, 0x35, KEY_PLAY },
	{ 0x1e, 0x36, KEY_STOP },
	{ 0x1e, 0x37, KEY_RECORD },
	{ 0x1e, 0x38, KEY_YELLOW },
	{ 0x1e, 0x3b, KEY_GOTO },
	{ 0x1e, 0x3d, KEY_POWER },

	/* Key codes for the Leadtek Winfast DTV Dongle */
	{ 0x00, 0x42, KEY_POWER },
	{ 0x07, 0x7c, KEY_TUNER },
	{ 0x0f, 0x4e, KEY_PRINT }, /* PREVIEW */
	{ 0x08, 0x40, KEY_SCREEN }, /* full screen toggle*/
	{ 0x0f, 0x71, KEY_DOT }, /* frequency */
	{ 0x07, 0x43, KEY_0 },
	{ 0x0c, 0x41, KEY_1 },
	{ 0x04, 0x43, KEY_2 },
	{ 0x0b, 0x7f, KEY_3 },
	{ 0x0e, 0x41, KEY_4 },
	{ 0x06, 0x43, KEY_5 },
	{ 0x09, 0x7f, KEY_6 },
	{ 0x0d, 0x7e, KEY_7 },
	{ 0x05, 0x7c, KEY_8 },
	{ 0x0a, 0x40, KEY_9 },
	{ 0x0e, 0x4e, KEY_CLEAR },
	{ 0x04, 0x7c, KEY_CHANNEL }, /* show channel number */
	{ 0x0f, 0x41, KEY_LAST }, /* recall */
	{ 0x03, 0x42, KEY_MUTE },
	{ 0x06, 0x4c, KEY_RESERVED }, /* PIP button*/
	{ 0x01, 0x72, KEY_SHUFFLE }, /* SNAPSHOT */
	{ 0x0c, 0x4e, KEY_PLAYPAUSE }, /* TIMESHIFT */
	{ 0x0b, 0x70, KEY_RECORD },
	{ 0x03, 0x7d, KEY_VOLUMEUP },
	{ 0x01, 0x7d, KEY_VOLUMEDOWN },
	{ 0x02, 0x42, KEY_CHANNELUP },
	{ 0x00, 0x7d, KEY_CHANNELDOWN },
};

/* STK7700P: Hauppauge Nova-T Stick, AVerMedia Volar */
static struct dibx000_agc_config stk7700p_7000m_mt2060_agc_config = {
	BAND_UHF | BAND_VHF,       // band_caps

	/* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, P_agc_freq_pwm_div=5, P_agc_inv_pwm1=0, P_agc_inv_pwm2=0,
	 * P_agc_inh_dc_rv_est=0, P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=2, P_agc_write=0 */
	(0 << 15) | (0 << 14) | (5 << 11) | (0 << 10) | (0 << 9) | (0 << 8) | (3 << 5) | (0 << 4) | (2 << 1) | (0 << 0), // setup

	712,  // inv_gain
	41,  // time_stabiliz

	0,  // alpha_level
	118,  // thlock

	0,     // wbd_inv
	4095,  // wbd_ref
	0,     // wbd_sel
	0,     // wbd_alpha

	42598,  // agc1_max
	17694,  // agc1_min
	45875,  // agc2_max
	2621,  // agc2_min
	0,  // agc1_pt1
	76,  // agc1_pt2
	139,  // agc1_pt3
	52,  // agc1_slope1
	59,  // agc1_slope2
	107,  // agc2_pt1
	172,  // agc2_pt2
	57,  // agc2_slope1
	70,  // agc2_slope2

	21,  // alpha_mant
	25,  // alpha_exp
	28,  // beta_mant
	48,  // beta_exp

	1,  // perform_agc_softsplit
	{  0,     // split_min
	   107,   // split_max
	   51800, // global_split_min
	   24700  // global_split_max
	},
};

static struct dibx000_agc_config stk7700p_7000p_mt2060_agc_config = {
	BAND_UHF | BAND_VHF,

	/* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, P_agc_freq_pwm_div=5, P_agc_inv_pwm1=0, P_agc_inv_pwm2=0,
	 * P_agc_inh_dc_rv_est=0, P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=2, P_agc_write=0 */
	(0 << 15) | (0 << 14) | (5 << 11) | (0 << 10) | (0 << 9) | (0 << 8) | (3 << 5) | (0 << 4) | (2 << 1) | (0 << 0), // setup

	712, // inv_gain
	41,  // time_stabiliz

	0,   // alpha_level
	118, // thlock

	0,    // wbd_inv
	4095, // wbd_ref
	0,    // wbd_sel
	0,    // wbd_alpha

	42598, // agc1_max
	16384, // agc1_min
	42598, // agc2_max
	    0, // agc2_min

	  0,   // agc1_pt1
	137,   // agc1_pt2
	255,   // agc1_pt3

	  0,   // agc1_slope1
	255,   // agc1_slope2

	0,     // agc2_pt1
	0,     // agc2_pt2

	 0,    // agc2_slope1
	41,    // agc2_slope2

	15, // alpha_mant
	25, // alpha_exp

	28, // beta_mant
	48, // beta_exp

	0, // perform_agc_softsplit
};

static struct dibx000_bandwidth_config stk7700p_pll_config = {
	60000, 30000, // internal, sampling
	1, 8, 3, 1, 0, // pll_cfg: prediv, ratio, range, reset, bypass
	0, 0, 1, 1, 0, // misc: refdiv, bypclk_div, IO_CLK_en_core, ADClkSrc, modulo
	(3 << 14) | (1 << 12) | (524 << 0), // sad_cfg: refsel, sel, freq_15k
	60258167, // ifreq
	20452225, // timf
	30000000, // xtal
};

static struct dib7000m_config stk7700p_dib7000m_config = {
	.dvbt_mode = 1,
	.output_mpeg2_in_188_bytes = 1,
	.quartz_direct = 1,

	.agc_config_count = 1,
	.agc = &stk7700p_7000m_mt2060_agc_config,
	.bw  = &stk7700p_pll_config,

	.gpio_dir = DIB7000M_GPIO_DEFAULT_DIRECTIONS,
	.gpio_val = DIB7000M_GPIO_DEFAULT_VALUES,
	.gpio_pwm_pos = DIB7000M_GPIO_DEFAULT_PWM_POS,
};

static struct dib7000p_config stk7700p_dib7000p_config = {
	.output_mpeg2_in_188_bytes = 1,

	.agc_config_count = 1,
	.agc = &stk7700p_7000p_mt2060_agc_config,
	.bw  = &stk7700p_pll_config,

	.gpio_dir = DIB7000M_GPIO_DEFAULT_DIRECTIONS,
	.gpio_val = DIB7000M_GPIO_DEFAULT_VALUES,
	.gpio_pwm_pos = DIB7000M_GPIO_DEFAULT_PWM_POS,
};

static int stk7700p_frontend_attach(struct dvb_usb_adapter *adap)
{
	struct dib0700_state *st = adap->dev->priv;
	/* unless there is no real power management in DVB - we leave the device on GPIO6 */

	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0);
	dib0700_set_gpio(adap->dev, GPIO6,  GPIO_OUT, 0); msleep(50);

	dib0700_set_gpio(adap->dev, GPIO6,  GPIO_OUT, 1); msleep(10);
	dib0700_set_gpio(adap->dev, GPIO9,  GPIO_OUT, 1);

	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0); msleep(10);
	dib0700_ctrl_clock(adap->dev, 72, 1);
	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); msleep(100);

	dib0700_set_gpio(adap->dev,  GPIO0, GPIO_OUT, 1);

	st->mt2060_if1[0] = 1220;

	if (dib7000pc_detection(&adap->dev->i2c_adap)) {
		adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 18, &stk7700p_dib7000p_config);
		st->is_dib7000pc = 1;
	} else
		adap->fe = dvb_attach(dib7000m_attach, &adap->dev->i2c_adap, 18, &stk7700p_dib7000m_config);

	return adap->fe == NULL ? -ENODEV : 0;
}

static struct mt2060_config stk7700p_mt2060_config = {
	0x60
};

static int stk7700p_tuner_attach(struct dvb_usb_adapter *adap)
{
	struct i2c_adapter *prim_i2c = &adap->dev->i2c_adap;
	struct dib0700_state *st = adap->dev->priv;
	struct i2c_adapter *tun_i2c;
	s8 a;
	int if1=1220;
	if (adap->dev->udev->descriptor.idVendor  == cpu_to_le16(USB_VID_HAUPPAUGE) &&
		adap->dev->udev->descriptor.idProduct == cpu_to_le16(USB_PID_HAUPPAUGE_NOVA_T_STICK)) {
		if (!eeprom_read(prim_i2c,0x58,&a)) if1=1220+a;
	}
	if (st->is_dib7000pc)
		tun_i2c = dib7000p_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1);
	else
		tun_i2c = dib7000m_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1);

	return dvb_attach(mt2060_attach, adap->fe, tun_i2c, &stk7700p_mt2060_config,
		if1) == NULL ? -ENODEV : 0;
}

/* DIB7070 generic */
static struct dibx000_agc_config dib7070_agc_config = {
	BAND_UHF | BAND_VHF | BAND_LBAND | BAND_SBAND,
	/* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, P_agc_freq_pwm_div=5, P_agc_inv_pwm1=0, P_agc_inv_pwm2=0,
	 * P_agc_inh_dc_rv_est=0, P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=5, P_agc_write=0 */
	(0 << 15) | (0 << 14) | (5 << 11) | (0 << 10) | (0 << 9) | (0 << 8) | (3 << 5) | (0 << 4) | (5 << 1) | (0 << 0), // setup

	600, // inv_gain
	10,  // time_stabiliz

	0,  // alpha_level
	118,  // thlock

	0,     // wbd_inv
	3530,  // wbd_ref
	1,     // wbd_sel
	5,     // wbd_alpha

	65535,  // agc1_max
		0,  // agc1_min

	65535,  // agc2_max
	0,      // agc2_min

	0,      // agc1_pt1
	40,     // agc1_pt2
	183,    // agc1_pt3
	206,    // agc1_slope1
	255,    // agc1_slope2
	72,     // agc2_pt1
	152,    // agc2_pt2
	88,     // agc2_slope1
	90,     // agc2_slope2

	17,  // alpha_mant
	27,  // alpha_exp
	23,  // beta_mant
	51,  // beta_exp

	0,  // perform_agc_softsplit
};

static int dib7070_tuner_reset(struct dvb_frontend *fe, int onoff)
{
	return dib7000p_set_gpio(fe, 8, 0, !onoff);
}

static int dib7070_tuner_sleep(struct dvb_frontend *fe, int onoff)
{
	return dib7000p_set_gpio(fe, 9, 0, onoff);
}

static struct dib0070_config dib7070p_dib0070_config[2] = {
	{
		.i2c_address = DEFAULT_DIB0070_I2C_ADDRESS,
		.reset = dib7070_tuner_reset,
		.sleep = dib7070_tuner_sleep,
		.clock_khz = 12000,
		.clock_pad_drive = 4
	}, {
		.i2c_address = DEFAULT_DIB0070_I2C_ADDRESS,
		.reset = dib7070_tuner_reset,
		.sleep = dib7070_tuner_sleep,
		.clock_khz = 12000,

	}
};

static int dib7070_set_param_override(struct dvb_frontend *fe, struct dvb_frontend_parameters *fep)
{
	struct dvb_usb_adapter *adap = fe->dvb->priv;
	struct dib0700_adapter_state *state = adap->priv;

	u16 offset;
	u8 band = BAND_OF_FREQUENCY(fep->frequency/1000);
	switch (band) {
		case BAND_VHF: offset = 950; break;
		case BAND_UHF:
		default: offset = 550; break;
	}
	deb_info("WBD for DiB7000P: %d\n", offset + dib0070_wbd_offset(fe));
	dib7000p_set_wbd_ref(fe, offset + dib0070_wbd_offset(fe));
	return state->set_param_save(fe, fep);
}

static int dib7070p_tuner_attach(struct dvb_usb_adapter *adap)
{
	struct dib0700_adapter_state *st = adap->priv;
	struct i2c_adapter *tun_i2c = dib7000p_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1);

	if (adap->id == 0) {
		if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, &dib7070p_dib0070_config[0]) == NULL)
			return -ENODEV;
	} else {
		if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, &dib7070p_dib0070_config[1]) == NULL)
			return -ENODEV;
	}

	st->set_param_save = adap->fe->ops.tuner_ops.set_params;
	adap->fe->ops.tuner_ops.set_params = dib7070_set_param_override;
	return 0;
}

static struct dibx000_bandwidth_config dib7070_bw_config_12_mhz = {
	60000, 15000, // internal, sampling
	1, 20, 3, 1, 0, // pll_cfg: prediv, ratio, range, reset, bypass
	0, 0, 1, 1, 2, // misc: refdiv, bypclk_div, IO_CLK_en_core, ADClkSrc, modulo
	(3 << 14) | (1 << 12) | (524 << 0), // sad_cfg: refsel, sel, freq_15k
	(0 << 25) | 0, // ifreq = 0.000000 MHz
	20452225, // timf
	12000000, // xtal_hz
};

static struct dib7000p_config dib7070p_dib7000p_config = {
	.output_mpeg2_in_188_bytes = 1,

	.agc_config_count = 1,
	.agc = &dib7070_agc_config,
	.bw  = &dib7070_bw_config_12_mhz,
	.tuner_is_baseband = 1,
	.spur_protect = 1,

	.gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
	.gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
	.gpio_pwm_pos = DIB7000P_GPIO_DEFAULT_PWM_POS,

	.hostbus_diversity = 1,
};

/* STK7070P */
static int stk7070p_frontend_attach(struct dvb_usb_adapter *adap)
{
	struct usb_device_descriptor *p = &adap->dev->udev->descriptor;
	if (p->idVendor  == cpu_to_le16(USB_VID_PINNACLE) &&
	    p->idProduct == cpu_to_le16(USB_PID_PINNACLE_PCTV72E))
		dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0);
	else
		dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1);
	msleep(10);
	dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0);

	dib0700_ctrl_clock(adap->dev, 72, 1);

	msleep(10);
	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1);
	msleep(10);
	dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);

	dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18,
		&dib7070p_dib7000p_config);

	adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80,
		&dib7070p_dib7000p_config);
	return adap->fe == NULL ? -ENODEV : 0;
}

/* STK7070PD */
static struct dib7000p_config stk7070pd_dib7000p_config[2] = {
	{
		.output_mpeg2_in_188_bytes = 1,

		.agc_config_count = 1,
		.agc = &dib7070_agc_config,
		.bw  = &dib7070_bw_config_12_mhz,
		.tuner_is_baseband = 1,
		.spur_protect = 1,

		.gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
		.gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
		.gpio_pwm_pos = DIB7000P_GPIO_DEFAULT_PWM_POS,

		.hostbus_diversity = 1,
	}, {
		.output_mpeg2_in_188_bytes = 1,

		.agc_config_count = 1,
		.agc = &dib7070_agc_config,
		.bw  = &dib7070_bw_config_12_mhz,
		.tuner_is_baseband = 1,
		.spur_protect = 1,

		.gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
		.gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
		.gpio_pwm_pos = DIB7000P_GPIO_DEFAULT_PWM_POS,

		.hostbus_diversity = 1,
	}
};

static int stk7070pd_frontend_attach0(struct dvb_usb_adapter *adap)
{
	dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1);
	msleep(10);
	dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1);
	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0);

	dib0700_ctrl_clock(adap->dev, 72, 1);

	msleep(10);
	dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1);
	msleep(10);
	dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);

	dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 2, 18, stk7070pd_dib7000p_config);

	adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, &stk7070pd_dib7000p_config[0]);
	return adap->fe == NULL ? -ENODEV : 0;
}

static int stk7070pd_frontend_attach1(struct dvb_usb_adapter *adap)
{
	adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x82, &stk7070pd_dib7000p_config[1]);
	return adap->fe == NULL ? -ENODEV : 0;
}

/* DVB-USB and USB stuff follows */
struct usb_device_id dib0700_usb_id_table[] = {
/* 0 */	{ USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7700P) },
	{ USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7700P_PC) },
	{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_500) },
	{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_500_2) },
	{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK) },
/* 5 */	{ USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR) },
	{ USB_DEVICE(USB_VID_COMPRO,    USB_PID_COMPRO_VIDEOMATE_U500) },
	{ USB_DEVICE(USB_VID_UNIWILL,   USB_PID_UNIWILL_STK7700P) },
	{ USB_DEVICE(USB_VID_LEADTEK,   USB_PID_WINFAST_DTV_DONGLE_STK7700P) },
	{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK_2) },
/* 10 */{ USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR_2) },
	{ USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_PCTV2000E) },
	{ USB_DEVICE(USB_VID_TERRATEC,
			USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY) },
	{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_TD_STICK) },
	{ USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7700D) },
/* 15 */{ USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7070P) },
	{ USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_PCTV_DVB_T_FLASH) },
	{ USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7070PD) },
	{ USB_DEVICE(USB_VID_PINNACLE,
			USB_PID_PINNACLE_PCTV_DUAL_DIVERSITY_DVB_T) },
	{ USB_DEVICE(USB_VID_COMPRO,    USB_PID_COMPRO_VIDEOMATE_U500_PC) },
/* 20 */{ USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_EXPRESS) },
	{ USB_DEVICE(USB_VID_GIGABYTE,  USB_PID_GIGABYTE_U7000) },
	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14BR) },
	{ USB_DEVICE(USB_VID_ASUS,      USB_PID_ASUS_U3000) },
	{ USB_DEVICE(USB_VID_ASUS,      USB_PID_ASUS_U3100) },
/* 25 */{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK_3) },
	{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_MYTV_T) },
	{ USB_DEVICE(USB_VID_TERRATEC,  USB_PID_TERRATEC_CINERGY_HT_USB_XE) },
	{ USB_DEVICE(USB_VID_PINNACLE,	USB_PID_PINNACLE_EXPRESSCARD_320CX) },
	{ USB_DEVICE(USB_VID_PINNACLE,	USB_PID_PINNACLE_PCTV72E) },
/* 30 */{ USB_DEVICE(USB_VID_PINNACLE,	USB_PID_PINNACLE_PCTV73E) },
	{ USB_DEVICE(USB_VID_YUAN,	USB_PID_YUAN_EC372S) },
	{ USB_DEVICE(USB_VID_TERRATEC,	USB_PID_TERRATEC_CINERGY_HT_EXPRESS) },
	{ USB_DEVICE(USB_VID_TERRATEC,	USB_PID_TERRATEC_CINERGY_T_XXS) },
	{ USB_DEVICE(USB_VID_LEADTEK,   USB_PID_WINFAST_DTV_DONGLE_STK7700P_2) },
/* 35 */{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_TD_STICK_52009) },
	{ USB_DEVICE(USB_VID_ASUS,	USB_PID_ASUS_U3000H) },
	{ 0 }		/* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table);

#define DIB0700_DEFAULT_DEVICE_PROPERTIES \
	.caps              = DVB_USB_IS_AN_I2C_ADAPTER, \
	.usb_ctrl          = DEVICE_SPECIFIC, \
	.firmware          = "dvb-usb-dib0700-1.10.fw", \
	.download_firmware = dib0700_download_firmware, \
	.no_reconnect      = 1, \
	.size_of_priv      = sizeof(struct dib0700_state), \
	.i2c_algo          = &dib0700_i2c_algo, \
	.identify_state    = dib0700_identify_state

#define DIB0700_DEFAULT_STREAMING_CONFIG(ep) \
	.streaming_ctrl   = dib0700_streaming_ctrl, \
	.stream = { \
		.type = USB_BULK, \
		.count = 4, \
		.endpoint = ep, \
		.u = { \
			.bulk = { \
				.buffersize = 39480, \
			} \
		} \
	}

struct dvb_usb_device_properties dib0700_devices[] = {
	{
		DIB0700_DEFAULT_DEVICE_PROPERTIES,

		.num_adapters = 1,
		.adapter = {
			{
				.frontend_attach  = stk7700p_frontend_attach,
				.tuner_attach     = stk7700p_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x02),
			},
		},

		.num_device_descs = 8,
		.devices = {
			{   "DiBcom STK7700P reference design",
				{ &dib0700_usb_id_table[0], &dib0700_usb_id_table[1] },
				{ NULL },
			},
			{   "Hauppauge Nova-T Stick",
				{ &dib0700_usb_id_table[4], &dib0700_usb_id_table[9], NULL },
				{ NULL },
			},
			{   "AVerMedia AVerTV DVB-T Volar",
				{ &dib0700_usb_id_table[5], &dib0700_usb_id_table[10] },
				{ NULL },
			},
			{   "Compro Videomate U500",
				{ &dib0700_usb_id_table[6], &dib0700_usb_id_table[19] },
				{ NULL },
			},
			{   "Uniwill STK7700P based (Hama and others)",
				{ &dib0700_usb_id_table[7], NULL },
				{ NULL },
			},
			{   "Leadtek Winfast DTV Dongle (STK7700P based)",
				{ &dib0700_usb_id_table[8], &dib0700_usb_id_table[34] },
				{ NULL },
			},
			{   "AVerMedia AVerTV DVB-T Express",
				{ &dib0700_usb_id_table[20] },
				{ NULL },
			},
			{   "Gigabyte U7000",
				{ &dib0700_usb_id_table[21], NULL },
				{ NULL },
			}
		},

		.rc_interval      = DEFAULT_RC_INTERVAL,
		.rc_key_map       = dib0700_rc_keys,
		.rc_key_map_size  = ARRAY_SIZE(dib0700_rc_keys),
		.rc_query         = dib0700_rc_query
	}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,

		.num_adapters = 2,
		.adapter = {
			{
				.frontend_attach  = bristol_frontend_attach,
				.tuner_attach     = bristol_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x02),
			}, {
				.frontend_attach  = bristol_frontend_attach,
				.tuner_attach     = bristol_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x03),
			}
		},

		.num_device_descs = 1,
		.devices = {
			{   "Hauppauge Nova-T 500 Dual DVB-T",
				{ &dib0700_usb_id_table[2], &dib0700_usb_id_table[3], NULL },
				{ NULL },
			},
		},

		.rc_interval      = DEFAULT_RC_INTERVAL,
		.rc_key_map       = dib0700_rc_keys,
		.rc_key_map_size  = ARRAY_SIZE(dib0700_rc_keys),
		.rc_query         = dib0700_rc_query
	}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,

		.num_adapters = 2,
		.adapter = {
			{
				.frontend_attach  = stk7700d_frontend_attach,
				.tuner_attach     = stk7700d_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x02),
			}, {
				.frontend_attach  = stk7700d_frontend_attach,
				.tuner_attach     = stk7700d_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x03),
			}
		},

		.num_device_descs = 4,
		.devices = {
			{   "Pinnacle PCTV 2000e",
				{ &dib0700_usb_id_table[11], NULL },
				{ NULL },
			},
			{   "Terratec Cinergy DT XS Diversity",
				{ &dib0700_usb_id_table[12], NULL },
				{ NULL },
			},
			{   "Hauppauge Nova-TD Stick/Elgato Eye-TV Diversity",
				{ &dib0700_usb_id_table[13], NULL },
				{ NULL },
			},
			{   "DiBcom STK7700D reference design",
				{ &dib0700_usb_id_table[14], NULL },
				{ NULL },
			}
		},

		.rc_interval      = DEFAULT_RC_INTERVAL,
		.rc_key_map       = dib0700_rc_keys,
		.rc_key_map_size  = ARRAY_SIZE(dib0700_rc_keys),
		.rc_query         = dib0700_rc_query

	}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,

		.num_adapters = 1,
		.adapter = {
			{
				.frontend_attach  = stk7700P2_frontend_attach,
				.tuner_attach     = stk7700d_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x02),
			},
		},

		.num_device_descs = 2,
		.devices = {
			{   "ASUS My Cinema U3000 Mini DVBT Tuner",
				{ &dib0700_usb_id_table[23], NULL },
				{ NULL },
			},
			{   "Yuan EC372S",
				{ &dib0700_usb_id_table[31], NULL },
				{ NULL },
			}
		}
	}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,

		.num_adapters = 1,
		.adapter = {
			{
				.frontend_attach  = stk7070p_frontend_attach,
				.tuner_attach     = dib7070p_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x02),

				.size_of_priv     = sizeof(struct dib0700_adapter_state),
			},
		},

		.num_device_descs = 9,
		.devices = {
			{   "DiBcom STK7070P reference design",
				{ &dib0700_usb_id_table[15], NULL },
				{ NULL },
			},
			{   "Pinnacle PCTV DVB-T Flash Stick",
				{ &dib0700_usb_id_table[16], NULL },
				{ NULL },
			},
			{   "Artec T14BR DVB-T",
				{ &dib0700_usb_id_table[22], NULL },
				{ NULL },
			},
			{   "ASUS My Cinema U3100 Mini DVBT Tuner",
				{ &dib0700_usb_id_table[24], NULL },
				{ NULL },
			},
			{   "Hauppauge Nova-T Stick",
				{ &dib0700_usb_id_table[25], NULL },
				{ NULL },
			},
			{   "Hauppauge Nova-T MyTV.t",
				{ &dib0700_usb_id_table[26], NULL },
				{ NULL },
			},
			{   "Pinnacle PCTV 72e",
				{ &dib0700_usb_id_table[29], NULL },
				{ NULL },
			},
			{   "Pinnacle PCTV 73e",
				{ &dib0700_usb_id_table[30], NULL },
				{ NULL },
			},
			{   "Terratec Cinergy T USB XXS",
				{ &dib0700_usb_id_table[33], NULL },
				{ NULL },
			},
		},

		.rc_interval      = DEFAULT_RC_INTERVAL,
		.rc_key_map       = dib0700_rc_keys,
		.rc_key_map_size  = ARRAY_SIZE(dib0700_rc_keys),
		.rc_query         = dib0700_rc_query

	}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,

		.num_adapters = 2,
		.adapter = {
			{
				.frontend_attach  = stk7070pd_frontend_attach0,
				.tuner_attach     = dib7070p_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x02),

				.size_of_priv     = sizeof(struct dib0700_adapter_state),
			}, {
				.frontend_attach  = stk7070pd_frontend_attach1,
				.tuner_attach     = dib7070p_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x03),

				.size_of_priv     = sizeof(struct dib0700_adapter_state),
			}
		},

		.num_device_descs = 3,
		.devices = {
			{   "DiBcom STK7070PD reference design",
				{ &dib0700_usb_id_table[17], NULL },
				{ NULL },
			},
			{   "Pinnacle PCTV Dual DVB-T Diversity Stick",
				{ &dib0700_usb_id_table[18], NULL },
				{ NULL },
			},
			{   "Hauppauge Nova-TD Stick (52009)",
				{ &dib0700_usb_id_table[35], NULL },
				{ NULL },
			}
		}
	}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,

		.num_adapters = 1,
		.adapter = {
			{
				.frontend_attach  = stk7700ph_frontend_attach,
				.tuner_attach     = stk7700ph_tuner_attach,

				DIB0700_DEFAULT_STREAMING_CONFIG(0x02),

				.size_of_priv = sizeof(struct
						dib0700_adapter_state),
			},
		},

		.num_device_descs = 4,
		.devices = {
			{   "Terratec Cinergy HT USB XE",
				{ &dib0700_usb_id_table[27], NULL },
				{ NULL },
			},
			{   "ASUS U3000 Hybrid",
				{ &dib0700_usb_id_table[36], NULL },
				{ NULL },
			},
			{   "Pinnacle Expresscard 320cx",
				{ &dib0700_usb_id_table[28], NULL },
				{ NULL },
			},
			{   "Terratec Cinergy HT Express",
				{ &dib0700_usb_id_table[32], NULL },
				{ NULL },
			},
		},
		.rc_interval      = DEFAULT_RC_INTERVAL,
		.rc_key_map       = dib0700_rc_keys,
		.rc_key_map_size  = ARRAY_SIZE(dib0700_rc_keys),
		.rc_query         = dib0700_rc_query
	},
};

int dib0700_device_count = ARRAY_SIZE(dib0700_devices);

[-- Attachment #4: .config --]
[-- Type: application/octet-stream, Size: 5010 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 
# Sun May 11 14:23:24 2008
#
CONFIG_INPUT=y
CONFIG_USB=m
CONFIG_PARPORT=m
# CONFIG_due is not set
# CONFIG_SPARC64 is not set
CONFIG_FW_LOADER=m
# CONFIG_of is not set
# CONFIG_PLAT_M32700UT is not set
CONFIG_NET=y
CONFIG_FB_CFB_COPYAREA=y
# CONFIG_GENERIC_GPIO is not set
# CONFIG_SOUND_PRIME is not set
# CONFIG_SND_AC97_CODEC is not set
# CONFIG_PXA27x is not set
# CONFIG_dependencies is not set
# CONFIG_SGI_IP22 is not set
CONFIG_I2C=m
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_GPIO_PCA953X is not set
CONFIG_STANDALONE=y
CONFIG_HOTPLUG=y
# CONFIG_dependency is not set
# CONFIG_SND_MPU401_UART is not set
# CONFIG_SND is not set
CONFIG_MODULES=y
# CONFIG_BROKEN is not set
# CONFIG_SND_OPL3_LIB is not set
CONFIG_HAS_IOMEM=y
# CONFIG_PPC_PMAC is not set
CONFIG_PROC_FS=y
# CONFIG_SPARC32 is not set
CONFIG_I2C_ALGOBIT=m
# CONFIG_DVB_FE_CUSTOMIZE is not set
# CONFIG_to is not set
CONFIG_HAS_DMA=y
CONFIG_INET=y
# CONFIG_SOUND_OSS is not set
CONFIG_CRC32=m
CONFIG_FB=y
CONFIG_SYSFS=y
CONFIG_ISA=y
CONFIG_PCI=y
CONFIG_SONY_LAPTOP=m
# CONFIG_SND_PCM is not set
CONFIG_PARPORT_1284=y
CONFIG_EXPERIMENTAL=y
# CONFIG_M32R is not set
# CONFIG_I2C_ALGO_SGI is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_VIRT_TO_BUS=y
# CONFIG_VIDEO_KERNEL_VERSION is not set

#
# Multimedia devices
#

#
# Multimedia core support
#
# CONFIG_VIDEO_DEV is not set
CONFIG_DVB_CORE=m
CONFIG_VIDEO_MEDIA=m

#
# Multimedia drivers
#
CONFIG_MEDIA_ATTACH=y
CONFIG_MEDIA_TUNER=m
CONFIG_MEDIA_TUNER_CUSTOMIZE=y
# CONFIG_MEDIA_TUNER_SIMPLE is not set
# CONFIG_MEDIA_TUNER_TDA8290 is not set
# CONFIG_MEDIA_TUNER_TDA827X is not set
# CONFIG_MEDIA_TUNER_TDA18271 is not set
# CONFIG_MEDIA_TUNER_TDA9887 is not set
# CONFIG_MEDIA_TUNER_TEA5761 is not set
# CONFIG_MEDIA_TUNER_TEA5767 is not set
# CONFIG_MEDIA_TUNER_MT20XX is not set
CONFIG_MEDIA_TUNER_MT2060=m
CONFIG_MEDIA_TUNER_MT2266=m
# CONFIG_MEDIA_TUNER_MT2131 is not set
# CONFIG_MEDIA_TUNER_QT1010 is not set
CONFIG_MEDIA_TUNER_XC2028=m
# CONFIG_MEDIA_TUNER_XC5000 is not set
# CONFIG_MEDIA_TUNER_MXL5005S is not set
CONFIG_DVB_CAPTURE_DRIVERS=y

#
# Supported SAA7146 based PCI Adapters
#
# CONFIG_TTPCI_EEPROM is not set
# CONFIG_DVB_BUDGET_CORE is not set

#
# Supported USB Adapters
#
CONFIG_DVB_USB=m
CONFIG_DVB_USB_DEBUG=y
# CONFIG_DVB_USB_A800 is not set
# CONFIG_DVB_USB_DIBUSB_MB is not set
# CONFIG_DVB_USB_DIBUSB_MC is not set
CONFIG_DVB_USB_DIB0700=m
# CONFIG_DVB_USB_UMT_010 is not set
# CONFIG_DVB_USB_CXUSB is not set
# CONFIG_DVB_USB_M920X is not set
# CONFIG_DVB_USB_GL861 is not set
# CONFIG_DVB_USB_AU6610 is not set
# CONFIG_DVB_USB_DIGITV is not set
# CONFIG_DVB_USB_VP7045 is not set
# CONFIG_DVB_USB_VP702X is not set
# CONFIG_DVB_USB_GP8PSK is not set
# CONFIG_DVB_USB_NOVA_T_USB2 is not set
# CONFIG_DVB_USB_TTUSB2 is not set
# CONFIG_DVB_USB_DTT200U is not set
# CONFIG_DVB_USB_OPERA1 is not set
# CONFIG_DVB_USB_AF9005 is not set
# CONFIG_DVB_TTUSB_BUDGET is not set
# CONFIG_DVB_TTUSB_DEC is not set
# CONFIG_DVB_CINERGYT2 is not set

#
# Supported FlexCopII (B2C2) Adapters
#
# CONFIG_DVB_B2C2_FLEXCOP is not set

#
# Supported BT878 Adapters
#

#
# Supported Pluto2 Adapters
#
# CONFIG_DVB_PLUTO2 is not set

#
# Supported DVB Frontends
#

#
# Customise DVB Frontends
#
# CONFIG_DVB_FE_CUSTOMISE is not set

#
# DVB-S (satellite) frontends
#
# CONFIG_DVB_CX24110 is not set
# CONFIG_DVB_CX24123 is not set
# CONFIG_DVB_MT312 is not set
# CONFIG_DVB_S5H1420 is not set
# CONFIG_DVB_STV0299 is not set
# CONFIG_DVB_TDA8083 is not set
# CONFIG_DVB_TDA10086 is not set
# CONFIG_DVB_VES1X93 is not set
# CONFIG_DVB_TUNER_ITD1000 is not set
# CONFIG_DVB_TDA826X is not set
# CONFIG_DVB_TUA6100 is not set

#
# DVB-T (terrestrial) frontends
#
# CONFIG_DVB_SP8870 is not set
# CONFIG_DVB_SP887X is not set
# CONFIG_DVB_CX22700 is not set
# CONFIG_DVB_CX22702 is not set
# CONFIG_DVB_DRX397XD is not set
# CONFIG_DVB_L64781 is not set
# CONFIG_DVB_TDA1004X is not set
# CONFIG_DVB_NXT6000 is not set
# CONFIG_DVB_MT352 is not set
# CONFIG_DVB_ZL10353 is not set
# CONFIG_DVB_DIB3000MB is not set
CONFIG_DVB_DIB3000MC=m
CONFIG_DVB_DIB7000M=m
CONFIG_DVB_DIB7000P=m
# CONFIG_DVB_TDA10048 is not set

#
# DVB-C (cable) frontends
#
# CONFIG_DVB_VES1820 is not set
# CONFIG_DVB_TDA10021 is not set
# CONFIG_DVB_TDA10023 is not set
# CONFIG_DVB_STV0297 is not set

#
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
# CONFIG_DVB_NXT200X is not set
# CONFIG_DVB_OR51211 is not set
# CONFIG_DVB_OR51132 is not set
# CONFIG_DVB_BCM3510 is not set
# CONFIG_DVB_LGDT330X is not set
# CONFIG_DVB_S5H1409 is not set
# CONFIG_DVB_AU8522 is not set
# CONFIG_DVB_S5H1411 is not set

#
# Digital terrestrial only tuners/PLL
#
CONFIG_DVB_PLL=m
CONFIG_DVB_TUNER_DIB0070=m

#
# SEC control devices for DVB-S
#
# CONFIG_DVB_LNBP21 is not set
# CONFIG_DVB_ISL6405 is not set
# CONFIG_DVB_ISL6421 is not set
# CONFIG_DAB is not set

#
# Audio devices for multimedia
#

#
# ALSA sound
#

#
# OSS sound
#

[-- Attachment #5: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
  2008-08-11 13:29       ` Albert Comerma
@ 2008-08-11 15:28         ` zePh7r
  2008-08-11 15:40           ` Albert Comerma
  0 siblings, 1 reply; 14+ messages in thread
From: zePh7r @ 2008-08-11 15:28 UTC (permalink / raw)
  To: Albert Comerma; +Cc: linux-dvb

[-- Attachment #1: Type: text/html, Size: 6575 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
  2008-08-11 15:28         ` zePh7r
@ 2008-08-11 15:40           ` Albert Comerma
  2008-08-11 15:51             ` zePh7r
  2008-08-11 18:42             ` zePh7r
  0 siblings, 2 replies; 14+ messages in thread
From: Albert Comerma @ 2008-08-11 15:40 UTC (permalink / raw)
  To: zePh7r; +Cc: linux-dvb


[-- Attachment #1.1: Type: text/plain, Size: 5267 bytes --]

That's something related to your distribution, so I can't help much. Just
verify you have gcc and linux-headers and all the stuff needed installed.

Albert

2008/8/11 zePh7r <zeph7r@gmail.com>

>  Albert Comerma escreveu:
>
> If you look around line 1082 of dib0700_devices.c you will find the table
> of the cards, which refers to the id's you added on dvb-usb-ids.h. So you
> must add an entry to that table. I send you the modified files, so you can
> see. I also send you a .config file you must copy on v4l-dvb/v4l/ folder.
> Then go into v4l-dvb and just type make, and then as root make install. That
> should work without problems. To try all of this you need the dibcom and
> xceive firmware at /lib/firmware
>
> Albert
>
> 2008/8/11 zePh7r <zeph7r@gmail.com>
>
>> Albert Comerma escreveu:
>>
>>> Sorry, I didn't explained much... it also took some time to me to
>>> understand how it's working... Since xc2028 is the tunner it has no Id
>>> information on the code. The id's are on the usb bridge code. You should add
>>> your deviece id's at;
>>> /v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h and then insert
>>> your device at
>>> /v4l-dvb/linux/drivers/media/dvb/dvb-usb/dib0700_devices.c    first the
>>> device descriptors (at arround line 1120) and then the device itself, I
>>> would try it around line 1418. This last file, has already the include to
>>> the xc2028 code and calls the tunner funcions. Looking the code around this
>>> lines I guess you will understand how it works.
>>>
>>> Albert
>>>
>>>  2008/8/9 zePh7r <zeph7r@gmail.com <mailto:zeph7r@gmail.com>>
>>>
>>>    Albert Comerma escreveu:
>>>
>>>        Just to clarify things...
>>>
>>>        Xceive chips are just tunners, RF chips, mostly analogue with
>>>        some digital interface, they don't do anything with usb or
>>>        comunication with the computer, for this reason you need the
>>>        dibcom chip, it's a usb bridge + decoder + something else...
>>>        To start to develop something you must first be sure of what
>>>        chips it's using.
>>>        If not you can try blindly if modifying the code for the
>>>        U3000-Mini works or Pinnacle 320cx (dibcom 7700 + xceive2028)
>>>        work (you just need to add your device usb id's).
>>>
>>>        Albert
>>>
>>>    Thank you for replying Albert.
>>>    I've been exploring the files downloaded through the mercurial
>>>    repository and though I have found files which seem like they
>>>    relate to that purpose in
>>>    /v4l-dvb/linux/drivers/media/common/tuners (which are
>>>    tuner-xc2028.c , tuner-xc2028.h and tuner-xc2028-types.h) I can't
>>>    find any section in the above files with some sort of list of
>>>    device ID's so as to resemble them. There should be something like
>>>    an xc2028-cards.c right?
>>>    This must seem a noob question but this whole process looks like
>>>    something someone who's not deeply into this project couldn't do
>>>    easily..
>>>
>>>
>>>  When I try to compile the drivers I get this:
>>
>> zeph7r@zeph7r-laptop:~/v4l/v4l-dvb> make all
>> make -C /home/zeph7r/v4l/v4l-dvb/v4l all
>> make[1]: Entering directory `/home/zeph7r/v4l/v4l-dvb/v4l'
>> Updating/Creating .config
>> Preparing to compile for kernel version 2.6.25
>> File not found: /lib/modules/2.6.25.11-0.1-default/build/.config at
>> ./scripts/make_kconfig.pl line 32, <IN> line 4.
>> make[1]: *** No rule to make target `.myconfig', needed by
>> `config-compat.h'.  Stop.
>> make[1]: Leaving directory `/home/zeph7r/v4l/v4l-dvb/v4l'
>> make: *** [all] Error 2
>>
>> any hints on what might be causing this? I went look at that dir and found
>> a makedumpfile.config , perhaps I should edit config-compat.h and set it to
>> go look for that file instead..
>>
>
>
>
> Even after I putted .config in v4l-dvb/v4l it is still not compiling:
>
> zeph7r@zeph7r-laptop:~/v4l/v4l-dvb> make
> make -C /home/zeph7r/v4l/v4l-dvb/v4l
> make[1]: Entering directory `/home/zeph7r/v4l/v4l-dvb/v4l'
> No version yet, using 2.6.25.11-0.1-default
> make[1]: Leaving directory `/home/zeph7r/v4l/v4l-dvb/v4l'
> make[1]: Entering directory `/home/zeph7r/v4l/v4l-dvb/v4l'
> scripts/make_makefile.pl
> Updating/Creating .config
> ./scripts/make_kconfig.pl /lib/modules/2.6.25.11-0.1-default/build
> /lib/modules/2.6.25.11-0.1-default/build
> Preparing to compile for kernel version 2.6.25
> File not found: /lib/modules/2.6.25.11-0.1-default/build/.config at
> ./scripts/make_kconfig.pl line 32, <IN> line 4.
> make[1]: Leaving directory `/home/zeph7r/v4l/v4l-dvb/v4l'
> make[1]: Entering directory `/home/zeph7r/v4l/v4l-dvb/v4l'
> ./scripts/make_kconfig.pl /lib/modules/2.6.25.11-0.1-default/build
> /lib/modules/2.6.25.11-0.1-default/build
> Preparing to compile for kernel version 2.6.25
> File not found: /lib/modules/2.6.25.11-0.1-default/build/.config at
> ./scripts/make_kconfig.pl line 32, <IN> line 4.
> make[1]: *** No rule to make target `.myconfig', needed by
> `config-compat.h'.  Stop.
> make[1]: Leaving directory `/home/zeph7r/v4l/v4l-dvb/v4l'
> make: *** [all] Error 2
> zeph7r@zeph7r-laptop:~/v4l/v4l-dvb>
>
> I even tried copying .config to /lib/modules/2.6.25.11-0.1-default/build
> /lib/modules/2.6.25.11-0.1-default/build but some other error came up as
> well
>

[-- Attachment #1.2: Type: text/html, Size: 7147 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
  2008-08-11 15:40           ` Albert Comerma
@ 2008-08-11 15:51             ` zePh7r
  2008-08-11 18:42             ` zePh7r
  1 sibling, 0 replies; 14+ messages in thread
From: zePh7r @ 2008-08-11 15:51 UTC (permalink / raw)
  To: Albert Comerma; +Cc: linux-dvb

[-- Attachment #1: Type: text/html, Size: 7961 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
  2008-08-11 15:40           ` Albert Comerma
  2008-08-11 15:51             ` zePh7r
@ 2008-08-11 18:42             ` zePh7r
  1 sibling, 0 replies; 14+ messages in thread
From: zePh7r @ 2008-08-11 18:42 UTC (permalink / raw)
  To: Albert Comerma; +Cc: linux-dvb

[-- Attachment #1: Type: text/html, Size: 10000 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Support for Asus My-Cinema U3000Hybrid?
       [not found] <48A1B85E.5070800@net.novis.pt>
@ 2008-08-12 19:30 ` Albert Comerma
  2008-08-12 20:14   ` zePh7r
  0 siblings, 1 reply; 14+ messages in thread
From: Albert Comerma @ 2008-08-12 19:30 UTC (permalink / raw)
  To: zePh7r; +Cc: video4linux-list, linux-dvb

I'm happy to hear that. :) it's a shame that you can't try with some dvb
signal, but looks good. I've never used kdetv, so no idea.

Albert

2008/8/12 zePh7r <zeph7r@net.novis.pt>

> This is looking good. It seems to load the firmware well. I even ran
> kaffeine and it detected my card instantly. However, as there's no dvb-t
> service where I live (there's still no dvb-t in Portugal) I can't test it in
> full. However I tried to do a channel scan and the signal bar showed high
> strength signals multiple times during scan -- which I interpret as a) the
> tuner is working, and b) the card is being able to find signal but unable to
> decode it since it's not a digital signal. I'm getting this output in dmesg
> just for plugging the device into the usb port:
>
> Aug 12 14:29:29 zeph7r-laptop kernel: usb 4-1: new high speed USB device
> using ehci_hcd and address 12
> Aug 12 14:29:29 zeph7r-laptop kernel: usb 4-1: configuration #1 chosen from
> 1 choice
> Aug 12 14:29:29 zeph7r-laptop kernel: dvb-usb: found a 'Asus My
> Cinema-U3000Hybrid' in cold state, will try to load a firmware
> Aug 12 14:29:29 zeph7r-laptop kernel: dvb-usb: downloading firmware from
> file 'dvb-usb-dib0700-1.10.fw'
> Aug 12 14:29:29 zeph7r-laptop kernel: dib0700: firmware started
> successfully.
> Aug 12 14:29:30 zeph7r-laptop kernel: dvb-usb: found a 'Asus My
> Cinema-U3000Hybrid' in warm state.
> Aug 12 14:29:30 zeph7r-laptop kernel: dvb-usb: will pass the complete MPEG2
> transport stream to the software demuxer.
> Aug 12 14:29:30 zeph7r-laptop kernel: DVB: registering new adapter (Asus My
> Cinema-U3000Hybrid)
> Aug 12 14:29:30 zeph7r-laptop kernel: DVB: registering frontend 0 (DiBcom
> 7000PC)...
> Aug 12 14:29:30 zeph7r-laptop kernel: xc2028 2-0061: creating new instance
> Aug 12 14:29:30 zeph7r-laptop kernel: xc2028 2-0061: type set to XCeive
> xc2028/xc3028 tuner
> Aug 12 14:29:30 zeph7r-laptop kernel: input: IR-receiver inside an USB DVB
> receiver as /devices/pci0000:00/0000:00:1d.7/usb4/4-1/input/input13
> Aug 12 14:29:30 zeph7r-laptop kernel: dvb-usb: schedule remote query
> interval to 150 msecs.
> Aug 12 14:29:30 zeph7r-laptop kernel: dvb-usb: Asus My Cinema-U3000Hybrid
> successfully initialized and connected.
> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: New USB device found,
> idVendor=0b05, idProduct=1736
> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: New USB device strings:
> Mfr=1, Product=2, SerialNumber=3
> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: Product: U3000 Hybrid
> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: Manufacturer: ASUSTeK
> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: SerialNumber: 8110400333
> Aug 12 14:29:36 zeph7r-laptop syslog-ng[1724]: STATS: dropped 0
>
>
> and after starting kaffeine there's still this more:
>
> Aug 12 14:41:31 zeph7r-laptop kernel: xc2028 2-0061: Loading 80 firmware
> images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
> Aug 12 14:41:31 zeph7r-laptop kernel: xc2028 2-0061: Loading firmware for
> type=BASE F8MHZ (3), id 0000000000000000.
> Aug 12 14:41:38 zeph7r-laptop kernel: xc2028 2-0061: Loading firmware for
> type=D2620 DTV7 (88), id 0000000000000000.
> Aug 12 14:41:38 zeph7r-laptop kernel: xc2028 2-0061: Loading SCODE for
> type=DTV8 SCODE HAS_IF_5400 (60000200), id 0000000000000000.
> Aug 12 14:42:04 zeph7r-laptop kernel: xc2028 2-0061: Loading firmware for
> type=D2620 DTV78 (108), id 0000000000000000.
> Aug 12 14:42:04 zeph7r-laptop kernel: xc2028 2-0061: Loading SCODE for
> type=DTV8 SCODE HAS_IF_5400 (60000200), id 0000000000000000.
>
>
> However I also tried kdetv and the card didn't seem to be recognized here.
> In the device list there is still only my webcam to choose from. If I try to
> run it from a terminal no significant output is shown. How can go further in
> testing and getting the analog tv part to work?
>
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Support for Asus My-Cinema U3000Hybrid?
  2008-08-12 19:30 ` Support for Asus My-Cinema U3000Hybrid? Albert Comerma
@ 2008-08-12 20:14   ` zePh7r
  2008-08-13  9:29     ` Albert Comerma
  0 siblings, 1 reply; 14+ messages in thread
From: zePh7r @ 2008-08-12 20:14 UTC (permalink / raw)
  To: Albert Comerma; +Cc: video4linux-list, linux-dvb


--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Support for Asus My-Cinema U3000Hybrid?
  2008-08-12 20:14   ` zePh7r
@ 2008-08-13  9:29     ` Albert Comerma
  2008-08-13 21:10       ` zePh7r
  0 siblings, 1 reply; 14+ messages in thread
From: Albert Comerma @ 2008-08-13  9:29 UTC (permalink / raw)
  To: zePh7r; +Cc: video4linux-list, linux-dvb

Yes, non of the hybrid devices I have worked on have support for analogue,
only dvb. I think the place to look is on video4linux mailing list. If you
want to get support for your card on the kernel (the dvb part) first would
be nice to be sure it works, and then just submit the patch to the linux-dvb
mailing list. I think it should be generated with some options and once it's
generated you should pass the perl script on v4l/scripts/checkpatch.pl to be
sure it follows the programming conventions... Just for curiosity, it worked
just as I send the code or you had to change some things? If you send me
back the files I can generate the patch for you, but again it should be
great to check it really works (you didn't get signal from any spanish
dvb?).

Albert

2008/8/12 zePh7r <zeph7r@gmail.com>

>  Albert Comerma escreveu:
>
> I'm happy to hear that. :) it's a shame that you can't try with some dvb
> signal, but looks good. I've never used kdetv, so no idea.
>
> Albert
>
> 2008/8/12 zePh7r <zeph7r@net.novis.pt>
>
>> This is looking good. It seems to load the firmware well. I even ran
>> kaffeine and it detected my card instantly. However, as there's no dvb-t
>> service where I live (there's still no dvb-t in Portugal) I can't test it in
>> full. However I tried to do a channel scan and the signal bar showed high
>> strength signals multiple times during scan -- which I interpret as a) the
>> tuner is working, and b) the card is being able to find signal but unable to
>> decode it since it's not a digital signal. I'm getting this output in dmesg
>> just for plugging the device into the usb port:
>>
>> Aug 12 14:29:29 zeph7r-laptop kernel: usb 4-1: new high speed USB device
>> using ehci_hcd and address 12
>> Aug 12 14:29:29 zeph7r-laptop kernel: usb 4-1: configuration #1 chosen
>> from 1 choice
>> Aug 12 14:29:29 zeph7r-laptop kernel: dvb-usb: found a 'Asus My
>> Cinema-U3000Hybrid' in cold state, will try to load a firmware
>> Aug 12 14:29:29 zeph7r-laptop kernel: dvb-usb: downloading firmware from
>> file 'dvb-usb-dib0700-1.10.fw'
>> Aug 12 14:29:29 zeph7r-laptop kernel: dib0700: firmware started
>> successfully.
>> Aug 12 14:29:30 zeph7r-laptop kernel: dvb-usb: found a 'Asus My
>> Cinema-U3000Hybrid' in warm state.
>> Aug 12 14:29:30 zeph7r-laptop kernel: dvb-usb: will pass the complete
>> MPEG2 transport stream to the software demuxer.
>> Aug 12 14:29:30 zeph7r-laptop kernel: DVB: registering new adapter (Asus
>> My Cinema-U3000Hybrid)
>> Aug 12 14:29:30 zeph7r-laptop kernel: DVB: registering frontend 0 (DiBcom
>> 7000PC)...
>> Aug 12 14:29:30 zeph7r-laptop kernel: xc2028 2-0061: creating new instance
>> Aug 12 14:29:30 zeph7r-laptop kernel: xc2028 2-0061: type set to XCeive
>> xc2028/xc3028 tuner
>> Aug 12 14:29:30 zeph7r-laptop kernel: input: IR-receiver inside an USB DVB
>> receiver as /devices/pci0000:00/0000:00:1d.7/usb4/4-1/input/input13
>> Aug 12 14:29:30 zeph7r-laptop kernel: dvb-usb: schedule remote query
>> interval to 150 msecs.
>> Aug 12 14:29:30 zeph7r-laptop kernel: dvb-usb: Asus My Cinema-U3000Hybrid
>> successfully initialized and connected.
>> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: New USB device found,
>> idVendor=0b05, idProduct=1736
>> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: New USB device strings:
>> Mfr=1, Product=2, SerialNumber=3
>> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: Product: U3000 Hybrid
>> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: Manufacturer: ASUSTeK
>> Aug 12 14:29:30 zeph7r-laptop kernel: usb 4-1: SerialNumber: 8110400333
>> Aug 12 14:29:36 zeph7r-laptop syslog-ng[1724]: STATS: dropped 0
>>
>>
>> and after starting kaffeine there's still this more:
>>
>> Aug 12 14:41:31 zeph7r-laptop kernel: xc2028 2-0061: Loading 80 firmware
>> images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
>> Aug 12 14:41:31 zeph7r-laptop kernel: xc2028 2-0061: Loading firmware for
>> type=BASE F8MHZ (3), id 0000000000000000.
>> Aug 12 14:41:38 zeph7r-laptop kernel: xc2028 2-0061: Loading firmware for
>> type=D2620 DTV7 (88), id 0000000000000000.
>> Aug 12 14:41:38 zeph7r-laptop kernel: xc2028 2-0061: Loading SCODE for
>> type=DTV8 SCODE HAS_IF_5400 (60000200), id 0000000000000000.
>> Aug 12 14:42:04 zeph7r-laptop kernel: xc2028 2-0061: Loading firmware for
>> type=D2620 DTV78 (108), id 0000000000000000.
>> Aug 12 14:42:04 zeph7r-laptop kernel: xc2028 2-0061: Loading SCODE for
>> type=DTV8 SCODE HAS_IF_5400 (60000200), id 0000000000000000.
>>
>>
>> However I also tried kdetv and the card didn't seem to be recognized here.
>> In the device list there is still only my webcam to choose from. If I try to
>> run it from a terminal no significant output is shown. How can go further in
>> testing and getting the analog tv part to work?
>>
>
>  So, in that case none of the devices you managed to get working so far
> (and which seem to be hybrid as well) you didn't get the analog tv part to
> work too? It's too bad you can't help me here since for me not having analog
> tv (along with the FM tuner) means having a non-functional device.. Anyway,
> can you direct me on where to look further in order to pursue the analog
> part?
> Also, I guess I'd like to contribute back what has been achieved so far and
> hope to see native support in kernel in some future release. What can I do
> to do that?
>
> Thanks for all the support so far
>
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Support for Asus My-Cinema U3000Hybrid?
  2008-08-13  9:29     ` Albert Comerma
@ 2008-08-13 21:10       ` zePh7r
       [not found]         ` <d9def9db0808131417t168bc1abvfb3b08101980405d@mail.gmail.com>
  0 siblings, 1 reply; 14+ messages in thread
From: zePh7r @ 2008-08-13 21:10 UTC (permalink / raw)
  To: Albert Comerma; +Cc: video4linux-list, linux-dvb


--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [linux-dvb] Support for Asus My-Cinema U3000Hybrid?
       [not found]         ` <d9def9db0808131417t168bc1abvfb3b08101980405d@mail.gmail.com>
@ 2008-08-16 13:28           ` zePh7r
  0 siblings, 0 replies; 14+ messages in thread
From: zePh7r @ 2008-08-16 13:28 UTC (permalink / raw)
  To: Markus Rechberger, video4linux-list, linux-dvb


--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2008-08-16 13:29 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <48A1B85E.5070800@net.novis.pt>
2008-08-12 19:30 ` Support for Asus My-Cinema U3000Hybrid? Albert Comerma
2008-08-12 20:14   ` zePh7r
2008-08-13  9:29     ` Albert Comerma
2008-08-13 21:10       ` zePh7r
     [not found]         ` <d9def9db0808131417t168bc1abvfb3b08101980405d@mail.gmail.com>
2008-08-16 13:28           ` [linux-dvb] " zePh7r
2008-08-08 12:32 Albert Comerma
     [not found] ` <489CCD82.5030406@gmail.com>
2008-08-10  9:51   ` Albert Comerma
2008-08-11 11:22     ` zePh7r
2008-08-11 12:39     ` zePh7r
2008-08-11 13:29       ` Albert Comerma
2008-08-11 15:28         ` zePh7r
2008-08-11 15:40           ` Albert Comerma
2008-08-11 15:51             ` zePh7r
2008-08-11 18:42             ` zePh7r

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox