On Friday 23 November 2007 21:50:55 Benjamin Schleinzer wrote:
> Hi everyone,
>
> I just bought a new HVR-900 hybrid tv stick.
> I noticed that the revision is B3C0 which isnt mentioned on the webpage.
> Also the stick doesnt work with DVB-T.
> Is there a way to tell if it uses the Micronas drx3975d demodulator.
> If so is there some source yet to test with the new revision. I would love
> to provide some more infos about that stick, if someone tells me howto ;)
>
> Cheers Ben
>
> _______________________________________________
> Em28xx mailing list
> [email protected]
> http://mcentral.de/mailman/listinfo/em28xx
I did some research and it looks like the B2C0 and B3C0 modell differ only in
packaging. I did receive a haupauge remote with the stick, that is normaly
sold seperatly.
As there is no support for the ir sensor in the stick, I added it ;)
I attach the patch to support the new grey and color remote with the
hauppauge:
Cheers Ben
--- linux/drivers/media/video/em28xx/em28xx-cards.c 2007-11-24
14:57:57.000000000 +0100
+++ linux/drivers/media/video/em28xx/em28xx-cards.c 2007-11-24
15:05:08.000000000 +0100
@@ -2205,6 +2205,7 @@
em28xx_write_regs(dev, 0x0f,"\xa7", 1); /*
enable audio 12 mhz i2s*/
msleep(10);
+
em2880_ir_attach(dev,ir_codes_hauppauge_new,ARRAY_SIZE(ir_codes_hauppauge_new),
em2880_get_key_haup);
break;
}
case EM2881_BOARD_PINNACLE_HYBRID_PRO:
@@ -2279,6 +2280,7 @@
case EM2882_BOARD_PINNACLE_HYBRID_PRO:
case EM2870_BOARD_PINNACLE_PCTV_DVB:
case EM2860_BOARD_GADMEI_UTV330:
+ case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
{
em2880_ir_detach(dev);
break;
--- linux/drivers/media/video/em28xx/em28xx-input.c 2007-11-24
14:57:57.000000000 +0100
+++ linux/drivers/media/video/em28xx/em28xx-input.c 2007-11-24
15:25:01.000000000 +0100
@@ -98,6 +98,24 @@
return 0;
}
+/* get_key for hauppaugs's devices */
+/* TODO: this is just a fast implementation ... */
+
+int em2880_get_key_haup(struct em28xx *dev, u32 *ir_key, u32 *keystatus)
+{
+ char buf[4];
+ dev->em28xx_read_reg_req_len(dev, 0x0, 0x45, buf, 4);
+ dev->ir_em2880->sequence[0]=dev->ir_em2880->sequence[1];
+ dev->ir_em2880->sequence[1]=dev->ir_em2880->sequence[2];
+ dev->ir_em2880->sequence[2]=buf[0]&1;
+ *ir_key=buf[2];
+
if((dev->ir_em2880->sequence[0]==1&&dev->ir_em2880->sequence[1]==0&&dev->ir_em2880->sequence[2]==1)||
+
(dev->ir_em2880->sequence[0]==0&&dev->ir_em2880->sequence[1]==1&&dev->ir_em2880->sequence[2]==0))
+ return 1;
+ else
+ return 0;
+}
+
static void em2880_ir_key_poll(struct em28xx *dev){
struct em2880_ir *ir=dev->ir_em2880;
static u32 ir_key, keystatus;
--- linux/drivers/media/video/em28xx/em28xx.h 2007-11-24 14:57:57.000000000
+0100
+++ linux/drivers/media/video/em28xx/em28xx.h 2007-11-24 15:07:37.000000000
+0100
@@ -626,7 +626,7 @@
int em2880_ir_attach(struct em28xx *dev,IR_KEYTAB_TYPE *keymap, int kmaplen,
int (*get_key)(struct em28xx *dev, u32 *ir_key,u32 *keystatus));
int em2880_get_key_terratec(struct em28xx *dev, u32 *ir_key,u32 *keystatus);
int em2880_get_key_pinnacle(struct em28xx *dev, u32 *ir_key, u32 *keystatus);
-
+int em2880_get_key_haup(struct em28xx *dev, u32 *ir_key, u32 *keystatus);
_______________________________________________
Em28xx mailing list
[email protected]
http://mcentral.de/mailman/listinfo/em28xx