// SPDX-License-Identifier: GPL-2.0+ /* * Quirks for I2C-HID devices that do not supply proper descriptors * * Copyright (c) 2018 Julian Sax <[email protected]> * */ #include <linux/types.h> #include <linux/dmi.h> #include <linux/mod_devicetable.h> #include <linux/hid.h> #include "i2c-hid.h" #include "../hid-ids.h" struct i2c_hid_desc_override { … }; /* * descriptors for the SIPODEV SP1064 touchpad * * This device does not supply any descriptors and on windows a filter * driver operates between the i2c-hid layer and the device and injects * these descriptors when the device is prompted. The descriptors were * extracted by listening to the i2c-hid traffic that occurs between the * windows filter driver and the windows i2c-hid driver. */ static const struct i2c_hid_desc_override sipodev_desc = …; static const struct dmi_system_id i2c_hid_dmi_desc_override_table[] = …; static const struct hid_device_id i2c_hid_elan_flipped_quirks = …; /* * This list contains devices which have specific issues based on the system * they're on and not just the device itself. The driver_data will have a * specific hid device to match against. */ static const struct dmi_system_id i2c_hid_dmi_quirk_table[] = …; struct i2c_hid_desc *i2c_hid_get_dmi_i2c_hid_desc_override(uint8_t *i2c_name) { … } char *i2c_hid_get_dmi_hid_report_desc_override(uint8_t *i2c_name, unsigned int *size) { … } u32 i2c_hid_get_dmi_quirks(const u16 vendor, const u16 product) { … }