diff --git a/drivers/media/dvb/dvb-usb/af9015.c b/drivers/media/dvb/dvb-usb/af9015.c index e48cb586f4cf..bbe1d3382195 100644 --- a/drivers/media/dvb/dvb-usb/af9015.c +++ b/drivers/media/dvb/dvb-usb/af9015.c @@ -1276,6 +1276,10 @@ static int af9015_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc) } } + /* load empty to enable rc */ + if (!rc->map_name) + rc->map_name = RC_MAP_EMPTY; + rc->allowed_protos = RC_TYPE_NEC; rc->query = af9015_rc_query; rc->interval = 500; diff --git a/drivers/media/dvb/dvb-usb/af9035.c b/drivers/media/dvb/dvb-usb/af9035.c index 82b1ac716c2f..79197f46aa95 100644 --- a/drivers/media/dvb/dvb-usb/af9035.c +++ b/drivers/media/dvb/dvb-usb/af9035.c @@ -966,6 +966,10 @@ static int af9035_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc) rc->query = af9035_rc_query; rc->interval = 500; + + /* load empty to enable rc */ + if (!rc->map_name) + rc->map_name = RC_MAP_EMPTY; } return 0; diff --git a/drivers/media/dvb/dvb-usb/dvb_usb.h b/drivers/media/dvb/dvb-usb/dvb_usb.h index 6fcab07ecada..773817b5fe06 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb.h +++ b/drivers/media/dvb/dvb-usb/dvb_usb.h @@ -124,7 +124,7 @@ struct dvb_usb_driver_info { * @bulk_mode: device supports bulk mode for rc (disable polling mode) */ struct dvb_usb_rc { - char *map_name; + const char *map_name; u64 allowed_protos; int (*change_protocol)(struct rc_dev *dev, u64 rc_type); int (*query) (struct dvb_usb_device *d); diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_core.c b/drivers/media/dvb/dvb-usb/dvb_usb_core.c index aed7463167bc..3224621e1f32 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb_core.c +++ b/drivers/media/dvb/dvb-usb/dvb_usb_core.c @@ -135,10 +135,15 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d) if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config) return 0; + d->rc.map_name = d->rc_map; ret = d->props->get_rc_config(d, &d->rc); if (ret < 0) goto err; + /* disable rc when there is no keymap defined */ + if (!d->rc.map_name) + return 0; + dev = rc_allocate_device(); if (!dev) { ret = -ENOMEM; @@ -153,14 +158,11 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d) usb_to_input_id(d->udev, &dev->input_id); /* TODO: likely RC-core should took const char * */ dev->driver_name = (char *) d->props->driver_name; + dev->map_name = d->rc.map_name; dev->driver_type = d->rc.driver_type; dev->allowed_protos = d->rc.allowed_protos; dev->change_protocol = d->rc.change_protocol; dev->priv = d; - if (d->rc.map_name) - dev->map_name = d->rc.map_name; - else - dev->map_name = d->rc_map; ret = rc_register_device(dev); if (ret < 0) {