recent 2.6.x USB HID input weirdness

From: David S. Miller (davem_at_davemloft.net)
Date: 01/31/05

  • Next message: Herbert Xu: "Re: Memory leak in 2.6.11-rc1?"
    Date:	Sun, 30 Jan 2005 21:27:39 -0800
    To: linux-kernel@vger.kernel.org
    
    

    On sparc64 I just started getting this in my kernel logs
    on 2.6.x-BK from hidinput_input_event:

    warning: event field not found

    I added some debugging:

    hidinput_input_event: type[4] code [4] value[458759]
    hidinput_input_event: type[4] code [4] value[458761]

    This is on a Sun Type-6 USB keyboard. It does this for
    every key I press. The keys work properly, just the
    warning is printed (which makes the console kind of hard
    to use :-)

    I backed out the most recent change (included below)
    to that code and the messages went away.

    # This is a BitKeeper generated diff -Nru style patch.
    #
    # ChangeSet
    # 2005/01/27 14:48:48+01:00 vojtech@silver.ucw.cz
    # input: Enable scancode event generation in the HID driver. This should allow
    # changing HID->event mappings (via EVIOCS*) in the future and make
    # debugging easier now.
    #
    # Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
    #
    # drivers/usb/input/hid-input.c
    # 2005/01/27 14:48:37+01:00 vojtech@silver.ucw.cz +7 -3
    # input: Enable scancode event generation in the HID driver. This should allow
    # changing HID->event mappings (via EVIOCS*) in the future.
    #
    diff -Nru a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c
    --- a/drivers/usb/input/hid-input.c 2005-01-30 20:56:15 -08:00
    +++ b/drivers/usb/input/hid-input.c 2005-01-30 20:56:15 -08:00
    @@ -403,11 +403,12 @@
             if (!input)
                     return;
     
    + input_regs(input, regs);
    + input_event(input, EV_MSC, MSC_SCAN, usage->hid);
    +
             if (!usage->type)
                     return;
     
    - input_regs(input, regs);
    -
             if (((hid->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_5) && (usage->hid == 0x00090005))
                     || ((hid->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_7) && (usage->hid == 0x00090007))) {
                     if (value) hid->quirks |= HID_QUIRK_2WHEEL_MOUSE_HACK_ON;
    @@ -574,13 +575,16 @@
                                     hidinput->input.id.product = le16_to_cpu(dev->descriptor.idProduct);
                                     hidinput->input.id.version = le16_to_cpu(dev->descriptor.bcdDevice);
                                     hidinput->input.dev = &hid->intf->dev;
    +
    + set_bit(EV_MSC, hidinput->input.evbit);
    + set_bit(MSC_SCAN, hidinput->input.mscbit);
                             }
     
                             for (i = 0; i < report->maxfield; i++)
                                     for (j = 0; j < report->field[i]->maxusage; j++)
                                             hidinput_configure_usage(hidinput, report->field[i],
                                                                      report->field[i]->usage + j);
    -
    +
                             if (hid->quirks & HID_QUIRK_MULTI_INPUT) {
                                     /* This will leave hidinput NULL, so that it
                                      * allocates another one if we have more inputs on

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Herbert Xu: "Re: Memory leak in 2.6.11-rc1?"