switch (dev->board) {
        case SAA7134_BOARD_FLYVIDEO2000:
        case SAA7134_BOARD_FLYVIDEO3000:
-               dev->has_remote = 1;
+               dev->has_remote = SAA7134_REMOTE_GPIO;
                board_flyvideo(dev);
                break;
        case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
        case SAA7134_BOARD_GOTVIEW_7135:
        case SAA7134_BOARD_KWORLD_TERMINATOR:
        case SAA7134_BOARD_PCTV_CARDBUS:
-               dev->has_remote = 1;
+               dev->has_remote = SAA7134_REMOTE_GPIO;
                break;
        case SAA7134_BOARD_MD5044:
                printk("%s: seems there are two different versions of the MD5044\n"
 
                saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
                break;
+       /* i2c remotes */
+       case SAA7134_BOARD_PINNACLE_PCTV_110i:
+       case SAA7134_BOARD_UPMOST_PURPLE_TV:
+               dev->has_remote = SAA7134_REMOTE_I2C;
+               break;
        }
        return 0;
 }
 
                SAA7134_IRQ2_INTE_PE      |
                SAA7134_IRQ2_INTE_AR;
 
-       if (dev->has_remote)
+       if (dev->has_remote == SAA7134_REMOTE_GPIO)
                irq2_mask |= (SAA7134_IRQ2_INTE_GPIO18  |
                              SAA7134_IRQ2_INTE_GPIO18A |
                              SAA7134_IRQ2_INTE_GPIO16  );
+       else if (dev->has_remote == SAA7134_REMOTE_I2C)
+               request_module("ir-kbd-i2c");
 
        saa_writel(SAA7134_IRQ1, 0);
        saa_writel(SAA7134_IRQ2, irq2_mask);
 
        int polling      = 0;
        int ir_type      = IR_TYPE_OTHER;
 
-       if (!dev->has_remote)
+       if (dev->has_remote != SAA7134_REMOTE_GPIO)
                return -ENODEV;
        if (disable_ir)
                return -ENODEV;
 void saa7134_set_i2c_ir(struct saa7134_dev *dev, struct IR_i2c *ir)
 {
        if (disable_ir) {
+               dprintk("Found supported i2c remote, but IR has been disabled\n");
                ir->get_key=NULL;
                return;
        }
 
 #define SAA7134_MAXBOARDS 8
 #define SAA7134_INPUT_MAX 8
 
+/* ----------------------------------------------------------- */
+/* Since we support 2 remote types, lets tell them apart       */
+
+#define SAA7134_REMOTE_GPIO  1
+#define SAA7134_REMOTE_I2C   2
+
 /* ----------------------------------------------------------- */
 /* Video Output Port Register Initialization Options           */