Sfoglia il codice sorgente

[media] mceusb: allow a per-model RC map

Especially when used with Polaris boards, devices may have different
types of remotes shipped. So, we need a per-model rc-map.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Mauro Carvalho Chehab 14 anni fa
parent
commit
17c2b1fd71
1 ha cambiato i file con 12 aggiunte e 5 eliminazioni
  1. 12 5
      drivers/media/IR/mceusb.c

+ 12 - 5
drivers/media/IR/mceusb.c

@@ -123,10 +123,7 @@ struct mceusb_model {
 	u32 tx_mask_inverted:1;
 	u32 is_polaris:1;
 
-	/*
-	 * Allow specify a per-board extra data, like
-	 * device names, and per-device rc_maps
-	 */
+	const char *rc_map;	/* Allow specify a per-board map */
 };
 
 static const struct mceusb_model mceusb_model[] = {
@@ -147,6 +144,12 @@ static const struct mceusb_model mceusb_model[] = {
 	},
 	[POLARIS_EVK] = {
 		.is_polaris = 1,
+		/*
+		 * In fact, the EVK is shipped without
+		 * remotes, but we should have something handy,
+		 * to allow testing it
+		 */
+		.rc_map = RC_MAP_RC5_HAUPPAUGE_NEW,
 	},
 };
 
@@ -951,6 +954,7 @@ static struct input_dev *mceusb_init_input_dev(struct mceusb_dev *ir)
 	struct input_dev *idev;
 	struct ir_dev_props *props;
 	struct device *dev = ir->dev;
+	const char *rc_map = RC_MAP_RC6_MCE;
 	int ret = -ENODEV;
 
 	idev = input_allocate_device();
@@ -985,7 +989,10 @@ static struct input_dev *mceusb_init_input_dev(struct mceusb_dev *ir)
 
 	ir->props = props;
 
-	ret = ir_input_register(idev, RC_MAP_RC6_MCE, props, DRIVER_NAME);
+	if (mceusb_model[ir->model].rc_map)
+		rc_map = mceusb_model[ir->model].rc_map;
+
+	ret = ir_input_register(idev, rc_map, props, DRIVER_NAME);
 	if (ret < 0) {
 		dev_err(dev, "remote input device register failed\n");
 		goto irdev_failed;