Skip to content

Commit

Permalink
[media] dvb_usb_v2: register device even no remote keymap defined
Browse files Browse the repository at this point in the history
It failed to register device when remote keymap was not set.
Fix it to register device even keymap is NULL. In that case
just skip remote registration.

Driver should set RC_MAP_EMPTY to enable remote in case of
there is remote receiver but default keymap is unknown.

Reported-by: pierigno <pierigno@gmail.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Antti Palosaari authored and Mauro Carvalho Chehab committed Aug 4, 2012
1 parent 5674ca2 commit de73bee
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 5 deletions.
4 changes: 4 additions & 0 deletions drivers/media/dvb/dvb-usb/af9015.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 4 additions & 0 deletions drivers/media/dvb/dvb-usb/af9035.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/dvb-usb/dvb_usb.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
10 changes: 6 additions & 4 deletions drivers/media/dvb/dvb-usb/dvb_usb_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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) {
Expand Down

0 comments on commit de73bee

Please sign in to comment.