Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ed7a70b authored by Jiri Kosina's avatar Jiri Kosina
Browse files

Merge branch 'for-4.15/upstream' into for-linus



- cp2112: GPIO error handling and Kconfig fixes from Sébastien Szymanski
- i2c-hid: fixup / quirk for Apollo-Lake based laptops, from Hans de Goede
- Input/Core: add eraser tool support, from Ping Cheng
- small assorted code fixes

Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parents b50b9d3d 7da85fbf
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -230,7 +230,7 @@ config HID_CMEDIA

config HID_CP2112
	tristate "Silicon Labs CP2112 HID USB-to-SMBus Bridge support"
	depends on USB_HID && I2C && GPIOLIB
	depends on USB_HID && HIDRAW && I2C && GPIOLIB
	select GPIOLIB_IRQCHIP
	---help---
	Support for Silicon Labs CP2112 HID USB to SMBus Master Bridge.
@@ -750,11 +750,10 @@ config HID_PRIMAX
	HID standard.

config HID_RETRODE
	tristate "Retrode"
	tristate "Retrode 2 USB adapter for vintage video games"
	depends on USB_HID
	---help---
	Support for

	  * Retrode 2 cartridge and controller adapter

config HID_ROCCAT
+1 −1
Original line number Diff line number Diff line
@@ -1662,7 +1662,7 @@ static struct bin_attribute dev_bin_attr_report_desc = {
	.size = HID_MAX_DESCRIPTOR_SIZE,
};

static struct device_attribute dev_attr_country = {
static const struct device_attribute dev_attr_country = {
	.attr = { .name = "country", .mode = 0444 },
	.show = show_country,
};
+7 −3
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@
 * Data Sheet:
 *   http://www.silabs.com/Support%20Documents/TechnicalDocs/CP2112.pdf
 * Programming Interface Specification:
 *   http://www.silabs.com/Support%20Documents/TechnicalDocs/AN495.pdf
 *   https://www.silabs.com/documents/public/application-notes/an495-cp2112-interface-specification.pdf
 */

#include <linux/gpio.h>
@@ -196,6 +196,8 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
				 HID_REQ_GET_REPORT);
	if (ret != CP2112_GPIO_CONFIG_LENGTH) {
		hid_err(hdev, "error requesting GPIO config: %d\n", ret);
		if (ret >= 0)
			ret = -EIO;
		goto exit;
	}

@@ -205,8 +207,10 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
	ret = hid_hw_raw_request(hdev, CP2112_GPIO_CONFIG, buf,
				 CP2112_GPIO_CONFIG_LENGTH, HID_FEATURE_REPORT,
				 HID_REQ_SET_REPORT);
	if (ret < 0) {
	if (ret != CP2112_GPIO_CONFIG_LENGTH) {
		hid_err(hdev, "error setting GPIO config: %d\n", ret);
		if (ret >= 0)
			ret = -EIO;
		goto exit;
	}

@@ -214,7 +218,7 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)

exit:
	mutex_unlock(&dev->lock);
	return ret < 0 ? ret : -EIO;
	return ret;
}

static void cp2112_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+3 −0
Original line number Diff line number Diff line
@@ -513,6 +513,9 @@
#define USB_DEVICE_ID_GYRATION_REMOTE_2 0x0003
#define USB_DEVICE_ID_GYRATION_REMOTE_3 0x0008

#define I2C_VENDOR_ID_HANTICK		0x0911
#define I2C_PRODUCT_ID_HANTICK_5288	0x5288

#define USB_VENDOR_ID_HANWANG		0x0b57
#define USB_DEVICE_ID_HANWANG_TABLET_FIRST	0x5000
#define USB_DEVICE_ID_HANWANG_TABLET_LAST	0x8fff
+9 −0
Original line number Diff line number Diff line
@@ -797,6 +797,15 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
			map_key_clear(BTN_STYLUS);
			break;

		case 0x45: /* ERASER */
			/*
			 * This event is reported when eraser tip touches the surface.
			 * Actual eraser (BTN_TOOL_RUBBER) is set by Invert usage when
			 * tool gets in proximity.
			 */
			map_key_clear(BTN_TOUCH);
			break;

		case 0x46: /* TabletPick */
		case 0x5a: /* SecondaryBarrelSwitch */
			map_key_clear(BTN_STYLUS2);
Loading