aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2012-07-05 18:57:07 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-04 06:56:39 -0400
commitde73beeed032f93f0106992c075357be5b1f2fab (patch)
tree52112ac9dd232a7ca88a85684d5ed0f69b78905e /drivers/media/dvb
parent5674ca257c6b1553005d5a9d9b8f514c53591203 (diff)
[media] dvb_usb_v2: register device even no remote keymap defined
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>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/dvb-usb/af9015.c4
-rw-r--r--drivers/media/dvb/dvb-usb/af9035.c4
-rw-r--r--drivers/media/dvb/dvb-usb/dvb_usb.h2
-rw-r--r--drivers/media/dvb/dvb-usb/dvb_usb_core.c10
4 files changed, 15 insertions, 5 deletions
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)
1276 } 1276 }
1277 } 1277 }
1278 1278
1279 /* load empty to enable rc */
1280 if (!rc->map_name)
1281 rc->map_name = RC_MAP_EMPTY;
1282
1279 rc->allowed_protos = RC_TYPE_NEC; 1283 rc->allowed_protos = RC_TYPE_NEC;
1280 rc->query = af9015_rc_query; 1284 rc->query = af9015_rc_query;
1281 rc->interval = 500; 1285 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)
966 966
967 rc->query = af9035_rc_query; 967 rc->query = af9035_rc_query;
968 rc->interval = 500; 968 rc->interval = 500;
969
970 /* load empty to enable rc */
971 if (!rc->map_name)
972 rc->map_name = RC_MAP_EMPTY;
969 } 973 }
970 974
971 return 0; 975 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 {
124 * @bulk_mode: device supports bulk mode for rc (disable polling mode) 124 * @bulk_mode: device supports bulk mode for rc (disable polling mode)
125 */ 125 */
126struct dvb_usb_rc { 126struct dvb_usb_rc {
127 char *map_name; 127 const char *map_name;
128 u64 allowed_protos; 128 u64 allowed_protos;
129 int (*change_protocol)(struct rc_dev *dev, u64 rc_type); 129 int (*change_protocol)(struct rc_dev *dev, u64 rc_type);
130 int (*query) (struct dvb_usb_device *d); 130 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)
135 if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config) 135 if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config)
136 return 0; 136 return 0;
137 137
138 d->rc.map_name = d->rc_map;
138 ret = d->props->get_rc_config(d, &d->rc); 139 ret = d->props->get_rc_config(d, &d->rc);
139 if (ret < 0) 140 if (ret < 0)
140 goto err; 141 goto err;
141 142
143 /* disable rc when there is no keymap defined */
144 if (!d->rc.map_name)
145 return 0;
146
142 dev = rc_allocate_device(); 147 dev = rc_allocate_device();
143 if (!dev) { 148 if (!dev) {
144 ret = -ENOMEM; 149 ret = -ENOMEM;
@@ -153,14 +158,11 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
153 usb_to_input_id(d->udev, &dev->input_id); 158 usb_to_input_id(d->udev, &dev->input_id);
154 /* TODO: likely RC-core should took const char * */ 159 /* TODO: likely RC-core should took const char * */
155 dev->driver_name = (char *) d->props->driver_name; 160 dev->driver_name = (char *) d->props->driver_name;
161 dev->map_name = d->rc.map_name;
156 dev->driver_type = d->rc.driver_type; 162 dev->driver_type = d->rc.driver_type;
157 dev->allowed_protos = d->rc.allowed_protos; 163 dev->allowed_protos = d->rc.allowed_protos;
158 dev->change_protocol = d->rc.change_protocol; 164 dev->change_protocol = d->rc.change_protocol;
159 dev->priv = d; 165 dev->priv = d;
160 if (d->rc.map_name)
161 dev->map_name = d->rc.map_name;
162 else
163 dev->map_name = d->rc_map;
164 166
165 ret = rc_register_device(dev); 167 ret = rc_register_device(dev);
166 if (ret < 0) { 168 if (ret < 0) {