linux/drivers/hid/hid-elecom.c
<<
>>
Prefs
   1/*
   2 *  HID driver for Elecom BM084 (bluetooth mouse).
   3 *  Removes a non-existing horizontal wheel from
   4 *  the HID descriptor.
   5 *  (This module is based on "hid-ortek".)
   6 *
   7 *  Copyright (c) 2010 Richard Nauber <Richard.Nauber@gmail.com>
   8 */
   9
  10/*
  11 * This program is free software; you can redistribute it and/or modify it
  12 * under the terms of the GNU General Public License as published by the Free
  13 * Software Foundation; either version 2 of the License, or (at your option)
  14 * any later version.
  15 */
  16
  17#include <linux/device.h>
  18#include <linux/hid.h>
  19#include <linux/module.h>
  20
  21#include "hid-ids.h"
  22
  23static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
  24                unsigned int *rsize)
  25{
  26        if (*rsize >= 48 && rdesc[46] == 0x05 && rdesc[47] == 0x0c) {
  27                hid_info(hdev, "Fixing up Elecom BM084 report descriptor\n");
  28                rdesc[47] = 0x00;
  29        }
  30    return rdesc;
  31}
  32
  33static const struct hid_device_id elecom_devices[] = {
  34        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084)},
  35        { }
  36};
  37MODULE_DEVICE_TABLE(hid, elecom_devices);
  38
  39static struct hid_driver elecom_driver = {
  40        .name = "elecom",
  41        .id_table = elecom_devices,
  42        .report_fixup = elecom_report_fixup
  43};
  44
  45static int __init elecom_init(void)
  46{
  47        return hid_register_driver(&elecom_driver);
  48}
  49
  50static void __exit elecom_exit(void)
  51{
  52        hid_unregister_driver(&elecom_driver);
  53}
  54
  55module_init(elecom_init);
  56module_exit(elecom_exit);
  57MODULE_LICENSE("GPL");
  58
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.