]> Pileus Git - ~andy/linux/blobdiff - drivers/media/i2c/ir-kbd-i2c.c
Merge tag 'fixes-nc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[~andy/linux] / drivers / media / i2c / ir-kbd-i2c.c
index 08ae067b2b6f19f503e46bf186105dbea61a9194..8e2f79cb045eabca9ce1686ec853723097daf4e4 100644 (file)
@@ -230,7 +230,7 @@ static int get_key_avermedia_cardbus(struct IR_i2c *ir,
                return 0;
 
        dprintk(1, "read key 0x%02x/0x%02x\n", key, keygroup);
-       if (keygroup < 2 || keygroup > 3) {
+       if (keygroup < 2 || keygroup > 4) {
                /* Only a warning */
                dprintk(1, "warning: invalid key group 0x%02x for key 0x%02x\n",
                                                                keygroup, key);
@@ -239,6 +239,10 @@ static int get_key_avermedia_cardbus(struct IR_i2c *ir,
 
        *ir_key = key;
        *ir_raw = key;
+       if (!strcmp(ir->ir_codes, RC_MAP_AVERMEDIA_M733A_RM_K6)) {
+               *ir_key |= keygroup << 8;
+               *ir_raw |= keygroup << 8;
+       }
        return 1;
 }
 
@@ -332,6 +336,13 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
                rc_type     = RC_BIT_OTHER;
                ir_codes    = RC_MAP_AVERMEDIA_CARDBUS;
                break;
+       case 0x41:
+               name        = "AVerMedia EM78P153";
+               ir->get_key = get_key_avermedia_cardbus;
+               rc_type     = RC_BIT_OTHER;
+               /* RM-KV remote, seems to be same as RM-K6 */
+               ir_codes    = RC_MAP_AVERMEDIA_M733A_RM_K6;
+               break;
        case 0x71:
                name        = "Hauppauge/Zilog Z8";
                ir->get_key = get_key_haup_xvr;
@@ -423,6 +434,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
         */
        rc->map_name       = ir->ir_codes;
        rc->allowed_protos = rc_type;
+       rc->enabled_protocols = rc_type;
        if (!rc->driver_name)
                rc->driver_name = MODULE_NAME;