mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
Merge branch 'for-7.2/core' into for-linus
This commit is contained in:
commit
b0e0c86927
|
|
@ -463,6 +463,7 @@
|
|||
#define USB_DEVICE_ID_HP_X2 0x074d
|
||||
#define USB_DEVICE_ID_HP_X2_10_COVER 0x0755
|
||||
#define I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM 0x2F81
|
||||
#define I2C_DEVICE_ID_SURFACE_PRO_12IN 0x4376
|
||||
|
||||
#define USB_VENDOR_ID_ELECOM 0x056e
|
||||
#define USB_DEVICE_ID_ELECOM_BM084 0x0061
|
||||
|
|
|
|||
|
|
@ -395,6 +395,8 @@ static const struct hid_device_id hid_battery_quirks[] = {
|
|||
HID_BATTERY_QUIRK_AVOID_QUERY },
|
||||
{ HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM),
|
||||
HID_BATTERY_QUIRK_AVOID_QUERY },
|
||||
{ HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_SURFACE_PRO_12IN),
|
||||
HID_BATTERY_QUIRK_IGNORE },
|
||||
/*
|
||||
* Elan HID touchscreens seem to all report a non present battery,
|
||||
* set HID_BATTERY_QUIRK_IGNORE for all Elan I2C and USB HID devices.
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include <linux/wait.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/seq_buf.h>
|
||||
|
||||
#include <linux/usb.h>
|
||||
|
||||
|
|
@ -1367,6 +1368,7 @@ static int usbhid_probe(struct usb_interface *intf, const struct usb_device_id *
|
|||
struct usb_endpoint_descriptor *ep;
|
||||
struct usbhid_device *usbhid;
|
||||
struct hid_device *hid;
|
||||
struct seq_buf hid_name;
|
||||
size_t len;
|
||||
int ret;
|
||||
|
||||
|
|
@ -1398,7 +1400,7 @@ static int usbhid_probe(struct usb_interface *intf, const struct usb_device_id *
|
|||
hid->vendor = le16_to_cpu(dev->descriptor.idVendor);
|
||||
hid->product = le16_to_cpu(dev->descriptor.idProduct);
|
||||
hid->version = le16_to_cpu(dev->descriptor.bcdDevice);
|
||||
hid->name[0] = 0;
|
||||
seq_buf_init(&hid_name, hid->name, sizeof(hid->name));
|
||||
if (intf->cur_altsetting->desc.bInterfaceProtocol ==
|
||||
USB_INTERFACE_PROTOCOL_MOUSE)
|
||||
hid->type = HID_TYPE_USBMOUSE;
|
||||
|
|
@ -1406,22 +1408,23 @@ static int usbhid_probe(struct usb_interface *intf, const struct usb_device_id *
|
|||
hid->type = HID_TYPE_USBNONE;
|
||||
|
||||
if (dev->manufacturer)
|
||||
strscpy(hid->name, dev->manufacturer, sizeof(hid->name));
|
||||
seq_buf_puts(&hid_name, dev->manufacturer);
|
||||
|
||||
if (dev->product) {
|
||||
if (dev->manufacturer)
|
||||
strlcat(hid->name, " ", sizeof(hid->name));
|
||||
strlcat(hid->name, dev->product, sizeof(hid->name));
|
||||
seq_buf_puts(&hid_name, " ");
|
||||
seq_buf_puts(&hid_name, dev->product);
|
||||
}
|
||||
|
||||
if (!strlen(hid->name))
|
||||
if (!seq_buf_used(&hid_name))
|
||||
snprintf(hid->name, sizeof(hid->name), "HID %04x:%04x",
|
||||
le16_to_cpu(dev->descriptor.idVendor),
|
||||
le16_to_cpu(dev->descriptor.idProduct));
|
||||
|
||||
usb_make_path(dev, hid->phys, sizeof(hid->phys));
|
||||
strlcat(hid->phys, "/input", sizeof(hid->phys));
|
||||
len = strlen(hid->phys);
|
||||
len = strnlen(hid->phys, sizeof(hid->phys));
|
||||
strscpy(hid->phys + len, "/input", sizeof(hid->phys) - len);
|
||||
len = strnlen(hid->phys, sizeof(hid->phys));
|
||||
if (len < sizeof(hid->phys) - 1)
|
||||
snprintf(hid->phys + len, sizeof(hid->phys) - len,
|
||||
"%d", intf->altsetting[0].desc.bInterfaceNumber);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/usb/input.h>
|
||||
#include <linux/hid.h>
|
||||
#include <linux/seq_buf.h>
|
||||
|
||||
/*
|
||||
* Version Information
|
||||
|
|
@ -266,8 +267,10 @@ static int usb_kbd_probe(struct usb_interface *iface,
|
|||
struct usb_endpoint_descriptor *endpoint;
|
||||
struct usb_kbd *kbd;
|
||||
struct input_dev *input_dev;
|
||||
struct seq_buf kbd_name;
|
||||
int i, pipe, maxp;
|
||||
int error = -ENOMEM;
|
||||
size_t len;
|
||||
|
||||
interface = iface->cur_altsetting;
|
||||
|
||||
|
|
@ -292,24 +295,26 @@ static int usb_kbd_probe(struct usb_interface *iface,
|
|||
kbd->usbdev = dev;
|
||||
kbd->dev = input_dev;
|
||||
spin_lock_init(&kbd->leds_lock);
|
||||
seq_buf_init(&kbd_name, kbd->name, sizeof(kbd->name));
|
||||
|
||||
if (dev->manufacturer)
|
||||
strscpy(kbd->name, dev->manufacturer, sizeof(kbd->name));
|
||||
seq_buf_puts(&kbd_name, dev->manufacturer);
|
||||
|
||||
if (dev->product) {
|
||||
if (dev->manufacturer)
|
||||
strlcat(kbd->name, " ", sizeof(kbd->name));
|
||||
strlcat(kbd->name, dev->product, sizeof(kbd->name));
|
||||
seq_buf_puts(&kbd_name, " ");
|
||||
seq_buf_puts(&kbd_name, dev->product);
|
||||
}
|
||||
|
||||
if (!strlen(kbd->name))
|
||||
if (!seq_buf_used(&kbd_name))
|
||||
snprintf(kbd->name, sizeof(kbd->name),
|
||||
"USB HIDBP Keyboard %04x:%04x",
|
||||
le16_to_cpu(dev->descriptor.idVendor),
|
||||
le16_to_cpu(dev->descriptor.idProduct));
|
||||
|
||||
usb_make_path(dev, kbd->phys, sizeof(kbd->phys));
|
||||
strlcat(kbd->phys, "/input0", sizeof(kbd->phys));
|
||||
len = strnlen(kbd->phys, sizeof(kbd->phys));
|
||||
strscpy(kbd->phys + len, "/input0", sizeof(kbd->phys) - len);
|
||||
|
||||
input_dev->name = kbd->name;
|
||||
input_dev->phys = kbd->phys;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/usb/input.h>
|
||||
#include <linux/hid.h>
|
||||
#include <linux/seq_buf.h>
|
||||
|
||||
/* for apple IDs */
|
||||
#ifdef CONFIG_USB_HID_MODULE
|
||||
|
|
@ -110,8 +111,10 @@ static int usb_mouse_probe(struct usb_interface *intf, const struct usb_device_i
|
|||
struct usb_endpoint_descriptor *endpoint;
|
||||
struct usb_mouse *mouse;
|
||||
struct input_dev *input_dev;
|
||||
struct seq_buf mouse_name;
|
||||
int pipe, maxp;
|
||||
int error = -ENOMEM;
|
||||
size_t len;
|
||||
|
||||
interface = intf->cur_altsetting;
|
||||
|
||||
|
|
@ -140,24 +143,26 @@ static int usb_mouse_probe(struct usb_interface *intf, const struct usb_device_i
|
|||
|
||||
mouse->usbdev = dev;
|
||||
mouse->dev = input_dev;
|
||||
seq_buf_init(&mouse_name, mouse->name, sizeof(mouse->name));
|
||||
|
||||
if (dev->manufacturer)
|
||||
strscpy(mouse->name, dev->manufacturer, sizeof(mouse->name));
|
||||
seq_buf_puts(&mouse_name, dev->manufacturer);
|
||||
|
||||
if (dev->product) {
|
||||
if (dev->manufacturer)
|
||||
strlcat(mouse->name, " ", sizeof(mouse->name));
|
||||
strlcat(mouse->name, dev->product, sizeof(mouse->name));
|
||||
seq_buf_puts(&mouse_name, " ");
|
||||
seq_buf_puts(&mouse_name, dev->product);
|
||||
}
|
||||
|
||||
if (!strlen(mouse->name))
|
||||
if (!seq_buf_used(&mouse_name))
|
||||
snprintf(mouse->name, sizeof(mouse->name),
|
||||
"USB HIDBP Mouse %04x:%04x",
|
||||
le16_to_cpu(dev->descriptor.idVendor),
|
||||
le16_to_cpu(dev->descriptor.idProduct));
|
||||
|
||||
usb_make_path(dev, mouse->phys, sizeof(mouse->phys));
|
||||
strlcat(mouse->phys, "/input0", sizeof(mouse->phys));
|
||||
len = strnlen(mouse->phys, sizeof(mouse->phys));
|
||||
strscpy(mouse->phys + len, "/input0", sizeof(mouse->phys) - len);
|
||||
|
||||
input_dev->name = mouse->name;
|
||||
input_dev->phys = mouse->phys;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user