2010-01-21 14:36:52 +00:00
/*
2011-03-16 14:13:53 -03:00
* HID driver for Ortek PKB - 1700 / WKB - 2000 ( wireless keyboard + mouse trackpad ) .
2011-03-17 00:39:33 +01:00
* Fixes LogicalMaximum error in HID report description .
2010-01-21 14:36:52 +00:00
*
* Copyright ( c ) 2010 Johnathon Harris < jmharris @ gmail . com >
*/
/*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation ; either version 2 of the License , or ( at your option )
* any later version .
*/
# include <linux/device.h>
# include <linux/hid.h>
# include <linux/module.h>
# include "hid-ids.h"
2010-08-06 23:03:06 +04:00
static __u8 * ortek_report_fixup ( struct hid_device * hdev , __u8 * rdesc ,
unsigned int * rsize )
2010-01-21 14:36:52 +00:00
{
2010-08-06 23:03:06 +04:00
if ( * rsize > = 56 & & rdesc [ 54 ] = = 0x25 & & rdesc [ 55 ] = = 0x01 ) {
2010-12-09 19:29:03 -08:00
hid_info ( hdev , " Fixing up Ortek WKB-2000 report descriptor \n " ) ;
2010-01-21 14:36:52 +00:00
rdesc [ 55 ] = 0x92 ;
}
2010-08-06 23:03:06 +04:00
return rdesc ;
2010-01-21 14:36:52 +00:00
}
static const struct hid_device_id ortek_devices [ ] = {
2011-03-16 14:13:53 -03:00
{ HID_USB_DEVICE ( USB_VENDOR_ID_ORTEK , USB_DEVICE_ID_ORTEK_PKB1700 ) } ,
2010-01-21 14:36:52 +00:00
{ HID_USB_DEVICE ( USB_VENDOR_ID_ORTEK , USB_DEVICE_ID_ORTEK_WKB2000 ) } ,
{ }
} ;
MODULE_DEVICE_TABLE ( hid , ortek_devices ) ;
static struct hid_driver ortek_driver = {
. name = " ortek " ,
. id_table = ortek_devices ,
. report_fixup = ortek_report_fixup
} ;
static int __init ortek_init ( void )
{
return hid_register_driver ( & ortek_driver ) ;
}
static void __exit ortek_exit ( void )
{
hid_unregister_driver ( & ortek_driver ) ;
}
module_init ( ortek_init ) ;
module_exit ( ortek_exit ) ;
MODULE_LICENSE ( " GPL " ) ;