mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
Merge branch 'for-6.12/constify-rdesc' into for-linus
- Constification of report descriptors so drivers can use read-only memory when declaring report descriptors fixups (Thomas Weißschuh)
This commit is contained in:
commit
054e0bd345
@ -148,7 +148,7 @@ out:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dispatch_hid_bpf_output_report);
|
||||
|
||||
u8 *call_hid_bpf_rdesc_fixup(struct hid_device *hdev, u8 *rdesc, unsigned int *size)
|
||||
u8 *call_hid_bpf_rdesc_fixup(struct hid_device *hdev, const u8 *rdesc, unsigned int *size)
|
||||
{
|
||||
int ret;
|
||||
struct hid_bpf_ctx_kern ctx_kern = {
|
||||
@ -179,9 +179,7 @@ u8 *call_hid_bpf_rdesc_fixup(struct hid_device *hdev, u8 *rdesc, unsigned int *s
|
||||
*size = ret;
|
||||
}
|
||||
|
||||
rdesc = krealloc(ctx_kern.data, *size, GFP_KERNEL);
|
||||
|
||||
return rdesc;
|
||||
return krealloc(ctx_kern.data, *size, GFP_KERNEL);
|
||||
|
||||
ignore_bpf:
|
||||
kfree(ctx_kern.data);
|
||||
|
@ -620,7 +620,7 @@ static void apple_battery_timer_tick(struct timer_list *t)
|
||||
* MacBook JIS keyboard has wrong logical maximum
|
||||
* Magic Keyboard JIS has wrong logical maximum
|
||||
*/
|
||||
static __u8 *apple_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *apple_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct apple_sc *asc = hid_get_drvdata(hdev);
|
||||
|
@ -1119,7 +1119,7 @@ static const __u8 asus_g752_fixed_rdesc[] = {
|
||||
0x2A, 0xFF, 0x00, /* Usage Maximum (0xFF) */
|
||||
};
|
||||
|
||||
static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct asus_drvdata *drvdata = hid_get_drvdata(hdev);
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#include "hid-ids.h"
|
||||
|
||||
static __u8 *aureal_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *aureal_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 54 && rdesc[52] == 0x25 && rdesc[53] == 0x01) {
|
||||
|
@ -99,7 +99,7 @@
|
||||
* - map previously unused analog trigger data to Z/RZ
|
||||
* - simplify feature and output descriptor
|
||||
*/
|
||||
static __u8 pid0902_rdesc_fixed[] = {
|
||||
static const __u8 pid0902_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Generic Desktop Ctrls) */
|
||||
0x09, 0x05, /* Usage (Game Pad) */
|
||||
0xA1, 0x01, /* Collection (Application) */
|
||||
@ -464,12 +464,12 @@ error_hw_stop:
|
||||
return error;
|
||||
}
|
||||
|
||||
static __u8 *bigben_report_fixup(struct hid_device *hid, __u8 *rdesc,
|
||||
static const __u8 *bigben_report_fixup(struct hid_device *hid, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize == PID0902_RDESC_ORIG_SIZE) {
|
||||
rdesc = pid0902_rdesc_fixed;
|
||||
*rsize = sizeof(pid0902_rdesc_fixed);
|
||||
return pid0902_rdesc_fixed;
|
||||
} else
|
||||
hid_warn(hid, "unexpected rdesc, please submit for review\n");
|
||||
return rdesc;
|
||||
|
@ -22,7 +22,7 @@
|
||||
* Cherry Cymotion keyboard have an invalid HID report descriptor,
|
||||
* that needs fixing before we can parse it.
|
||||
*/
|
||||
static __u8 *ch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *ch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 18 && rdesc[11] == 0x3c && rdesc[12] == 0x02) {
|
||||
|
@ -88,8 +88,8 @@ static int ch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static __u8 *ch_switch12_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *ch_switch12_report_fixup(struct hid_device *hdev,
|
||||
__u8 *rdesc, unsigned int *rsize)
|
||||
{
|
||||
struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
|
||||
|
||||
|
@ -26,7 +26,7 @@ MODULE_LICENSE("GPL");
|
||||
/* Fixed report descriptor of HS-100B audio chip
|
||||
* Bit 4 is an abolute Microphone mute usage instead of being unassigned.
|
||||
*/
|
||||
static __u8 hs100b_rdesc_fixed[] = {
|
||||
static const __u8 hs100b_rdesc_fixed[] = {
|
||||
0x05, 0x0C, /* Usage Page (Consumer), */
|
||||
0x09, 0x01, /* Usage (Consumer Control), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -199,13 +199,13 @@ static struct hid_driver cmhid_driver = {
|
||||
.input_mapping = cmhid_input_mapping,
|
||||
};
|
||||
|
||||
static __u8 *cmhid_hs100b_report_fixup(struct hid_device *hid, __u8 *rdesc,
|
||||
static const __u8 *cmhid_hs100b_report_fixup(struct hid_device *hid, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize == HS100B_RDESC_ORIG_SIZE) {
|
||||
hid_info(hid, "Fixing CMedia HS-100B report descriptor\n");
|
||||
rdesc = hs100b_rdesc_fixed;
|
||||
*rsize = sizeof(hs100b_rdesc_fixed);
|
||||
return hs100b_rdesc_fixed;
|
||||
}
|
||||
return rdesc;
|
||||
}
|
||||
|
@ -723,7 +723,7 @@ static void hid_device_release(struct device *dev)
|
||||
* items, though they are not used yet.
|
||||
*/
|
||||
|
||||
static u8 *fetch_item(__u8 *start, __u8 *end, struct hid_item *item)
|
||||
static const u8 *fetch_item(const __u8 *start, const __u8 *end, struct hid_item *item)
|
||||
{
|
||||
u8 b;
|
||||
|
||||
@ -880,8 +880,8 @@ static int hid_scan_report(struct hid_device *hid)
|
||||
{
|
||||
struct hid_parser *parser;
|
||||
struct hid_item item;
|
||||
__u8 *start = hid->dev_rdesc;
|
||||
__u8 *end = start + hid->dev_rsize;
|
||||
const __u8 *start = hid->dev_rdesc;
|
||||
const __u8 *end = start + hid->dev_rsize;
|
||||
static int (*dispatch_type[])(struct hid_parser *parser,
|
||||
struct hid_item *item) = {
|
||||
hid_scan_main,
|
||||
@ -946,7 +946,7 @@ static int hid_scan_report(struct hid_device *hid)
|
||||
* Allocate the device report as read by the bus driver. This function should
|
||||
* only be called from parse() in ll drivers.
|
||||
*/
|
||||
int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size)
|
||||
int hid_parse_report(struct hid_device *hid, const __u8 *start, unsigned size)
|
||||
{
|
||||
hid->dev_rdesc = kmemdup(start, size, GFP_KERNEL);
|
||||
if (!hid->dev_rdesc)
|
||||
@ -1204,10 +1204,10 @@ int hid_open_report(struct hid_device *device)
|
||||
struct hid_parser *parser;
|
||||
struct hid_item item;
|
||||
unsigned int size;
|
||||
__u8 *start;
|
||||
const __u8 *start;
|
||||
__u8 *buf;
|
||||
__u8 *end;
|
||||
__u8 *next;
|
||||
const __u8 *end;
|
||||
const __u8 *next;
|
||||
int ret;
|
||||
int i;
|
||||
static int (*dispatch_type[])(struct hid_parser *parser,
|
||||
|
@ -690,8 +690,8 @@ static int corsair_input_mapping(struct hid_device *dev,
|
||||
* - USB ID 1b1c:1b3e, sold as Scimitar RGB Pro Gaming mouse
|
||||
*/
|
||||
|
||||
static __u8 *corsair_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *corsair_mouse_report_fixup(struct hid_device *hdev,
|
||||
__u8 *rdesc, unsigned int *rsize)
|
||||
{
|
||||
struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
|
||||
|
||||
|
@ -103,8 +103,8 @@ static void cougar_fix_g6_mapping(void)
|
||||
/*
|
||||
* Constant-friendly rdesc fixup for mouse interface
|
||||
*/
|
||||
static __u8 *cougar_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *cougar_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 117 && rdesc[2] == 0x09 && rdesc[3] == 0x02 &&
|
||||
(rdesc[115] | rdesc[116] << 8) >= HID_MAX_USAGES) {
|
||||
|
@ -67,7 +67,7 @@ static __u8 *va_logical_boundary_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
return rdesc;
|
||||
}
|
||||
|
||||
static __u8 *cp_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *cp_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
|
||||
|
@ -199,7 +199,7 @@ static inline int drff_init(struct hid_device *hid)
|
||||
#define PID0011_RDESC_ORIG_SIZE 101
|
||||
|
||||
/* Fixed report descriptor for PID 0x011 joystick */
|
||||
static __u8 pid0011_rdesc_fixed[] = {
|
||||
static const __u8 pid0011_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystick), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -228,14 +228,14 @@ static __u8 pid0011_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
switch (hdev->product) {
|
||||
case 0x0011:
|
||||
if (*rsize == PID0011_RDESC_ORIG_SIZE) {
|
||||
rdesc = pid0011_rdesc_fixed;
|
||||
*rsize = sizeof(pid0011_rdesc_fixed);
|
||||
return pid0011_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ static void mouse_button_fixup(struct hid_device *hdev,
|
||||
rdesc[padding_bit + 1] = MOUSE_BUTTONS_MAX - nbuttons;
|
||||
}
|
||||
|
||||
static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
switch (hdev->product) {
|
||||
|
@ -57,7 +57,7 @@ static const __u8 gembird_jpd_fixed_rdesc[] = {
|
||||
0x81, 0x02, /* Input (Data,Var,Abs) */
|
||||
};
|
||||
|
||||
static __u8 *gembird_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *gembird_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
__u8 *new_rdesc;
|
||||
|
@ -26,7 +26,7 @@ MODULE_DESCRIPTION("HID driver for Glorious PC Gaming Race mice");
|
||||
* keyboard HID report, causing keycodes to be misinterpreted.
|
||||
* Fix this by setting Usage Minimum to 0 in that report.
|
||||
*/
|
||||
static __u8 *glorious_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *glorious_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize == 213 &&
|
||||
|
@ -27,7 +27,7 @@
|
||||
* to the boot interface.
|
||||
*/
|
||||
|
||||
static __u8 holtek_kbd_rdesc_fixed[] = {
|
||||
static const __u8 holtek_kbd_rdesc_fixed[] = {
|
||||
/* Original report descriptor, with reduced number of consumer usages */
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x80, /* Usage (Sys Control), */
|
||||
@ -102,14 +102,14 @@ static __u8 holtek_kbd_rdesc_fixed[] = {
|
||||
0xC0, /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 *holtek_kbd_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *holtek_kbd_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
|
||||
|
||||
if (intf->cur_altsetting->desc.bInterfaceNumber == 1) {
|
||||
rdesc = holtek_kbd_rdesc_fixed;
|
||||
*rsize = sizeof(holtek_kbd_rdesc_fixed);
|
||||
return holtek_kbd_rdesc_fixed;
|
||||
}
|
||||
return rdesc;
|
||||
}
|
||||
|
@ -29,8 +29,8 @@
|
||||
* - USB ID 04d9:a0c2, sold as ETEKCITY Scroll T-140 Gaming Mouse
|
||||
*/
|
||||
|
||||
static __u8 *holtek_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *holtek_mouse_report_fixup(struct hid_device *hdev,
|
||||
__u8 *rdesc, unsigned int *rsize)
|
||||
{
|
||||
struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#define QUIRK_TOUCHPAD_ON_OFF_REPORT BIT(0)
|
||||
|
||||
static __u8 *ite_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize)
|
||||
static const __u8 *ite_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize)
|
||||
{
|
||||
unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
/* Replace the broken report descriptor of this device with rather
|
||||
* a default one */
|
||||
static __u8 keytouch_fixed_rdesc[] = {
|
||||
static const __u8 keytouch_fixed_rdesc[] = {
|
||||
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15,
|
||||
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x95, 0x01, 0x75, 0x08,
|
||||
0x81, 0x01, 0x95, 0x03, 0x75, 0x01, 0x05, 0x08, 0x19, 0x01, 0x29, 0x03, 0x91,
|
||||
@ -24,15 +24,13 @@ static __u8 keytouch_fixed_rdesc[] = {
|
||||
0x26, 0xff, 0x00, 0x05, 0x07, 0x19, 0x00, 0x2a, 0xff, 0x00, 0x81, 0x00, 0xc0
|
||||
};
|
||||
|
||||
static __u8 *keytouch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *keytouch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
hid_info(hdev, "fixing up Keytouch IEC report descriptor\n");
|
||||
|
||||
rdesc = keytouch_fixed_rdesc;
|
||||
*rsize = sizeof(keytouch_fixed_rdesc);
|
||||
|
||||
return rdesc;
|
||||
return keytouch_fixed_rdesc;
|
||||
}
|
||||
|
||||
static const struct hid_device_id keytouch_devices[] = {
|
||||
|
@ -466,7 +466,7 @@ static __u8 *kye_tablet_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int
|
||||
return rdesc;
|
||||
}
|
||||
|
||||
static __u8 *kye_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *kye_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
switch (hdev->product) {
|
||||
|
@ -133,7 +133,7 @@ static const __u8 lenovo_tpIIbtkbd_need_fixup_collection[] = {
|
||||
0x81, 0x01, /* Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) */
|
||||
};
|
||||
|
||||
static __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
switch (hdev->product) {
|
||||
|
@ -58,7 +58,7 @@
|
||||
* These descriptors remove the combined Y axis and instead report
|
||||
* separate throttle (Y) and brake (RZ).
|
||||
*/
|
||||
static __u8 df_rdesc_fixed[] = {
|
||||
static const __u8 df_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystick), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -124,7 +124,7 @@ static __u8 df_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 dfp_rdesc_fixed[] = {
|
||||
static const __u8 dfp_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystick), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -172,7 +172,7 @@ static __u8 dfp_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 fv_rdesc_fixed[] = {
|
||||
static const __u8 fv_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystick), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -239,7 +239,7 @@ static __u8 fv_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 momo_rdesc_fixed[] = {
|
||||
static const __u8 momo_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystick), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -285,7 +285,7 @@ static __u8 momo_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 momo2_rdesc_fixed[] = {
|
||||
static const __u8 momo2_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystick), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -333,7 +333,7 @@ static __u8 momo2_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 ffg_rdesc_fixed[] = {
|
||||
static const __u8 ffg_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystik), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -379,7 +379,7 @@ static __u8 ffg_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 fg_rdesc_fixed[] = {
|
||||
static const __u8 fg_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystik), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -427,7 +427,7 @@ static __u8 fg_rdesc_fixed[] = {
|
||||
* above the logical maximum described in descriptor. This extends
|
||||
* the original value of 0x28c of logical maximum to 0x104d
|
||||
*/
|
||||
static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct lg_drv_data *drv_data = hid_get_drvdata(hdev);
|
||||
@ -453,8 +453,8 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
if (*rsize == FG_RDESC_ORIG_SIZE) {
|
||||
hid_info(hdev,
|
||||
"fixing up Logitech Wingman Formula GP report descriptor\n");
|
||||
rdesc = fg_rdesc_fixed;
|
||||
*rsize = sizeof(fg_rdesc_fixed);
|
||||
return fg_rdesc_fixed;
|
||||
} else {
|
||||
hid_info(hdev,
|
||||
"rdesc size test failed for formula gp\n");
|
||||
@ -466,8 +466,8 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
if (*rsize == FFG_RDESC_ORIG_SIZE) {
|
||||
hid_info(hdev,
|
||||
"fixing up Logitech Wingman Formula Force GP report descriptor\n");
|
||||
rdesc = ffg_rdesc_fixed;
|
||||
*rsize = sizeof(ffg_rdesc_fixed);
|
||||
return ffg_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -476,8 +476,8 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
if (*rsize == DF_RDESC_ORIG_SIZE) {
|
||||
hid_info(hdev,
|
||||
"fixing up Logitech Driving Force report descriptor\n");
|
||||
rdesc = df_rdesc_fixed;
|
||||
*rsize = sizeof(df_rdesc_fixed);
|
||||
return df_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -485,8 +485,8 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
if (*rsize == MOMO_RDESC_ORIG_SIZE) {
|
||||
hid_info(hdev,
|
||||
"fixing up Logitech Momo Force (Red) report descriptor\n");
|
||||
rdesc = momo_rdesc_fixed;
|
||||
*rsize = sizeof(momo_rdesc_fixed);
|
||||
return momo_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -494,8 +494,8 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
if (*rsize == MOMO2_RDESC_ORIG_SIZE) {
|
||||
hid_info(hdev,
|
||||
"fixing up Logitech Momo Racing Force (Black) report descriptor\n");
|
||||
rdesc = momo2_rdesc_fixed;
|
||||
*rsize = sizeof(momo2_rdesc_fixed);
|
||||
return momo2_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -503,8 +503,8 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
if (*rsize == FV_RDESC_ORIG_SIZE) {
|
||||
hid_info(hdev,
|
||||
"fixing up Logitech Formula Vibration report descriptor\n");
|
||||
rdesc = fv_rdesc_fixed;
|
||||
*rsize = sizeof(fv_rdesc_fixed);
|
||||
return fv_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -512,8 +512,8 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
if (*rsize == DFP_RDESC_ORIG_SIZE) {
|
||||
hid_info(hdev,
|
||||
"fixing up Logitech Driving Force Pro report descriptor\n");
|
||||
rdesc = dfp_rdesc_fixed;
|
||||
*rsize = sizeof(dfp_rdesc_fixed);
|
||||
return dfp_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -3767,8 +3767,8 @@ static int hidpp_initialize_hires_scroll(struct hidpp_device *hidpp)
|
||||
/* Generic HID++ devices */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
static u8 *hidpp_report_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const u8 *hidpp_report_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct hidpp_device *hidpp = hid_get_drvdata(hdev);
|
||||
|
||||
|
@ -18,8 +18,8 @@ MODULE_LICENSE("GPL");
|
||||
* The Macally ikey keyboard says that its logical and usage maximums are both
|
||||
* 101, but the power key is 102 and the equals key is 103
|
||||
*/
|
||||
static __u8 *macally_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *macally_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) {
|
||||
hid_info(hdev,
|
||||
|
@ -907,8 +907,8 @@ static void magicmouse_remove(struct hid_device *hdev)
|
||||
hid_hw_stop(hdev);
|
||||
}
|
||||
|
||||
static __u8 *magicmouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *magicmouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
/*
|
||||
* Change the usage from:
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include "hid-ids.h"
|
||||
|
||||
/* The original buggy USB descriptor */
|
||||
static u8 maltron_rdesc_o[] = {
|
||||
static const u8 maltron_rdesc_o[] = {
|
||||
0x05, 0x01, /* Usage Page (Generic Desktop Ctrls) */
|
||||
0x09, 0x80, /* Usage (Sys Control) */
|
||||
0xA1, 0x01, /* Collection (Application) */
|
||||
@ -79,7 +79,7 @@ static u8 maltron_rdesc_o[] = {
|
||||
};
|
||||
|
||||
/* The patched descriptor, allowing media key events to be accepted as valid */
|
||||
static u8 maltron_rdesc[] = {
|
||||
static const u8 maltron_rdesc[] = {
|
||||
0x05, 0x01, /* Usage Page (Generic Desktop Ctrls) */
|
||||
0x09, 0x80, /* Usage (Sys Control) */
|
||||
0xA1, 0x01, /* Collection (Application) */
|
||||
@ -137,8 +137,8 @@ static u8 maltron_rdesc[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 *maltron_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *maltron_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize == sizeof(maltron_rdesc_o) &&
|
||||
!memcmp(maltron_rdesc_o, rdesc, sizeof(maltron_rdesc_o))) {
|
||||
|
@ -56,7 +56,7 @@ struct xb1s_ff_report {
|
||||
__u8 loop_count;
|
||||
} __packed;
|
||||
|
||||
static __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct ms_data *ms = hid_get_drvdata(hdev);
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#include "hid-ids.h"
|
||||
|
||||
static __u8 *mr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *mr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 31 && rdesc[29] == 0x05 && rdesc[30] == 0x09) {
|
||||
|
@ -1447,7 +1447,7 @@ static int mt_event(struct hid_device *hid, struct hid_field *field,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *size)
|
||||
{
|
||||
if (hdev->vendor == I2C_VENDOR_ID_GOODIX &&
|
||||
|
@ -29,7 +29,7 @@ MODULE_DESCRIPTION("HID driver for Network Technologies USB-SUN keyboard adapter
|
||||
/*
|
||||
* NTI Sun keyboard adapter has wrong logical maximum in report descriptor
|
||||
*/
|
||||
static __u8 *nti_usbsun_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *nti_usbsun_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) {
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
#include "hid-ids.h"
|
||||
|
||||
static __u8 *ortek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *ortek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 56 && rdesc[54] == 0x25 && rdesc[55] == 0x01) {
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "hid-ids.h"
|
||||
|
||||
/* Petalynx Maxter Remote has maximum for consumer page set too low */
|
||||
static __u8 *pl_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *pl_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 62 && rdesc[39] == 0x2a && rdesc[40] == 0xf5 &&
|
||||
|
@ -728,7 +728,7 @@ static int pcmidi_snd_terminate(struct pcmidi_snd *pm)
|
||||
/*
|
||||
* PC-MIDI report descriptor for report id is wrong.
|
||||
*/
|
||||
static __u8 *pk_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *pk_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize == 178 &&
|
||||
|
@ -17,7 +17,7 @@ struct pxrc_priv {
|
||||
bool alternate;
|
||||
};
|
||||
|
||||
static __u8 pxrc_rdesc_fixed[] = {
|
||||
static const __u8 pxrc_rdesc_fixed[] = {
|
||||
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
|
||||
0x09, 0x04, // Usage (Joystick)
|
||||
0xA1, 0x01, // Collection (Application)
|
||||
@ -42,8 +42,8 @@ static __u8 pxrc_rdesc_fixed[] = {
|
||||
0xC0, // End Collection
|
||||
};
|
||||
|
||||
static __u8 *pxrc_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *pxrc_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
hid_info(hdev, "fixing up PXRC report descriptor\n");
|
||||
*rsize = sizeof(pxrc_rdesc_fixed);
|
||||
|
@ -33,7 +33,7 @@
|
||||
* key codes are generated.
|
||||
*/
|
||||
|
||||
static __u8 *redragon_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *redragon_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 102 && rdesc[100] == 0x81 && rdesc[101] == 0x00) {
|
||||
|
@ -66,7 +66,7 @@ static int saitek_probe(struct hid_device *hdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __u8 *saitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *saitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct saitek_sc *ssc = hid_get_drvdata(hdev);
|
||||
|
@ -469,7 +469,7 @@ static int samsung_universal_kbd_input_mapping(struct hid_device *hdev,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (hdev->product == USB_DEVICE_ID_SAMSUNG_IR_REMOTE && hid_is_usb(hdev))
|
||||
|
@ -11,8 +11,8 @@
|
||||
|
||||
#include "hid-ids.h"
|
||||
|
||||
static __u8 *semitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *semitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
/* In the report descriptor for interface 2, fix the incorrect
|
||||
description of report ID 0x04 (the report contains a
|
||||
|
@ -580,7 +580,7 @@ void sensor_hub_device_close(struct hid_sensor_hub_device *hsdev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sensor_hub_device_close);
|
||||
|
||||
static __u8 *sensor_hub_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *sensor_hub_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
/*
|
||||
|
@ -99,8 +99,8 @@ static const __u8 sm_0059_rdesc[] = {
|
||||
0xc0, /* End Collection 166 */
|
||||
};
|
||||
|
||||
static __u8 *sm_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *sm_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize == sizeof(sm_0059_rdesc) &&
|
||||
!memcmp(sm_0059_rdesc, rdesc, *rsize)) {
|
||||
|
@ -99,7 +99,7 @@ static const char ghl_ps4_magic_data[] = {
|
||||
};
|
||||
|
||||
/* PS/3 Motion controller */
|
||||
static u8 motion_rdesc[] = {
|
||||
static const u8 motion_rdesc[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x04, /* Usage (Joystick), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -195,7 +195,7 @@ static u8 motion_rdesc[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static u8 ps3remote_rdesc[] = {
|
||||
static const u8 ps3remote_rdesc[] = {
|
||||
0x05, 0x01, /* GUsagePage Generic Desktop */
|
||||
0x09, 0x05, /* LUsage 0x05 [Game Pad] */
|
||||
0xA1, 0x01, /* MCollection Application (mouse, keyboard) */
|
||||
@ -599,15 +599,15 @@ static int guitar_mapping(struct hid_device *hdev, struct hid_input *hi,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u8 *motion_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const u8 *motion_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
*rsize = sizeof(motion_rdesc);
|
||||
return motion_rdesc;
|
||||
}
|
||||
|
||||
static u8 *ps3remote_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const u8 *ps3remote_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
*rsize = sizeof(ps3remote_rdesc);
|
||||
return ps3remote_rdesc;
|
||||
@ -743,7 +743,7 @@ static int sixaxis_mapping(struct hid_device *hdev, struct hid_input *hi,
|
||||
return -1;
|
||||
}
|
||||
|
||||
static u8 *sony_report_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
static const u8 *sony_report_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct sony_sc *sc = hid_get_drvdata(hdev);
|
||||
|
@ -51,7 +51,7 @@ struct steelseries_srws1_data {
|
||||
* appear in the 'Generic Desktop' usage.
|
||||
*/
|
||||
|
||||
static __u8 steelseries_srws1_rdesc_fixed[] = {
|
||||
static const __u8 steelseries_srws1_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop) */
|
||||
0x09, 0x08, /* Usage (MultiAxis), Changed */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -570,8 +570,8 @@ static void steelseries_remove(struct hid_device *hdev)
|
||||
hid_hw_stop(hdev);
|
||||
}
|
||||
|
||||
static __u8 *steelseries_srws1_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *steelseries_srws1_report_fixup(struct hid_device *hdev,
|
||||
__u8 *rdesc, unsigned int *rsize)
|
||||
{
|
||||
if (hdev->vendor != USB_VENDOR_ID_STEELSERIES ||
|
||||
hdev->product != USB_DEVICE_ID_STEELSERIES_SRWS1)
|
||||
@ -580,8 +580,8 @@ static __u8 *steelseries_srws1_report_fixup(struct hid_device *hdev, __u8 *rdesc
|
||||
if (*rsize >= 115 && rdesc[11] == 0x02 && rdesc[13] == 0xc8
|
||||
&& rdesc[29] == 0xbb && rdesc[40] == 0xc5) {
|
||||
hid_info(hdev, "Fixing up Steelseries SRW-S1 report descriptor\n");
|
||||
rdesc = steelseries_srws1_rdesc_fixed;
|
||||
*rsize = sizeof(steelseries_srws1_rdesc_fixed);
|
||||
return steelseries_srws1_rdesc_fixed;
|
||||
}
|
||||
return rdesc;
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#include "hid-ids.h"
|
||||
|
||||
static __u8 *sp_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *sp_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 112 && rdesc[104] == 0x26 && rdesc[105] == 0x80 &&
|
||||
|
@ -21,8 +21,8 @@ MODULE_LICENSE("GPL");
|
||||
* events it's actually sending. It claims to send array events but is instead
|
||||
* sending variable events.
|
||||
*/
|
||||
static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
|
||||
rdesc[71] == 0x81 && rdesc[72] == 0x00) {
|
||||
|
@ -50,14 +50,14 @@ static void uclogic_inrange_timeout(struct timer_list *t)
|
||||
input_sync(input);
|
||||
}
|
||||
|
||||
static __u8 *uclogic_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *uclogic_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
struct uclogic_drvdata *drvdata = hid_get_drvdata(hdev);
|
||||
|
||||
if (drvdata->desc_ptr != NULL) {
|
||||
rdesc = drvdata->desc_ptr;
|
||||
*rsize = drvdata->desc_size;
|
||||
return drvdata->desc_ptr;
|
||||
}
|
||||
return rdesc;
|
||||
}
|
||||
|
@ -681,7 +681,7 @@ void uclogic_params_cleanup(struct uclogic_params *params)
|
||||
* -ENOMEM, if failed to allocate memory.
|
||||
*/
|
||||
int uclogic_params_get_desc(const struct uclogic_params *params,
|
||||
__u8 **pdesc,
|
||||
const __u8 **pdesc,
|
||||
unsigned int *psize)
|
||||
{
|
||||
int rc = -ENOMEM;
|
||||
@ -769,7 +769,7 @@ static void uclogic_params_init_invalid(struct uclogic_params *params)
|
||||
static int uclogic_params_init_with_opt_desc(struct uclogic_params *params,
|
||||
struct hid_device *hdev,
|
||||
unsigned int orig_desc_size,
|
||||
__u8 *desc_ptr,
|
||||
const __u8 *desc_ptr,
|
||||
unsigned int desc_size)
|
||||
{
|
||||
__u8 *desc_copy_ptr = NULL;
|
||||
|
@ -79,7 +79,7 @@ struct uclogic_params_pen {
|
||||
* Pointer to report descriptor part describing the pen inputs.
|
||||
* Allocated with kmalloc. NULL if the part is not specified.
|
||||
*/
|
||||
__u8 *desc_ptr;
|
||||
const __u8 *desc_ptr;
|
||||
/*
|
||||
* Size of the report descriptor.
|
||||
* Only valid, if "desc_ptr" is not NULL.
|
||||
@ -118,7 +118,7 @@ struct uclogic_params_frame {
|
||||
* Pointer to report descriptor part describing the frame inputs.
|
||||
* Allocated with kmalloc. NULL if the part is not specified.
|
||||
*/
|
||||
__u8 *desc_ptr;
|
||||
const __u8 *desc_ptr;
|
||||
/*
|
||||
* Size of the report descriptor.
|
||||
* Only valid, if "desc_ptr" is not NULL.
|
||||
@ -212,7 +212,7 @@ struct uclogic_params {
|
||||
* allocated with kmalloc. NULL if no common part is needed.
|
||||
* Only valid, if "invalid" is false.
|
||||
*/
|
||||
__u8 *desc_ptr;
|
||||
const __u8 *desc_ptr;
|
||||
/*
|
||||
* Size of the common part of the replacement report descriptor.
|
||||
* Only valid, if "desc_ptr" is valid and not NULL.
|
||||
@ -239,7 +239,7 @@ struct uclogic_drvdata {
|
||||
/* Interface parameters */
|
||||
struct uclogic_params params;
|
||||
/* Pointer to the replacement report descriptor. NULL if none. */
|
||||
__u8 *desc_ptr;
|
||||
const __u8 *desc_ptr;
|
||||
/*
|
||||
* Size of the replacement report descriptor.
|
||||
* Only valid if desc_ptr is not NULL
|
||||
@ -261,7 +261,7 @@ extern int uclogic_params_init(struct uclogic_params *params,
|
||||
|
||||
/* Get a replacement report descriptor for a tablet's interface. */
|
||||
extern int uclogic_params_get_desc(const struct uclogic_params *params,
|
||||
__u8 **pdesc,
|
||||
const __u8 **pdesc,
|
||||
unsigned int *psize);
|
||||
|
||||
/* Free resources used by tablet interface's parameters */
|
||||
|
@ -20,7 +20,7 @@
|
||||
#include <kunit/visibility.h>
|
||||
|
||||
/* Fixed WP4030U report descriptor */
|
||||
__u8 uclogic_rdesc_wp4030u_fixed_arr[] = {
|
||||
const __u8 uclogic_rdesc_wp4030u_fixed_arr[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x01, /* Usage (Digitizer), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -65,7 +65,7 @@ const size_t uclogic_rdesc_wp4030u_fixed_size =
|
||||
sizeof(uclogic_rdesc_wp4030u_fixed_arr);
|
||||
|
||||
/* Fixed WP5540U report descriptor */
|
||||
__u8 uclogic_rdesc_wp5540u_fixed_arr[] = {
|
||||
const __u8 uclogic_rdesc_wp5540u_fixed_arr[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x01, /* Usage (Digitizer), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -142,7 +142,7 @@ const size_t uclogic_rdesc_wp5540u_fixed_size =
|
||||
sizeof(uclogic_rdesc_wp5540u_fixed_arr);
|
||||
|
||||
/* Fixed WP8060U report descriptor */
|
||||
__u8 uclogic_rdesc_wp8060u_fixed_arr[] = {
|
||||
const __u8 uclogic_rdesc_wp8060u_fixed_arr[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x01, /* Usage (Digitizer), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -219,7 +219,7 @@ const size_t uclogic_rdesc_wp8060u_fixed_size =
|
||||
sizeof(uclogic_rdesc_wp8060u_fixed_arr);
|
||||
|
||||
/* Fixed WP1062 report descriptor */
|
||||
__u8 uclogic_rdesc_wp1062_fixed_arr[] = {
|
||||
const __u8 uclogic_rdesc_wp1062_fixed_arr[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x01, /* Usage (Digitizer), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -267,7 +267,7 @@ const size_t uclogic_rdesc_wp1062_fixed_size =
|
||||
sizeof(uclogic_rdesc_wp1062_fixed_arr);
|
||||
|
||||
/* Fixed PF1209 report descriptor */
|
||||
__u8 uclogic_rdesc_pf1209_fixed_arr[] = {
|
||||
const __u8 uclogic_rdesc_pf1209_fixed_arr[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x01, /* Usage (Digitizer), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -344,7 +344,7 @@ const size_t uclogic_rdesc_pf1209_fixed_size =
|
||||
sizeof(uclogic_rdesc_pf1209_fixed_arr);
|
||||
|
||||
/* Fixed PID 0522 tablet report descriptor, interface 0 (stylus) */
|
||||
__u8 uclogic_rdesc_twhl850_fixed0_arr[] = {
|
||||
const __u8 uclogic_rdesc_twhl850_fixed0_arr[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x01, /* Usage (Digitizer), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -390,7 +390,7 @@ const size_t uclogic_rdesc_twhl850_fixed0_size =
|
||||
sizeof(uclogic_rdesc_twhl850_fixed0_arr);
|
||||
|
||||
/* Fixed PID 0522 tablet report descriptor, interface 1 (mouse) */
|
||||
__u8 uclogic_rdesc_twhl850_fixed1_arr[] = {
|
||||
const __u8 uclogic_rdesc_twhl850_fixed1_arr[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x02, /* Usage (Mouse), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -430,7 +430,7 @@ const size_t uclogic_rdesc_twhl850_fixed1_size =
|
||||
sizeof(uclogic_rdesc_twhl850_fixed1_arr);
|
||||
|
||||
/* Fixed PID 0522 tablet report descriptor, interface 2 (frame buttons) */
|
||||
__u8 uclogic_rdesc_twhl850_fixed2_arr[] = {
|
||||
const __u8 uclogic_rdesc_twhl850_fixed2_arr[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x06, /* Usage (Keyboard), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -456,7 +456,7 @@ const size_t uclogic_rdesc_twhl850_fixed2_size =
|
||||
sizeof(uclogic_rdesc_twhl850_fixed2_arr);
|
||||
|
||||
/* Fixed TWHA60 report descriptor, interface 0 (stylus) */
|
||||
__u8 uclogic_rdesc_twha60_fixed0_arr[] = {
|
||||
const __u8 uclogic_rdesc_twha60_fixed0_arr[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x01, /* Usage (Digitizer), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -505,7 +505,7 @@ const size_t uclogic_rdesc_twha60_fixed0_size =
|
||||
sizeof(uclogic_rdesc_twha60_fixed0_arr);
|
||||
|
||||
/* Fixed TWHA60 report descriptor, interface 1 (frame buttons) */
|
||||
__u8 uclogic_rdesc_twha60_fixed1_arr[] = {
|
||||
const __u8 uclogic_rdesc_twha60_fixed1_arr[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x06, /* Usage (Keyboard), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
|
@ -23,15 +23,15 @@
|
||||
#define UCLOGIC_RDESC_WPXXXXU_ORIG_SIZE 212
|
||||
|
||||
/* Fixed WP4030U report descriptor */
|
||||
extern __u8 uclogic_rdesc_wp4030u_fixed_arr[];
|
||||
extern const __u8 uclogic_rdesc_wp4030u_fixed_arr[];
|
||||
extern const size_t uclogic_rdesc_wp4030u_fixed_size;
|
||||
|
||||
/* Fixed WP5540U report descriptor */
|
||||
extern __u8 uclogic_rdesc_wp5540u_fixed_arr[];
|
||||
extern const __u8 uclogic_rdesc_wp5540u_fixed_arr[];
|
||||
extern const size_t uclogic_rdesc_wp5540u_fixed_size;
|
||||
|
||||
/* Fixed WP8060U report descriptor */
|
||||
extern __u8 uclogic_rdesc_wp8060u_fixed_arr[];
|
||||
extern const __u8 uclogic_rdesc_wp8060u_fixed_arr[];
|
||||
extern const size_t uclogic_rdesc_wp8060u_fixed_size;
|
||||
|
||||
/* Size of the original descriptor of the new WP5540U tablet */
|
||||
@ -41,14 +41,14 @@ extern const size_t uclogic_rdesc_wp8060u_fixed_size;
|
||||
#define UCLOGIC_RDESC_WP1062_ORIG_SIZE 254
|
||||
|
||||
/* Fixed WP1062 report descriptor */
|
||||
extern __u8 uclogic_rdesc_wp1062_fixed_arr[];
|
||||
extern const __u8 uclogic_rdesc_wp1062_fixed_arr[];
|
||||
extern const size_t uclogic_rdesc_wp1062_fixed_size;
|
||||
|
||||
/* Size of the original descriptor of PF1209 tablet */
|
||||
#define UCLOGIC_RDESC_PF1209_ORIG_SIZE 234
|
||||
|
||||
/* Fixed PF1209 report descriptor */
|
||||
extern __u8 uclogic_rdesc_pf1209_fixed_arr[];
|
||||
extern const __u8 uclogic_rdesc_pf1209_fixed_arr[];
|
||||
extern const size_t uclogic_rdesc_pf1209_fixed_size;
|
||||
|
||||
/* Size of the original descriptors of TWHL850 tablet */
|
||||
@ -57,15 +57,15 @@ extern const size_t uclogic_rdesc_pf1209_fixed_size;
|
||||
#define UCLOGIC_RDESC_TWHL850_ORIG2_SIZE 92
|
||||
|
||||
/* Fixed PID 0522 tablet report descriptor, interface 0 (stylus) */
|
||||
extern __u8 uclogic_rdesc_twhl850_fixed0_arr[];
|
||||
extern const __u8 uclogic_rdesc_twhl850_fixed0_arr[];
|
||||
extern const size_t uclogic_rdesc_twhl850_fixed0_size;
|
||||
|
||||
/* Fixed PID 0522 tablet report descriptor, interface 1 (mouse) */
|
||||
extern __u8 uclogic_rdesc_twhl850_fixed1_arr[];
|
||||
extern const __u8 uclogic_rdesc_twhl850_fixed1_arr[];
|
||||
extern const size_t uclogic_rdesc_twhl850_fixed1_size;
|
||||
|
||||
/* Fixed PID 0522 tablet report descriptor, interface 2 (frame buttons) */
|
||||
extern __u8 uclogic_rdesc_twhl850_fixed2_arr[];
|
||||
extern const __u8 uclogic_rdesc_twhl850_fixed2_arr[];
|
||||
extern const size_t uclogic_rdesc_twhl850_fixed2_size;
|
||||
|
||||
/* Size of the original descriptors of TWHA60 tablet */
|
||||
@ -73,11 +73,11 @@ extern const size_t uclogic_rdesc_twhl850_fixed2_size;
|
||||
#define UCLOGIC_RDESC_TWHA60_ORIG1_SIZE 139
|
||||
|
||||
/* Fixed TWHA60 report descriptor, interface 0 (stylus) */
|
||||
extern __u8 uclogic_rdesc_twha60_fixed0_arr[];
|
||||
extern const __u8 uclogic_rdesc_twha60_fixed0_arr[];
|
||||
extern const size_t uclogic_rdesc_twha60_fixed0_size;
|
||||
|
||||
/* Fixed TWHA60 report descriptor, interface 1 (frame buttons) */
|
||||
extern __u8 uclogic_rdesc_twha60_fixed1_arr[];
|
||||
extern const __u8 uclogic_rdesc_twha60_fixed1_arr[];
|
||||
extern const size_t uclogic_rdesc_twha60_fixed1_size;
|
||||
|
||||
/* Report descriptor template placeholder head */
|
||||
|
@ -22,7 +22,7 @@
|
||||
#define PD1011_RDESC_ORIG_SIZE 408
|
||||
|
||||
/* Fixed report descriptor of PD1011 signature pad */
|
||||
static __u8 pd1011_rdesc_fixed[] = {
|
||||
static const __u8 pd1011_rdesc_fixed[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x01, /* Usage (Digitizer), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -70,15 +70,15 @@ static __u8 pd1011_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 *viewsonic_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *viewsonic_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
switch (hdev->product) {
|
||||
case USB_DEVICE_ID_VIEWSONIC_PD1011:
|
||||
case USB_DEVICE_ID_SIGNOTEC_VIEWSONIC_PD1011:
|
||||
if (*rsize == PD1011_RDESC_ORIG_SIZE) {
|
||||
rdesc = pd1011_rdesc_fixed;
|
||||
*rsize = sizeof(pd1011_rdesc_fixed);
|
||||
return pd1011_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
#define USB_VENDOR_ID_VRC2 (0x07c0)
|
||||
#define USB_DEVICE_ID_VRC2 (0x1125)
|
||||
|
||||
static __u8 vrc2_rdesc_fixed[] = {
|
||||
static const __u8 vrc2_rdesc_fixed[] = {
|
||||
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
|
||||
0x09, 0x04, // Usage (Joystick)
|
||||
0xA1, 0x01, // Collection (Application)
|
||||
@ -38,8 +38,8 @@ static __u8 vrc2_rdesc_fixed[] = {
|
||||
0xC0, // End Collection
|
||||
};
|
||||
|
||||
static __u8 *vrc2_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *vrc2_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
hid_info(hdev, "fixing up VRC-2 report descriptor\n");
|
||||
*rsize = sizeof(vrc2_rdesc_fixed);
|
||||
|
@ -43,7 +43,7 @@
|
||||
#define SLIM_TABLET_5_8_INCH_RDESC_ORIG_SIZE 222
|
||||
|
||||
/* Fixed Slim Tablet 5.8 inch descriptor */
|
||||
static __u8 slim_tablet_5_8_inch_rdesc_fixed[] = {
|
||||
static const __u8 slim_tablet_5_8_inch_rdesc_fixed[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x02, /* Usage (Pen), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -94,7 +94,7 @@ static __u8 slim_tablet_5_8_inch_rdesc_fixed[] = {
|
||||
#define SLIM_TABLET_12_1_INCH_RDESC_ORIG_SIZE 269
|
||||
|
||||
/* Fixed Slim Tablet 12.1 inch descriptor */
|
||||
static __u8 slim_tablet_12_1_inch_rdesc_fixed[] = {
|
||||
static const __u8 slim_tablet_12_1_inch_rdesc_fixed[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x02, /* Usage (Pen), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -145,7 +145,7 @@ static __u8 slim_tablet_12_1_inch_rdesc_fixed[] = {
|
||||
#define Q_PAD_RDESC_ORIG_SIZE 241
|
||||
|
||||
/* Fixed Q Pad descriptor */
|
||||
static __u8 q_pad_rdesc_fixed[] = {
|
||||
static const __u8 q_pad_rdesc_fixed[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x02, /* Usage (Pen), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -198,7 +198,7 @@ static __u8 q_pad_rdesc_fixed[] = {
|
||||
/*
|
||||
* Fixed report descriptor for tablet with PID 0038.
|
||||
*/
|
||||
static __u8 pid_0038_rdesc_fixed[] = {
|
||||
static const __u8 pid_0038_rdesc_fixed[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x02, /* Usage (Pen), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -249,7 +249,7 @@ static __u8 pid_0038_rdesc_fixed[] = {
|
||||
#define MEDIA_TABLET_10_6_INCH_RDESC_ORIG_SIZE 300
|
||||
|
||||
/* Fixed Media Tablet 10.6 inch descriptor */
|
||||
static __u8 media_tablet_10_6_inch_rdesc_fixed[] = {
|
||||
static const __u8 media_tablet_10_6_inch_rdesc_fixed[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x02, /* Usage (Pen), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -362,7 +362,7 @@ static __u8 media_tablet_10_6_inch_rdesc_fixed[] = {
|
||||
#define MEDIA_TABLET_14_1_INCH_RDESC_ORIG_SIZE 309
|
||||
|
||||
/* Fixed Media Tablet 14.1 inch descriptor */
|
||||
static __u8 media_tablet_14_1_inch_rdesc_fixed[] = {
|
||||
static const __u8 media_tablet_14_1_inch_rdesc_fixed[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x02, /* Usage (Pen), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -473,7 +473,7 @@ static __u8 media_tablet_14_1_inch_rdesc_fixed[] = {
|
||||
#define SIRIUS_BATTERY_FREE_TABLET_RDESC_ORIG_SIZE 335
|
||||
|
||||
/* Fixed Sirius Battery Free Tablet descriptor */
|
||||
static __u8 sirius_battery_free_tablet_rdesc_fixed[] = {
|
||||
static const __u8 sirius_battery_free_tablet_rdesc_fixed[] = {
|
||||
0x05, 0x0D, /* Usage Page (Digitizer), */
|
||||
0x09, 0x02, /* Usage (Pen), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -599,50 +599,50 @@ static __u8 sirius_battery_free_tablet_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 *waltop_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *waltop_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
switch (hdev->product) {
|
||||
case USB_DEVICE_ID_WALTOP_SLIM_TABLET_5_8_INCH:
|
||||
if (*rsize == SLIM_TABLET_5_8_INCH_RDESC_ORIG_SIZE) {
|
||||
rdesc = slim_tablet_5_8_inch_rdesc_fixed;
|
||||
*rsize = sizeof(slim_tablet_5_8_inch_rdesc_fixed);
|
||||
return slim_tablet_5_8_inch_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
case USB_DEVICE_ID_WALTOP_SLIM_TABLET_12_1_INCH:
|
||||
if (*rsize == SLIM_TABLET_12_1_INCH_RDESC_ORIG_SIZE) {
|
||||
rdesc = slim_tablet_12_1_inch_rdesc_fixed;
|
||||
*rsize = sizeof(slim_tablet_12_1_inch_rdesc_fixed);
|
||||
return slim_tablet_12_1_inch_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
case USB_DEVICE_ID_WALTOP_Q_PAD:
|
||||
if (*rsize == Q_PAD_RDESC_ORIG_SIZE) {
|
||||
rdesc = q_pad_rdesc_fixed;
|
||||
*rsize = sizeof(q_pad_rdesc_fixed);
|
||||
return q_pad_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
case USB_DEVICE_ID_WALTOP_PID_0038:
|
||||
if (*rsize == PID_0038_RDESC_ORIG_SIZE) {
|
||||
rdesc = pid_0038_rdesc_fixed;
|
||||
*rsize = sizeof(pid_0038_rdesc_fixed);
|
||||
return pid_0038_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
case USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH:
|
||||
if (*rsize == MEDIA_TABLET_10_6_INCH_RDESC_ORIG_SIZE) {
|
||||
rdesc = media_tablet_10_6_inch_rdesc_fixed;
|
||||
*rsize = sizeof(media_tablet_10_6_inch_rdesc_fixed);
|
||||
return media_tablet_10_6_inch_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
case USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH:
|
||||
if (*rsize == MEDIA_TABLET_14_1_INCH_RDESC_ORIG_SIZE) {
|
||||
rdesc = media_tablet_14_1_inch_rdesc_fixed;
|
||||
*rsize = sizeof(media_tablet_14_1_inch_rdesc_fixed);
|
||||
return media_tablet_14_1_inch_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
case USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET:
|
||||
if (*rsize == SIRIUS_BATTERY_FREE_TABLET_RDESC_ORIG_SIZE) {
|
||||
rdesc = sirius_battery_free_tablet_rdesc_fixed;
|
||||
*rsize = sizeof(sirius_battery_free_tablet_rdesc_fixed);
|
||||
return sirius_battery_free_tablet_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ struct winwing_led_info {
|
||||
const char *led_name;
|
||||
};
|
||||
|
||||
static struct winwing_led_info led_info[3] = {
|
||||
static const struct winwing_led_info led_info[3] = {
|
||||
{ 0, 255, "backlight" },
|
||||
{ 1, 1, "a-a" },
|
||||
{ 2, 1, "a-g" },
|
||||
@ -94,7 +94,7 @@ static int winwing_init_led(struct hid_device *hdev,
|
||||
return -ENOMEM;
|
||||
|
||||
for (i = 0; i < 3; i += 1) {
|
||||
struct winwing_led_info *info = &led_info[i];
|
||||
const struct winwing_led_info *info = &led_info[i];
|
||||
|
||||
led = &data->leds[i];
|
||||
led->hdev = hdev;
|
||||
@ -150,7 +150,7 @@ static int winwing_input_configured(struct hid_device *hdev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static __u8 original_rdesc_buttons[] = {
|
||||
static const __u8 original_rdesc_buttons[] = {
|
||||
0x05, 0x09, 0x19, 0x01, 0x29, 0x6F,
|
||||
0x15, 0x00, 0x25, 0x01, 0x35, 0x00,
|
||||
0x45, 0x01, 0x75, 0x01, 0x95, 0x6F,
|
||||
@ -165,7 +165,7 @@ static __u8 original_rdesc_buttons[] = {
|
||||
* This module skips numbers 32-63, unused on some throttle grips.
|
||||
*/
|
||||
|
||||
static __u8 *winwing_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *winwing_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
int sig_length = sizeof(original_rdesc_buttons);
|
||||
|
@ -14,7 +14,7 @@
|
||||
/* Fixed Mi Silent Mouse report descriptor */
|
||||
/* Button's Usage Maximum changed from 3 to 5 to make side buttons work */
|
||||
#define MI_SILENT_MOUSE_ORIG_RDESC_LENGTH 87
|
||||
static __u8 mi_silent_mouse_rdesc_fixed[] = {
|
||||
static const __u8 mi_silent_mouse_rdesc_fixed[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x02, /* Usage (Mouse), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
@ -61,15 +61,15 @@ static __u8 mi_silent_mouse_rdesc_fixed[] = {
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
|
||||
static __u8 *xiaomi_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
static const __u8 *xiaomi_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
switch (hdev->product) {
|
||||
case USB_DEVICE_ID_MI_SILENT_MOUSE:
|
||||
if (*rsize == MI_SILENT_MOUSE_ORIG_RDESC_LENGTH) {
|
||||
hid_info(hdev, "fixing up Mi Silent Mouse report descriptor\n");
|
||||
rdesc = mi_silent_mouse_rdesc_fixed;
|
||||
*rsize = sizeof(mi_silent_mouse_rdesc_fixed);
|
||||
return mi_silent_mouse_rdesc_fixed;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ struct zc_device {
|
||||
* Zydacron remote control has an invalid HID report descriptor,
|
||||
* that needs fixing before we can parse it.
|
||||
*/
|
||||
static __u8 *zc_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
static const __u8 *zc_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
if (*rsize >= 253 &&
|
||||
|
@ -46,7 +46,7 @@ struct hid_item {
|
||||
__s16 s16;
|
||||
__u32 u32;
|
||||
__s32 s32;
|
||||
__u8 *longdata;
|
||||
const __u8 *longdata;
|
||||
} data;
|
||||
};
|
||||
|
||||
@ -600,9 +600,9 @@ struct hid_driver;
|
||||
struct hid_ll_driver;
|
||||
|
||||
struct hid_device { /* device report descriptor */
|
||||
__u8 *dev_rdesc;
|
||||
const __u8 *dev_rdesc;
|
||||
unsigned dev_rsize;
|
||||
__u8 *rdesc;
|
||||
const __u8 *rdesc;
|
||||
unsigned rsize;
|
||||
struct hid_collection *collection; /* List of HID collections */
|
||||
unsigned collection_size; /* Number of allocated hid_collections */
|
||||
@ -822,7 +822,7 @@ struct hid_driver {
|
||||
struct hid_usage *usage, __s32 value);
|
||||
void (*report)(struct hid_device *hdev, struct hid_report *report);
|
||||
|
||||
__u8 *(*report_fixup)(struct hid_device *hdev, __u8 *buf,
|
||||
const __u8 *(*report_fixup)(struct hid_device *hdev, __u8 *buf,
|
||||
unsigned int *size);
|
||||
|
||||
int (*input_mapping)(struct hid_device *hdev,
|
||||
@ -955,7 +955,7 @@ struct hid_device *hid_allocate_device(void);
|
||||
struct hid_report *hid_register_report(struct hid_device *device,
|
||||
enum hid_report_type type, unsigned int id,
|
||||
unsigned int application);
|
||||
int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size);
|
||||
int hid_parse_report(struct hid_device *hid, const __u8 *start, unsigned size);
|
||||
struct hid_report *hid_validate_values(struct hid_device *hid,
|
||||
enum hid_report_type type, unsigned int id,
|
||||
unsigned int field_index,
|
||||
|
@ -212,7 +212,7 @@ int hid_bpf_connect_device(struct hid_device *hdev);
|
||||
void hid_bpf_disconnect_device(struct hid_device *hdev);
|
||||
void hid_bpf_destroy_device(struct hid_device *hid);
|
||||
int hid_bpf_device_init(struct hid_device *hid);
|
||||
u8 *call_hid_bpf_rdesc_fixup(struct hid_device *hdev, u8 *rdesc, unsigned int *size);
|
||||
u8 *call_hid_bpf_rdesc_fixup(struct hid_device *hdev, const u8 *rdesc, unsigned int *size);
|
||||
#else /* CONFIG_HID_BPF */
|
||||
static inline u8 *dispatch_hid_bpf_device_event(struct hid_device *hid, enum hid_report_type type,
|
||||
u8 *data, u32 *size, int interrupt,
|
||||
|
Loading…
Reference in New Issue
Block a user