/* request some modules */
        switch (dev->model) {
        case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2:
+       case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
        {
                struct tveeprom tv;
 #ifdef CONFIG_MODULES
                request_module("tveeprom");
-               request_module("ir-kbd-i2c");
 #endif
                /* Call first TVeeprom */
 
                        dev->i2s_speed = 2048000;
                        dev->has_msp34xx = 1;
                }
+#ifdef CONFIG_MODULES
+               if (tv.has_ir)
+                       request_module("ir-kbd-i2c");
+#endif
+               /* FIXME: Should also retrieve decoder processor type */
+
                break;
        }
        case EM2820_BOARD_KWORLD_PVRTV2800RF:
 
        { TUNER_ABSENT,        "TCL M2523_3DI_E"},
        { TUNER_ABSENT,        "Samsung THPD5222FG30A"},
        /* 120-129 */
-       { TUNER_ABSENT,        "Xceive XC3028"},
+       { TUNER_XC2028,        "Xceive XC3028"},
        { TUNER_ABSENT,        "Philips FQ1216LME MK5"},
        { TUNER_ABSENT,        "Philips FQD1216LME"},
        { TUNER_ABSENT,        "Conexant CX24118A"},