[media] media: rc: ensure that protocols are enabled for scancode drivers
authorSean Young <sean@mess.org>
Fri, 1 Sep 2017 12:55:59 +0000 (09:55 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Wed, 4 Oct 2017 18:22:26 +0000 (15:22 -0300)
rc scancode drivers without change_protocol should have all
protocols enabled at all time. This was only true for cec and
ir-kbd-i2c.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/cec/cec-core.c
drivers/media/i2c/ir-kbd-i2c.c
drivers/media/rc/rc-main.c

index e3a1fb6..5870da6 100644 (file)
@@ -277,7 +277,6 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
        adap->rc->input_id.version = 1;
        adap->rc->driver_name = CEC_NAME;
        adap->rc->allowed_protocols = RC_PROTO_BIT_CEC;
-       adap->rc->enabled_protocols = RC_PROTO_BIT_CEC;
        adap->rc->priv = adap;
        adap->rc->map_name = RC_MAP_CEC;
        adap->rc->timeout = MS_TO_NS(100);
index a374e2a..8b5f7d0 100644 (file)
@@ -460,7 +460,6 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
         */
        rc->map_name       = ir->ir_codes;
        rc->allowed_protocols = rc_proto;
-       rc->enabled_protocols = rc_proto;
        if (!rc->driver_name)
                rc->driver_name = MODULE_NAME;
 
index 33bddba..127f321 100644 (file)
@@ -1638,6 +1638,9 @@ static int rc_prepare_rx_device(struct rc_dev *dev)
 
        rc_proto = BIT_ULL(rc_map->rc_proto);
 
+       if (dev->driver_type == RC_DRIVER_SCANCODE && !dev->change_protocol)
+               dev->enabled_protocols = dev->allowed_protocols;
+
        if (dev->change_protocol) {
                rc = dev->change_protocol(dev, &rc_proto);
                if (rc < 0)