]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - drivers/media/video/saa7134/saa7134-input.c
V4L/DVB (4629): Saa7134: add card support for Proteus Pro 2309
[linux-2.6.git] / drivers / media / video / saa7134 / saa7134-input.c
index ecfb6e2b3bd345da5a5b83d60f2e1c33214ea40a..f7ea857d5d73e540eda9913bab293de9450b5d7a 100644 (file)
@@ -37,6 +37,10 @@ static unsigned int ir_debug = 0;
 module_param(ir_debug, int, 0644);
 MODULE_PARM_DESC(ir_debug,"enable debug messages [IR]");
 
+static int pinnacle_remote = 0;
+module_param(pinnacle_remote, int, 0644);    /* Choose Pinnacle PCTV remote */
+MODULE_PARM_DESC(pinnacle_remote, "Specify Pinnacle PCTV remote: 0=coloured, 1=grey (defaults to 0)");
+
 #define dprintk(fmt, arg...)   if (ir_debug) \
        printk(KERN_DEBUG "%s/ir: " fmt, dev->name , ## arg)
 #define i2cdprintk(fmt, arg...)    if (ir_debug) \
@@ -224,12 +228,24 @@ int saa7134_input_init1(struct saa7134_dev *dev)
                mask_keyup   = 0x400000;
                polling      = 50; // ms
                break;
+       case SAA7134_BOARD_PROTEUS_2309:
+               ir_codes     = ir_codes_proteus_2309;
+               mask_keycode = 0x00007F;
+               mask_keyup   = 0x000080;
+               polling      = 50; // ms
+               break;
        case SAA7134_BOARD_VIDEOMATE_DVBT_300:
        case SAA7134_BOARD_VIDEOMATE_DVBT_200:
                ir_codes     = ir_codes_videomate_tv_pvr;
                mask_keycode = 0x003F00;
                mask_keyup   = 0x040000;
                break;
+       case SAA7134_BOARD_FLYDVBT_LR301:
+       case SAA7134_BOARD_FLYDVBTDUO:
+               ir_codes     = ir_codes_flydvb;
+               mask_keycode = 0x0001F00;
+               mask_keydown = 0x0040000;
+               break;
        }
        if (NULL == ir_codes) {
                printk("%s: Oops: IR config error [card=%d]\n",
@@ -310,8 +326,13 @@ void saa7134_set_i2c_ir(struct saa7134_dev *dev, struct IR_i2c *ir)
        switch (dev->board) {
        case SAA7134_BOARD_PINNACLE_PCTV_110i:
                snprintf(ir->c.name, sizeof(ir->c.name), "Pinnacle PCTV");
-               ir->get_key   = get_key_pinnacle;
-               ir->ir_codes  = ir_codes_pinnacle;
+               if (pinnacle_remote == 0) {
+                       ir->get_key   = get_key_pinnacle_color;
+                       ir->ir_codes = ir_codes_pinnacle_color;
+               } else {
+                       ir->get_key   = get_key_pinnacle_grey;
+                       ir->ir_codes = ir_codes_pinnacle_grey;
+               }
                break;
        case SAA7134_BOARD_UPMOST_PURPLE_TV:
                snprintf(ir->c.name, sizeof(ir->c.name), "Purple TV");