Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
[powerpc.git] / drivers / media / video / saa7134 / saa7134-input.c
index 342568c..f7ea857 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) \
@@ -169,7 +173,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
                break;
        case SAA7134_BOARD_KWORLD_XPERT:
        case SAA7134_BOARD_AVACSSMARTTV:
-               ir_codes     = ir_codes_avacssmart;
+               ir_codes     = ir_codes_pixelview;
                mask_keycode = 0x00001F;
                mask_keyup   = 0x000020;
                polling      = 50; // ms
@@ -181,7 +185,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
        case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
        case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
        case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
-               ir_codes     = ir_codes_md2819;
+               ir_codes     = ir_codes_avermedia;
                mask_keycode = 0x0007C8;
                mask_keydown = 0x000010;
                polling      = 50; // ms
@@ -190,7 +194,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
                saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4);
                break;
        case SAA7134_BOARD_KWORLD_TERMINATOR:
-               ir_codes     = ir_codes_avacssmart;
+               ir_codes     = ir_codes_pixelview;
                mask_keycode = 0x00001f;
                mask_keyup   = 0x000060;
                polling      = 50; // ms
@@ -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");