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

Commit 3abee352 authored by Jiri Kosina's avatar Jiri Kosina
Browse files

Merge branches 'battery-scope', 'logitech' and 'multitouch' into for-linus

Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -354,7 +354,9 @@ config HID_MULTITOUCH
	  - LG Display panels (Dell ST2220Tc)
	  - LG Display panels (Dell ST2220Tc)
	  - Lumio CrystalTouch panels
	  - Lumio CrystalTouch panels
	  - MosArt dual-touch panels
	  - MosArt dual-touch panels
	  - Panasonic multitouch panels
	  - PenMount dual touch panels
	  - PenMount dual touch panels
	  - Perixx Peripad 701 touchpad
	  - PixArt optical touch screen
	  - PixArt optical touch screen
	  - Pixcir dual touch panels
	  - Pixcir dual touch panels
	  - Quanta panels
	  - Quanta panels
+13 −3
Original line number Original line Diff line number Diff line
@@ -1232,7 +1232,6 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
		hdev->claimed |= HID_CLAIMED_INPUT;
		hdev->claimed |= HID_CLAIMED_INPUT;
	if (hdev->quirks & HID_QUIRK_MULTITOUCH) {
	if (hdev->quirks & HID_QUIRK_MULTITOUCH) {
		/* this device should be handled by hid-multitouch, skip it */
		/* this device should be handled by hid-multitouch, skip it */
		hdev->quirks &= ~HID_QUIRK_MULTITOUCH;
		return -ENODEV;
		return -ENODEV;
	}
	}


@@ -1409,6 +1408,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7224) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_725E) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302) },
@@ -1501,6 +1502,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT780) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT880) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) },
@@ -1663,6 +1666,10 @@ static int hid_bus_match(struct device *dev, struct device_driver *drv)
	struct hid_driver *hdrv = container_of(drv, struct hid_driver, driver);
	struct hid_driver *hdrv = container_of(drv, struct hid_driver, driver);
	struct hid_device *hdev = container_of(dev, struct hid_device, dev);
	struct hid_device *hdev = container_of(dev, struct hid_device, dev);


	if ((hdev->quirks & HID_QUIRK_MULTITOUCH) &&
		!strncmp(hdrv->name, "hid-multitouch", 14))
		return 1;

	if (!hid_match_device(hdev, hdrv))
	if (!hid_match_device(hdev, hdrv))
		return 0;
		return 0;


@@ -1687,9 +1694,12 @@ static int hid_device_probe(struct device *dev)
	if (!hdev->driver) {
	if (!hdev->driver) {
		id = hid_match_device(hdev, hdrv);
		id = hid_match_device(hdev, hdrv);
		if (id == NULL) {
		if (id == NULL) {
			if (!((hdev->quirks & HID_QUIRK_MULTITOUCH) &&
				!strncmp(hdrv->name, "hid-multitouch", 14))) {
				ret = -ENODEV;
				ret = -ENODEV;
				goto unlock;
				goto unlock;
			}
			}
		}


		hdev->driver = hdrv;
		hdev->driver = hdrv;
		if (hdrv->probe) {
		if (hdrv->probe) {
+15 −1
Original line number Original line Diff line number Diff line
@@ -152,6 +152,7 @@


#define USB_VENDOR_ID_ATMEL		0x03eb
#define USB_VENDOR_ID_ATMEL		0x03eb
#define USB_DEVICE_ID_ATMEL_MULTITOUCH	0x211c
#define USB_DEVICE_ID_ATMEL_MULTITOUCH	0x211c
#define USB_DEVICE_ID_ATMEL_MXT_DIGITIZER	0x2118


#define USB_VENDOR_ID_AVERMEDIA		0x07ca
#define USB_VENDOR_ID_AVERMEDIA		0x07ca
#define USB_DEVICE_ID_AVER_FM_MR800	0xb800
#define USB_DEVICE_ID_AVER_FM_MR800	0xb800
@@ -240,11 +241,18 @@
#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER	0x0001
#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER	0x0001
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D	0x480d
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D	0x480d
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E	0x480e
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E	0x480e
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7207	0x7207
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C	0x720c
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C	0x720c
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7224	0x7224
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_722A	0x722A
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_725E	0x725e
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7262	0x7262
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B	0x726b
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B	0x726b
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72AA	0x72aa
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1	0x72a1
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1	0x72a1
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72FA	0x72fa
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72FA	0x72fa
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302	0x7302
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302	0x7302
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7349	0x7349
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001	0xa001
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001	0xa001


#define USB_VENDOR_ID_ELECOM		0x056e
#define USB_VENDOR_ID_ELECOM		0x056e
@@ -377,6 +385,7 @@


#define USB_VENDOR_ID_IDEACOM		0x1cb6
#define USB_VENDOR_ID_IDEACOM		0x1cb6
#define USB_DEVICE_ID_IDEACOM_IDC6650	0x6650
#define USB_DEVICE_ID_IDEACOM_IDC6650	0x6650
#define USB_DEVICE_ID_IDEACOM_IDC6651	0x6651


#define USB_VENDOR_ID_ILITEK		0x222a
#define USB_VENDOR_ID_ILITEK		0x222a
#define USB_DEVICE_ID_ILITEK_MULTITOUCH	0x0001
#define USB_DEVICE_ID_ILITEK_MULTITOUCH	0x0001
@@ -568,6 +577,10 @@
#define USB_DEVICE_ID_ORTEK_PKB1700	0x1700
#define USB_DEVICE_ID_ORTEK_PKB1700	0x1700
#define USB_DEVICE_ID_ORTEK_WKB2000	0x2000
#define USB_DEVICE_ID_ORTEK_WKB2000	0x2000


#define USB_VENDOR_ID_PANASONIC		0x04da
#define USB_DEVICE_ID_PANABOARD_UBT780	0x1044
#define USB_DEVICE_ID_PANABOARD_UBT880	0x104d

#define USB_VENDOR_ID_PANJIT		0x134c
#define USB_VENDOR_ID_PANJIT		0x134c


#define USB_VENDOR_ID_PANTHERLORD	0x0810
#define USB_VENDOR_ID_PANTHERLORD	0x0810
@@ -662,6 +675,7 @@


#define USB_VENDOR_ID_TOPSEED2		0x1784
#define USB_VENDOR_ID_TOPSEED2		0x1784
#define USB_DEVICE_ID_TOPSEED2_RF_COMBO	0x0004
#define USB_DEVICE_ID_TOPSEED2_RF_COMBO	0x0004
#define USB_DEVICE_ID_TOPSEED2_PERIPAD_701	0x0016


#define USB_VENDOR_ID_TOPMAX		0x0663
#define USB_VENDOR_ID_TOPMAX		0x0663
#define USB_DEVICE_ID_TOPMAX_COBRAPAD	0x0103
#define USB_DEVICE_ID_TOPMAX_COBRAPAD	0x0103
+8 −1
Original line number Original line Diff line number Diff line
@@ -279,7 +279,8 @@ static enum power_supply_property hidinput_battery_props[] = {
	POWER_SUPPLY_PROP_ONLINE,
	POWER_SUPPLY_PROP_ONLINE,
	POWER_SUPPLY_PROP_CAPACITY,
	POWER_SUPPLY_PROP_CAPACITY,
	POWER_SUPPLY_PROP_MODEL_NAME,
	POWER_SUPPLY_PROP_MODEL_NAME,
	POWER_SUPPLY_PROP_STATUS
	POWER_SUPPLY_PROP_STATUS,
	POWER_SUPPLY_PROP_SCOPE,
};
};


#define HID_BATTERY_QUIRK_PERCENT	(1 << 0) /* always reports percent */
#define HID_BATTERY_QUIRK_PERCENT	(1 << 0) /* always reports percent */
@@ -344,6 +345,10 @@ static int hidinput_get_battery_property(struct power_supply *psy,
		val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
		val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
		break;
		break;


	case POWER_SUPPLY_PROP_SCOPE:
		val->intval = POWER_SUPPLY_SCOPE_DEVICE;
		break;

	default:
	default:
		ret = -EINVAL;
		ret = -EINVAL;
		break;
		break;
@@ -403,6 +408,8 @@ static bool hidinput_setup_battery(struct hid_device *dev, unsigned report_type,
		battery->name = NULL;
		battery->name = NULL;
	}
	}


	power_supply_powers(battery, &dev->dev);

out:
out:
	return true;
	return true;
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -445,7 +445,7 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
	dj_report.report_id = REPORT_ID_DJ_SHORT;
	dj_report.report_id = REPORT_ID_DJ_SHORT;
	dj_report.device_index = 0xFF;
	dj_report.device_index = 0xFF;
	dj_report.report_type = REPORT_TYPE_CMD_SWITCH;
	dj_report.report_type = REPORT_TYPE_CMD_SWITCH;
	dj_report.report_params[CMD_SWITCH_PARAM_DEVBITFIELD] = 0x1F;
	dj_report.report_params[CMD_SWITCH_PARAM_DEVBITFIELD] = 0x3F;
	dj_report.report_params[CMD_SWITCH_PARAM_TIMEOUT_SECONDS] = (u8)timeout;
	dj_report.report_params[CMD_SWITCH_PARAM_TIMEOUT_SECONDS] = (u8)timeout;
	return logi_dj_recv_send_report(djrcv_dev, &dj_report);
	return logi_dj_recv_send_report(djrcv_dev, &dj_report);
}
}
Loading