V4L/DVB: sms: properly initialize IR phys and IR name
authorMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 1 Aug 2010 18:30:50 +0000 (15:30 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 2 Aug 2010 19:43:54 +0000 (16:43 -0300)
sms were using a non-compliant nomenclature for the USB devices. Fix it.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/siano/smsir.c
drivers/media/dvb/siano/smsir.h
drivers/media/dvb/siano/smsusb.c

index a56eac76e0f0c95738d4faa3a00896b584296795..f8a4fd61e3dc52646c3c2050eb62fc89e74f7680 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <linux/types.h>
 #include <linux/input.h>
+#include <media/ir-core.h>
 
 #include "smscoreapi.h"
 #include "smsir.h"
@@ -247,6 +248,7 @@ void sms_ir_event(struct smscore_device_t *coredev, const char *buf, int len)
 int sms_ir_init(struct smscore_device_t *coredev)
 {
        struct input_dev *input_dev;
+       int board_id = smscore_get_board_id(coredev);
 
        sms_log("Allocating input device");
        input_dev = input_allocate_device();
@@ -256,8 +258,7 @@ int sms_ir_init(struct smscore_device_t *coredev)
        }
 
        coredev->ir.input_dev = input_dev;
-       coredev->ir.ir_kb_type =
-               sms_get_board(smscore_get_board_id(coredev))->ir_kb_type;
+       coredev->ir.ir_kb_type = sms_get_board(board_id)->ir_kb_type;
        coredev->ir.keyboard_layout_map =
                keyboard_layout_maps[coredev->ir.ir_kb_type].
                                keyboard_layout_map;
@@ -269,11 +270,15 @@ int sms_ir_init(struct smscore_device_t *coredev)
                        coredev->ir.controller, coredev->ir.timeout);
 
        snprintf(coredev->ir.name,
-                               IR_DEV_NAME_MAX_LEN,
-                               "SMS IR w/kbd type %d",
-                               coredev->ir.ir_kb_type);
+                               sizeof(coredev->ir.name),
+                               "SMS IR (%s)",
+                               sms_get_board(board_id)->name);
+
+       strlcpy(coredev->ir.phys, coredev->devpath, sizeof(coredev->ir.phys));
+       strlcat(coredev->ir.phys, "/ir0", sizeof(coredev->ir.phys));
+
        input_dev->name = coredev->ir.name;
-       input_dev->phys = coredev->ir.name;
+       input_dev->phys = coredev->ir.phys;
        input_dev->dev.parent = coredev->device;
 
        /* Key press events only */
index b7d703e2d338bf73830303969903063b02f297f2..77e65057949b1409e3030872242e8972e3d1761d 100644 (file)
@@ -24,7 +24,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include <linux/input.h>
 
-#define IR_DEV_NAME_MAX_LEN            23 /* "SMS IR kbd type nn\0" */
+#define IR_DEV_NAME_MAX_LEN            40
 #define IR_KEYBOARD_LAYOUT_SIZE        64
 #define IR_DEFAULT_TIMEOUT             100
 
@@ -78,7 +78,8 @@ struct smscore_device_t;
 struct ir_t {
        struct input_dev *input_dev;
        enum ir_kb_type ir_kb_type;
-       char name[IR_DEV_NAME_MAX_LEN+1];
+       char name[IR_DEV_NAME_MAX_LEN + 1];
+       char phys[32];
        u16 *keyboard_layout_map;
        u32 timeout;
        u32 controller;
index a9c27fb69ba747272393bb033c65d4f48a7e194d..50d4338610e023b3fb76b44867fa8a162bfd3ab7 100644 (file)
@@ -352,8 +352,7 @@ static int smsusb_init_device(struct usb_interface *intf, int board_id)
        params.num_buffers = MAX_BUFFERS;
        params.sendrequest_handler = smsusb_sendrequest;
        params.context = dev;
-       snprintf(params.devpath, sizeof(params.devpath),
-                "usb\\%d-%s", dev->udev->bus->busnum, dev->udev->devpath);
+       usb_make_path(dev->udev, params.devpath, sizeof(params.devpath));
 
        /* register in smscore */
        rc = smscore_register_device(&params, &dev->coredev);