public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver
       [not found] <CGME20240125043646epcas5p1d599fecff0fc37926295fc5260a80682@epcas5p1.samsung.com>
@ 2024-01-25  4:36 ` Sandeep C S
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 1/6] HID Samsung : Broaden device compatibility in samsung driver Sandeep C S
                     ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Sandeep C S @ 2024-01-25  4:36 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: gaudium.lee, ih0923.kim, suhyun_.kim, jitender.s21, junwan.cho,
	sandeep.cs, linux-input, linux-kernel

Dear Jiri & Team,

I hope this email finds you well.  
As per the review comments given by Mr. Jiri and Mr. Joe Perches in our last converstaion over mail.
We have incorporated the feedback on our driver. Please check this set of series and help us to improve samsung driver.

As of today, Opensource kernel Samsung driver only supports USB HID devices and do not have support for Bluetooth HID devices. 
Samsung would like to improve the samsung driver and extend it's support for bluetooth devices as well.

Summary of changes in Samsung driver:
 1. Add support for below bluetooth devices

	Samsung wireless Keyboard
	Samsung wireless GamePad
	Samsung Wireless Action Mouse
	Samsung Wireless Book Cover
	Samsung Wireless Universal Keyboard
	Samsung Wireless HOGP Keyboard
 2. Add support for Special key processing on each of the above devices.
 
 Patch Series Overview:
--------------------------------------

[Patch 1/6]

HID Samsung : Broaden device compatibility in samsung driver.

hid_is_usb() check being moved.

[Patch 2/6]

HID: Samsung : Fix the checkpatch complain.

Warning found by checkpatch.pl script.

[Patch 3/6]

HID: Samsung : Add Samsung wireless keyboard support.

[Patch 4/6]

HID: Samsung : Add Samsung wireless gamepad support.

[Patch 5/6]

HID: Samsung : Add Samsung wireless action mouse support.

[Patch 6/6]

HID: Samsung : Add Samsung wireless bookcover and universal keyboard support.



All these changes have been verified and tested thoroughly in android devices.
Please accept our changes.


Thanks for your time and consideration.

Best regards
Sandeep C S

Sandeep C S (6):
  HID Samsung : Broaden device compatibility in samsung driver.
  HID: Samsung : Fix the checkpatch complain. Rewritten code using
    memcmp where applicable.
  HID: Samsung : Add Samsung wireless keyboard support.
  HID: Samsung : Add Samsung wireless gamepad support.
  HID: Samsung : Add Samsung wireless action mouse support.
  HID: Samsung : Add Samsung wireless bookcover and universal keyboard
    support.

 drivers/hid/hid-ids.h     |   7 +
 drivers/hid/hid-samsung.c | 437 ++++++++++++++++++++++++++++++++++----
 2 files changed, 408 insertions(+), 36 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [HID Patchsets for Samsung driver v4 1/6] HID Samsung : Broaden device compatibility in samsung driver.
  2024-01-25  4:36 ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Sandeep C S
@ 2024-01-25  4:36   ` Sandeep C S
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 2/6] HID: Samsung : Fix the checkpatch complain. Rewritten code using memcmp where applicable Sandeep C S
                     ` (5 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Sandeep C S @ 2024-01-25  4:36 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: gaudium.lee, ih0923.kim, suhyun_.kim, jitender.s21, junwan.cho,
	sandeep.cs, linux-input, linux-kernel

The USB validation check has been moved wherever its required.

Earlier Samsung driver only handles USB HID devices and returns an error if it encounters a Bluetooth type of HID device.
This changes improves driver compatibility and extends its support for a wide range of devices.

Signed-off-by: Sandeep C S <sandeep.cs@samsung.com>
Signed-off-by: Junwan Cho <junwan.cho@samsung.com>
Signed-off-by: Jitender Sajwan <jitender.s21@samsung.com>
---
 drivers/hid/hid-samsung.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c
index cf5992e97094..3a8756232731 100644
--- a/drivers/hid/hid-samsung.c
+++ b/drivers/hid/hid-samsung.c
@@ -128,7 +128,7 @@ static int samsung_kbd_mouse_input_mapping(struct hid_device *hdev,
 static __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 	unsigned int *rsize)
 {
-	if (USB_DEVICE_ID_SAMSUNG_IR_REMOTE == hdev->product)
+	if (USB_DEVICE_ID_SAMSUNG_IR_REMOTE == hdev->product && hid_is_usb(hdev))
 		rdesc = samsung_irda_report_fixup(hdev, rdesc, rsize);
 	return rdesc;
 }
@@ -139,7 +139,7 @@ static int samsung_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 {
 	int ret = 0;
 
-	if (USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE == hdev->product)
+	if (USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE == hdev->product && hid_is_usb(hdev))
 		ret = samsung_kbd_mouse_input_mapping(hdev,
 			hi, field, usage, bit, max);
 
@@ -152,9 +152,6 @@ static int samsung_probe(struct hid_device *hdev,
 	int ret;
 	unsigned int cmask = HID_CONNECT_DEFAULT;
 
-	if (!hid_is_usb(hdev))
-		return -EINVAL;
-
 	ret = hid_parse(hdev);
 	if (ret) {
 		hid_err(hdev, "parse failed\n");
@@ -162,6 +159,10 @@ static int samsung_probe(struct hid_device *hdev,
 	}
 
 	if (USB_DEVICE_ID_SAMSUNG_IR_REMOTE == hdev->product) {
+		if (!hid_is_usb(hdev)) {
+			ret = -EINVAL;
+			goto err_free;
+		}
 		if (hdev->rsize == 184) {
 			/* disable hidinput, force hiddev */
 			cmask = (cmask & ~HID_CONNECT_HIDINPUT) |
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [HID Patchsets for Samsung driver v4 2/6] HID: Samsung : Fix the checkpatch complain. Rewritten code using memcmp where applicable.
  2024-01-25  4:36 ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Sandeep C S
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 1/6] HID Samsung : Broaden device compatibility in samsung driver Sandeep C S
@ 2024-01-25  4:36   ` Sandeep C S
  2024-01-25 21:54     ` Joe Perches
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 3/6] HID: Samsung : Add Samsung wireless keyboard support Sandeep C S
                     ` (4 subsequent siblings)
  6 siblings, 1 reply; 11+ messages in thread
From: Sandeep C S @ 2024-01-25  4:36 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: gaudium.lee, ih0923.kim, suhyun_.kim, jitender.s21, junwan.cho,
	sandeep.cs, linux-input, linux-kernel

Resolved warnings found by checkpatch.pl script.

Signed-off-by: Sandeep C S <sandeep.cs@samsung.com>
Signed-off-by: Junwan Cho <junwan.cho@samsung.com>
Signed-off-by: Jitender Sajwan <jitender.s21@samsung.com>
---
 drivers/hid/hid-samsung.c | 80 +++++++++++++++++++++++----------------
 1 file changed, 47 insertions(+), 33 deletions(-)

diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c
index 3a8756232731..97d0bf7d4d7e 100644
--- a/drivers/hid/hid-samsung.c
+++ b/drivers/hid/hid-samsung.c
@@ -58,33 +58,25 @@ static inline void samsung_irda_dev_trace(struct hid_device *hdev,
 static __u8 *samsung_irda_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 		unsigned int *rsize)
 {
-	if (*rsize == 184 && rdesc[175] == 0x25 && rdesc[176] == 0x40 &&
-			rdesc[177] == 0x75 && rdesc[178] == 0x30 &&
-			rdesc[179] == 0x95 && rdesc[180] == 0x01 &&
+	if (*rsize == 184 && !memcmp(&rdesc[175], "\x25\x40\x75\x30\x95\x01", 6) &&
 			rdesc[182] == 0x40) {
 		samsung_irda_dev_trace(hdev, 184);
 		rdesc[176] = 0xff;
 		rdesc[178] = 0x08;
 		rdesc[180] = 0x06;
 		rdesc[182] = 0x42;
-	} else
-	if (*rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 &&
-			rdesc[194] == 0x25 && rdesc[195] == 0x12) {
+	} else if (*rsize == 203 && !memcmp(&rdesc[192], "\x15\x00\x25\x12", 4)) {
 		samsung_irda_dev_trace(hdev, 203);
-		rdesc[193] = 0x1;
-		rdesc[195] = 0xf;
-	} else
-	if (*rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 &&
-			rdesc[126] == 0x25 && rdesc[127] == 0x11) {
+		rdesc[193] = 0x01;
+		rdesc[195] = 0x0f;
+	} else if (*rsize == 135 && !memcmp(&rdesc[124], "\x15\x00\x25\x11", 4)) {
 		samsung_irda_dev_trace(hdev, 135);
-		rdesc[125] = 0x1;
-		rdesc[127] = 0xe;
-	} else
-	if (*rsize == 171 && rdesc[160] == 0x15 && rdesc[161] == 0x0 &&
-			rdesc[162] == 0x25 && rdesc[163] == 0x01) {
+		rdesc[125] = 0x01;
+		rdesc[127] = 0x0e;
+	} else if (*rsize == 171 && !memcmp(&rdesc[160], "\x15\x00\x25\x01", 4)) {
 		samsung_irda_dev_trace(hdev, 171);
-		rdesc[161] = 0x1;
-		rdesc[163] = 0x3;
+		rdesc[161] = 0x01;
+		rdesc[163] = 0x03;
 	}
 	return rdesc;
 }
@@ -99,7 +91,7 @@ static int samsung_kbd_mouse_input_mapping(struct hid_device *hdev,
 	struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
 	unsigned short ifnum = intf->cur_altsetting->desc.bInterfaceNumber;
 
-	if (1 != ifnum || HID_UP_CONSUMER != (usage->hid & HID_USAGE_PAGE))
+	if (ifnum != 1 || HID_UP_CONSUMER != (usage->hid & HID_USAGE_PAGE))
 		return 0;
 
 	dbg_hid("samsung wireless keyboard/mouse input mapping event [0x%x]\n",
@@ -107,17 +99,39 @@ static int samsung_kbd_mouse_input_mapping(struct hid_device *hdev,
 
 	switch (usage->hid & HID_USAGE) {
 	/* report 2 */
-	case 0x183: samsung_kbd_mouse_map_key_clear(KEY_MEDIA); break;
-	case 0x195: samsung_kbd_mouse_map_key_clear(KEY_EMAIL);	break;
-	case 0x196: samsung_kbd_mouse_map_key_clear(KEY_CALC); break;
-	case 0x197: samsung_kbd_mouse_map_key_clear(KEY_COMPUTER); break;
-	case 0x22b: samsung_kbd_mouse_map_key_clear(KEY_SEARCH); break;
-	case 0x22c: samsung_kbd_mouse_map_key_clear(KEY_WWW); break;
-	case 0x22d: samsung_kbd_mouse_map_key_clear(KEY_BACK); break;
-	case 0x22e: samsung_kbd_mouse_map_key_clear(KEY_FORWARD); break;
-	case 0x22f: samsung_kbd_mouse_map_key_clear(KEY_FAVORITES); break;
-	case 0x230: samsung_kbd_mouse_map_key_clear(KEY_REFRESH); break;
-	case 0x231: samsung_kbd_mouse_map_key_clear(KEY_STOP); break;
+	case 0x183:
+		samsung_kbd_mouse_map_key_clear(KEY_MEDIA);
+		break;
+	case 0x195:
+		samsung_kbd_mouse_map_key_clear(KEY_EMAIL);
+		break;
+	case 0x196:
+		samsung_kbd_mouse_map_key_clear(KEY_CALC);
+		break;
+	case 0x197:
+		samsung_kbd_mouse_map_key_clear(KEY_COMPUTER);
+		break;
+	case 0x22b:
+		samsung_kbd_mouse_map_key_clear(KEY_SEARCH);
+		break;
+	case 0x22c:
+		samsung_kbd_mouse_map_key_clear(KEY_WWW);
+		break;
+	case 0x22d:
+		samsung_kbd_mouse_map_key_clear(KEY_BACK);
+		break;
+	case 0x22e:
+		samsung_kbd_mouse_map_key_clear(KEY_FORWARD);
+		break;
+	case 0x22f:
+		samsung_kbd_mouse_map_key_clear(KEY_FAVORITES);
+		break;
+	case 0x230:
+		samsung_kbd_mouse_map_key_clear(KEY_REFRESH);
+		break;
+	case 0x231:
+		samsung_kbd_mouse_map_key_clear(KEY_STOP);
+		break;
 	default:
 		return 0;
 	}
@@ -128,7 +142,7 @@ static int samsung_kbd_mouse_input_mapping(struct hid_device *hdev,
 static __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 	unsigned int *rsize)
 {
-	if (USB_DEVICE_ID_SAMSUNG_IR_REMOTE == hdev->product && hid_is_usb(hdev))
+	if (hdev->product == USB_DEVICE_ID_SAMSUNG_IR_REMOTE && hid_is_usb(hdev))
 		rdesc = samsung_irda_report_fixup(hdev, rdesc, rsize);
 	return rdesc;
 }
@@ -139,7 +153,7 @@ static int samsung_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 {
 	int ret = 0;
 
-	if (USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE == hdev->product && hid_is_usb(hdev))
+	if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE && hid_is_usb(hdev))
 		ret = samsung_kbd_mouse_input_mapping(hdev,
 			hi, field, usage, bit, max);
 
@@ -158,7 +172,7 @@ static int samsung_probe(struct hid_device *hdev,
 		goto err_free;
 	}
 
-	if (USB_DEVICE_ID_SAMSUNG_IR_REMOTE == hdev->product) {
+	if (hdev->product == USB_DEVICE_ID_SAMSUNG_IR_REMOTE) {
 		if (!hid_is_usb(hdev)) {
 			ret = -EINVAL;
 			goto err_free;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [HID Patchsets for Samsung driver v4 3/6] HID: Samsung : Add Samsung wireless keyboard support.
  2024-01-25  4:36 ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Sandeep C S
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 1/6] HID Samsung : Broaden device compatibility in samsung driver Sandeep C S
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 2/6] HID: Samsung : Fix the checkpatch complain. Rewritten code using memcmp where applicable Sandeep C S
@ 2024-01-25  4:36   ` Sandeep C S
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 4/6] HID: Samsung : Add Samsung wireless gamepad support Sandeep C S
                     ` (3 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Sandeep C S @ 2024-01-25  4:36 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: gaudium.lee, ih0923.kim, suhyun_.kim, jitender.s21, junwan.cho,
	sandeep.cs, linux-input, linux-kernel

Add Support for samsung wireless keyboard with input mapping events.

Device 7021 (Samsung wireless keyboard)

Signed-off-by: Sandeep C S <sandeep.cs@samsung.com>
Signed-off-by: Junwan Cho <junwan.cho@samsung.com>
Signed-off-by: Jitender Sajwan <jitender.s21@samsung.com>
---
 drivers/hid/hid-ids.h     |  2 +
 drivers/hid/hid-samsung.c | 97 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 99 insertions(+)

diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index fb30e228d35f..d7572ab5ea6c 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -1143,8 +1143,10 @@
 #define USB_DEVICE_ID_SAITEK_X65	0x0b6a
 
 #define USB_VENDOR_ID_SAMSUNG		0x0419
+#define USB_VENDOR_ID_SAMSUNG_ELECTRONICS		0x04e8
 #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE	0x0001
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE	0x0600
+#define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD	0x7021
 
 #define USB_VENDOR_ID_SEMICO			0x1a2c
 #define USB_DEVICE_ID_SEMICO_USB_KEYKOARD	0x0023
diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c
index 97d0bf7d4d7e..aa8e7805be76 100644
--- a/drivers/hid/hid-samsung.c
+++ b/drivers/hid/hid-samsung.c
@@ -139,6 +139,99 @@ static int samsung_kbd_mouse_input_mapping(struct hid_device *hdev,
 	return 1;
 }
 
+static int samsung_kbd_input_mapping(struct hid_device *hdev,
+	struct hid_input *hi, struct hid_field *field, struct hid_usage *usage,
+	unsigned long **bit, int *max)
+{
+	if (!(HID_UP_CONSUMER == (usage->hid & HID_USAGE_PAGE) ||
+			HID_UP_KEYBOARD == (usage->hid & HID_USAGE_PAGE)))
+		return 0;
+
+	dbg_hid("samsung wireless keyboard input mapping event [0x%x]\n",
+		usage->hid & HID_USAGE);
+
+	if (HID_UP_KEYBOARD == (usage->hid & HID_USAGE_PAGE)) {
+		set_bit(EV_REP, hi->input->evbit);
+		switch (usage->hid & HID_USAGE) {
+		case 0x32:
+			samsung_kbd_mouse_map_key_clear(KEY_BACKSLASH);
+			break;
+		case 0x64:
+			samsung_kbd_mouse_map_key_clear(KEY_102ND);
+			break;
+		/* Only for BR keyboard */
+		case 0x87:
+			samsung_kbd_mouse_map_key_clear(KEY_RO);
+			break;
+		default:
+			return 0;
+		}
+	}
+
+	if (HID_UP_CONSUMER == (usage->hid & HID_USAGE_PAGE)) {
+		switch (usage->hid & HID_USAGE) {
+		/* report 2 */
+		/* MENU */
+		case 0x040:
+			samsung_kbd_mouse_map_key_clear(KEY_MENU);
+			break;
+		case 0x18a:
+			samsung_kbd_mouse_map_key_clear(KEY_MAIL);
+			break;
+		case 0x196:
+			samsung_kbd_mouse_map_key_clear(KEY_WWW);
+			break;
+		case 0x19e:
+			samsung_kbd_mouse_map_key_clear(KEY_SCREENLOCK);
+			break;
+		case 0x221:
+			samsung_kbd_mouse_map_key_clear(KEY_SEARCH);
+			break;
+		case 0x223:
+			samsung_kbd_mouse_map_key_clear(KEY_HOMEPAGE);
+			break;
+		/* Smtart Voice Key */
+		case 0x300:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY13);
+			break;
+		/* RECENTAPPS */
+		case 0x301:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY1);
+			break;
+		/* APPLICATION */
+		case 0x302:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY2);
+			break;
+		/* Voice search */
+		case 0x305:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY4);
+			break;
+		/* QPANEL on/off */
+		case 0x306:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY5);
+			break;
+		/* SIP on/off */
+		case 0x307:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY3);
+			break;
+		/* LANG */
+		case 0x308:
+			samsung_kbd_mouse_map_key_clear(KEY_LANGUAGE);
+			break;
+		case 0x30a:
+			samsung_kbd_mouse_map_key_clear(KEY_BRIGHTNESSDOWN);
+			break;
+		case 0x30b:
+			samsung_kbd_mouse_map_key_clear(KEY_BRIGHTNESSUP);
+			break;
+		default:
+			return 0;
+		}
+	}
+
+	return 1;
+}
+
 static __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 	unsigned int *rsize)
 {
@@ -156,6 +249,9 @@ static int samsung_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 	if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE && hid_is_usb(hdev))
 		ret = samsung_kbd_mouse_input_mapping(hdev,
 			hi, field, usage, bit, max);
+	else if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD)
+		ret = samsung_kbd_input_mapping(hdev,
+			hi, field, usage, bit, max);
 
 	return ret;
 }
@@ -198,6 +294,7 @@ static int samsung_probe(struct hid_device *hdev,
 static const struct hid_device_id samsung_devices[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD) },
 	{ }
 };
 MODULE_DEVICE_TABLE(hid, samsung_devices);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [HID Patchsets for Samsung driver v4 4/6] HID: Samsung : Add Samsung wireless gamepad support.
  2024-01-25  4:36 ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Sandeep C S
                     ` (2 preceding siblings ...)
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 3/6] HID: Samsung : Add Samsung wireless keyboard support Sandeep C S
@ 2024-01-25  4:36   ` Sandeep C S
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 5/6] HID: Samsung : Add Samsung wireless action mouse support Sandeep C S
                     ` (2 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Sandeep C S @ 2024-01-25  4:36 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: gaudium.lee, ih0923.kim, suhyun_.kim, jitender.s21, junwan.cho,
	sandeep.cs, linux-input, linux-kernel

Add support for samsung wireless gamepad with input mapping events.

Device a000 (Samsung wireless gamepad)

Signed-off-by: Sandeep C S <sandeep.cs@samsung.com>
Signed-off-by: Junwan Cho <junwan.cho@samsung.com>
Signed-off-by: Jitender Sajwan <jitender.s21@samsung.com>
---
 drivers/hid/hid-ids.h     |  1 +
 drivers/hid/hid-samsung.c | 95 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 96 insertions(+)

diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index d7572ab5ea6c..8a106fd6b339 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -1147,6 +1147,7 @@
 #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE	0x0001
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE	0x0600
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD	0x7021
+#define USB_DEVICE_ID_SAMSUNG_WIRELESS_GAMEPAD	0xa000
 
 #define USB_VENDOR_ID_SEMICO			0x1a2c
 #define USB_DEVICE_ID_SEMICO_USB_KEYKOARD	0x0023
diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c
index aa8e7805be76..217b30b71bb8 100644
--- a/drivers/hid/hid-samsung.c
+++ b/drivers/hid/hid-samsung.c
@@ -232,6 +232,97 @@ static int samsung_kbd_input_mapping(struct hid_device *hdev,
 	return 1;
 }
 
+static int samsung_gamepad_input_mapping(struct hid_device *hdev,
+	struct hid_input *hi, struct hid_field *field, struct hid_usage *usage,
+	unsigned long **bit, int *max)
+{
+	if (!(HID_UP_BUTTON == (usage->hid & HID_USAGE_PAGE) ||
+			HID_UP_CONSUMER == (usage->hid & HID_USAGE_PAGE)))
+		return 0;
+
+	dbg_hid("samsung wireless gamepad input mapping event [0x%x], %ld, %ld, [0x%x]\n",
+		usage->hid & HID_USAGE, hi->input->evbit[0], hi->input->absbit[0], usage->hid & HID_USAGE_PAGE);
+
+	if (HID_UP_BUTTON == (usage->hid & HID_USAGE_PAGE)) {
+		switch (usage->hid & HID_USAGE) {
+		case 0x01:
+			samsung_kbd_mouse_map_key_clear(BTN_A);
+			break;
+		case 0x02:
+			samsung_kbd_mouse_map_key_clear(BTN_B);
+			break;
+		case 0x03:
+			samsung_kbd_mouse_map_key_clear(BTN_C);
+			break;
+		case 0x04:
+			samsung_kbd_mouse_map_key_clear(BTN_X);
+			break;
+		case 0x05:
+			samsung_kbd_mouse_map_key_clear(BTN_Y);
+			break;
+		case 0x06:
+			samsung_kbd_mouse_map_key_clear(BTN_Z);
+			break;
+		case 0x07:
+			samsung_kbd_mouse_map_key_clear(BTN_TL);
+			break;
+		case 0x08:
+			samsung_kbd_mouse_map_key_clear(BTN_TR);
+			break;
+		case 0x09:
+			samsung_kbd_mouse_map_key_clear(BTN_TL2);
+			break;
+		case 0x0a:
+			samsung_kbd_mouse_map_key_clear(BTN_TR2);
+			break;
+		case 0x0b:
+			samsung_kbd_mouse_map_key_clear(BTN_SELECT);
+			break;
+		case 0x0c:
+			samsung_kbd_mouse_map_key_clear(BTN_START);
+			break;
+		case 0x0d:
+			samsung_kbd_mouse_map_key_clear(BTN_MODE);
+			break;
+		case 0x0e:
+			samsung_kbd_mouse_map_key_clear(BTN_THUMBL);
+			break;
+		case 0x0f:
+			samsung_kbd_mouse_map_key_clear(BTN_THUMBR);
+			break;
+		case 0x10:
+			samsung_kbd_mouse_map_key_clear(0x13f);
+			break;
+		default:
+			return 0;
+		}
+	}
+
+	if (HID_UP_CONSUMER == (usage->hid & HID_USAGE_PAGE)) {
+		switch (usage->hid & HID_USAGE) {
+		case 0x040:
+			samsung_kbd_mouse_map_key_clear(KEY_MENU);
+			break;
+		case 0x223:
+			samsung_kbd_mouse_map_key_clear(KEY_HOMEPAGE);
+			break;
+		case 0x224:
+			samsung_kbd_mouse_map_key_clear(KEY_BACK);
+			break;
+
+		/* Screen Capture */
+		case 0x303:
+			samsung_kbd_mouse_map_key_clear(KEY_SYSRQ);
+			break;
+
+		default:
+			return 0;
+		}
+	}
+
+	return 1;
+}
+
 static __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 	unsigned int *rsize)
 {
@@ -252,6 +343,9 @@ static int samsung_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 	else if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD)
 		ret = samsung_kbd_input_mapping(hdev,
 			hi, field, usage, bit, max);
+	else if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_GAMEPAD)
+		ret = samsung_gamepad_input_mapping(hdev,
+			hi, field, usage, bit, max);
 
 	return ret;
 }
@@ -295,6 +389,7 @@ static const struct hid_device_id samsung_devices[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD) },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_GAMEPAD) },
 	{ }
 };
 MODULE_DEVICE_TABLE(hid, samsung_devices);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [HID Patchsets for Samsung driver v4 5/6] HID: Samsung : Add Samsung wireless action mouse support.
  2024-01-25  4:36 ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Sandeep C S
                     ` (3 preceding siblings ...)
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 4/6] HID: Samsung : Add Samsung wireless gamepad support Sandeep C S
@ 2024-01-25  4:36   ` Sandeep C S
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 6/6] HID: Samsung : Add Samsung wireless bookcover and universal keyboard support Sandeep C S
  2024-01-25  8:24   ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Jiri Kosina
  6 siblings, 0 replies; 11+ messages in thread
From: Sandeep C S @ 2024-01-25  4:36 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: gaudium.lee, ih0923.kim, suhyun_.kim, jitender.s21, junwan.cho,
	sandeep.cs, linux-input, linux-kernel

Add support for samsung wireless action mouse with input mapping events.

Device a004 (Samsung wireless action mouse)

Signed-off-by: Sandeep C S <sandeep.cs@samsung.com>
Signed-off-by: Junwan Cho <junwan.cho@samsung.com>
Signed-off-by: Jitender Sajwan <jitender.s21@samsung.com>
---
 drivers/hid/hid-ids.h     |  1 +
 drivers/hid/hid-samsung.c | 27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 8a106fd6b339..06bf718961da 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -1148,6 +1148,7 @@
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE	0x0600
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD	0x7021
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_GAMEPAD	0xa000
+#define USB_DEVICE_ID_SAMSUNG_WIRELESS_ACTIONMOUSE	0xa004
 
 #define USB_VENDOR_ID_SEMICO			0x1a2c
 #define USB_DEVICE_ID_SEMICO_USB_KEYKOARD	0x0023
diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c
index 217b30b71bb8..0de23a70dddb 100644
--- a/drivers/hid/hid-samsung.c
+++ b/drivers/hid/hid-samsung.c
@@ -323,6 +323,29 @@ static int samsung_gamepad_input_mapping(struct hid_device *hdev,
 	return 1;
 }
 
+static int samsung_actionmouse_input_mapping(struct hid_device *hdev,
+	struct hid_input *hi, struct hid_field *field, struct hid_usage *usage,
+	unsigned long **bit, int *max)
+{
+
+	dbg_hid("samsung wireless actionmouse input mapping event [0x%x], [0x%x], %ld, %ld, [0x%x]\n",
+			usage->hid, usage->hid & HID_USAGE, hi->input->evbit[0], hi->input->absbit[0],
+			usage->hid & HID_USAGE_PAGE);
+
+	if (((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER) && ((usage->hid & HID_USAGE_PAGE) != HID_UP_BUTTON))
+		return 0;
+
+	switch (usage->hid & HID_USAGE) {
+	case 0x301:
+		samsung_kbd_mouse_map_key_clear(254);
+		break;
+	default:
+		return 0;
+	}
+
+	return 1;
+}
+
 static __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 	unsigned int *rsize)
 {
@@ -346,6 +369,9 @@ static int samsung_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 	else if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_GAMEPAD)
 		ret = samsung_gamepad_input_mapping(hdev,
 			hi, field, usage, bit, max);
+	else if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_ACTIONMOUSE)
+		ret = samsung_actionmouse_input_mapping(hdev,
+			hi, field, usage, bit, max);
 
 	return ret;
 }
@@ -390,6 +416,7 @@ static const struct hid_device_id samsung_devices[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_GAMEPAD) },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_ACTIONMOUSE) },
 	{ }
 };
 MODULE_DEVICE_TABLE(hid, samsung_devices);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [HID Patchsets for Samsung driver v4 6/6] HID: Samsung : Add Samsung wireless bookcover and universal keyboard support.
  2024-01-25  4:36 ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Sandeep C S
                     ` (4 preceding siblings ...)
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 5/6] HID: Samsung : Add Samsung wireless action mouse support Sandeep C S
@ 2024-01-25  4:36   ` Sandeep C S
  2024-01-25  8:24   ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Jiri Kosina
  6 siblings, 0 replies; 11+ messages in thread
From: Sandeep C S @ 2024-01-25  4:36 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: gaudium.lee, ih0923.kim, suhyun_.kim, jitender.s21, junwan.cho,
	sandeep.cs, linux-input, linux-kernel

Add support for samsung wireless bookcover and universal keyboard with input mapping events.

Device a005 (Samsung wireless bookcover keyboard)
Device a006 (Samsung wireless universal keyboard)
Device a064 (Samsung wireless multi hogp keyboard)

Signed-off-by: Sandeep C S <sandeep.cs@samsung.com>
Signed-off-by: Junwan Cho <junwan.cho@samsung.com>
Signed-off-by: Jitender Sajwan <jitender.s21@samsung.com>
Signed-off-by: Gwangho Lee <gaudium.lee@samsung.com>
---
 drivers/hid/hid-ids.h     |   3 +
 drivers/hid/hid-samsung.c | 131 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 134 insertions(+)

diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 06bf718961da..221bae808c25 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -1149,6 +1149,9 @@
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD	0x7021
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_GAMEPAD	0xa000
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_ACTIONMOUSE	0xa004
+#define USB_DEVICE_ID_SAMSUNG_WIRELESS_BOOKCOVER	0xa005
+#define USB_DEVICE_ID_SAMSUNG_WIRELESS_UNIVERSAL_KBD	0xa006
+#define USB_DEVICE_ID_SAMSUNG_WIRELESS_MULTI_HOGP_KBD	0xa064
 
 #define USB_VENDOR_ID_SEMICO			0x1a2c
 #define USB_DEVICE_ID_SEMICO_USB_KEYKOARD	0x0023
diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c
index 0de23a70dddb..08fb25b8459a 100644
--- a/drivers/hid/hid-samsung.c
+++ b/drivers/hid/hid-samsung.c
@@ -346,6 +346,129 @@ static int samsung_actionmouse_input_mapping(struct hid_device *hdev,
 	return 1;
 }
 
+static int samsung_universal_kbd_input_mapping(struct hid_device *hdev,
+	struct hid_input *hi, struct hid_field *field, struct hid_usage *usage,
+	unsigned long **bit, int *max)
+{
+	if (!(HID_UP_CONSUMER == (usage->hid & HID_USAGE_PAGE) ||
+			HID_UP_KEYBOARD == (usage->hid & HID_USAGE_PAGE)))
+		return 0;
+
+	dbg_hid("samsung wireless keyboard input mapping event [0x%x]\n",
+		usage->hid & HID_USAGE);
+
+	if (HID_UP_KEYBOARD == (usage->hid & HID_USAGE_PAGE)) {
+		set_bit(EV_REP, hi->input->evbit);
+		switch (usage->hid & HID_USAGE) {
+		case 0x32:
+			samsung_kbd_mouse_map_key_clear(KEY_BACKSLASH);
+			break;
+		case 0x64:
+			samsung_kbd_mouse_map_key_clear(KEY_102ND);
+			break;
+		/* Only for BR keyboard */
+		case 0x87:
+			samsung_kbd_mouse_map_key_clear(KEY_RO);
+			break;
+		default:
+			return 0;
+		}
+	}
+
+	if (HID_UP_CONSUMER == (usage->hid & HID_USAGE_PAGE)) {
+		switch (usage->hid & HID_USAGE) {
+		/* report 2 */
+		/* MENU */
+		case 0x040:
+			samsung_kbd_mouse_map_key_clear(KEY_MENU);
+			break;
+		case 0x18a:
+			samsung_kbd_mouse_map_key_clear(KEY_MAIL);
+			break;
+		case 0x196:
+			samsung_kbd_mouse_map_key_clear(KEY_WWW);
+			break;
+		case 0x19e:
+			samsung_kbd_mouse_map_key_clear(KEY_SCREENLOCK);
+			break;
+		case 0x221:
+			samsung_kbd_mouse_map_key_clear(KEY_SEARCH);
+			break;
+		case 0x223:
+			samsung_kbd_mouse_map_key_clear(KEY_HOMEPAGE);
+			break;
+		/* RECENTAPPS */
+		case 0x301:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY1);
+			break;
+		/* APPLICATION */
+		case 0x302:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY2);
+			break;
+		/* Voice search */
+		case 0x305:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY4);
+			break;
+		/* QPANEL on/off */
+		case 0x306:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY5);
+			break;
+		/* SIP on/off */
+		case 0x307:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY3);
+			break;
+		/* LANG */
+		case 0x308:
+			samsung_kbd_mouse_map_key_clear(KEY_LANGUAGE);
+			break;
+		case 0x30a:
+			samsung_kbd_mouse_map_key_clear(KEY_BRIGHTNESSDOWN);
+			break;
+		case 0x070:
+			samsung_kbd_mouse_map_key_clear(KEY_BRIGHTNESSDOWN);
+			break;
+		case 0x30b:
+			samsung_kbd_mouse_map_key_clear(KEY_BRIGHTNESSUP);
+			break;
+		case 0x06f:
+			samsung_kbd_mouse_map_key_clear(KEY_BRIGHTNESSUP);
+			break;
+		/* S-Finder */
+		case 0x304:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY7);
+			break;
+		/* Screen Capture */
+		case 0x303:
+			samsung_kbd_mouse_map_key_clear(KEY_SYSRQ);
+			break;
+		/* Multi Window */
+		case 0x309:
+			samsung_kbd_mouse_map_key_clear(BTN_TRIGGER_HAPPY9);
+			break;
+		/* HotKey App 1 */
+		case 0x071:
+			samsung_kbd_mouse_map_key_clear(0x2f5);
+			break;
+		/* HotKey App 2 */
+		case 0x072:
+			samsung_kbd_mouse_map_key_clear(0x2f6);
+			break;
+		/* HotKey App 3 */
+		case 0x073:
+			samsung_kbd_mouse_map_key_clear(0x2f7);
+			break;
+		/* Dex */
+		case 0x06e:
+			samsung_kbd_mouse_map_key_clear(0x2bd);
+			break;
+		default:
+			return 0;
+		}
+	}
+
+	return 1;
+}
+
 static __u8 *samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 	unsigned int *rsize)
 {
@@ -372,6 +495,12 @@ static int samsung_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 	else if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_ACTIONMOUSE)
 		ret = samsung_actionmouse_input_mapping(hdev,
 			hi, field, usage, bit, max);
+	else if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_UNIVERSAL_KBD)
+		ret = samsung_universal_kbd_input_mapping(hdev,
+			hi, field, usage, bit, max);
+	else if (hdev->product == USB_DEVICE_ID_SAMSUNG_WIRELESS_MULTI_HOGP_KBD)
+		ret = samsung_universal_kbd_input_mapping(hdev,
+			hi, field, usage, bit, max);
 
 	return ret;
 }
@@ -417,6 +546,8 @@ static const struct hid_device_id samsung_devices[] = {
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_GAMEPAD) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_ACTIONMOUSE) },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_UNIVERSAL_KBD) },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SAMSUNG_ELECTRONICS, USB_DEVICE_ID_SAMSUNG_WIRELESS_MULTI_HOGP_KBD) },
 	{ }
 };
 MODULE_DEVICE_TABLE(hid, samsung_devices);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver
  2024-01-25  4:36 ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Sandeep C S
                     ` (5 preceding siblings ...)
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 6/6] HID: Samsung : Add Samsung wireless bookcover and universal keyboard support Sandeep C S
@ 2024-01-25  8:24   ` Jiri Kosina
  2024-01-25  9:39     ` sandeep.cs
  2024-01-25  9:41     ` sandeep.cs
  6 siblings, 2 replies; 11+ messages in thread
From: Jiri Kosina @ 2024-01-25  8:24 UTC (permalink / raw)
  To: Sandeep C S
  Cc: Benjamin Tissoires, gaudium.lee, ih0923.kim, suhyun_.kim,
	jitender.s21, junwan.cho, linux-input, linux-kernel

On Thu, 25 Jan 2024, Sandeep C S wrote:

> Dear Jiri & Team,
> 
> I hope this email finds you well.  As per the review comments given by 
> Mr. Jiri and Mr. Joe Perches in our last converstaion over mail. We have 
> incorporated the feedback on our driver. Please check this set of series 
> and help us to improve samsung driver.
> 
> As of today, Opensource kernel Samsung driver only supports USB HID 
> devices and do not have support for Bluetooth HID devices. Samsung would 
> like to improve the samsung driver and extend it's support for bluetooth 
> devices as well.
> 
> Summary of changes in Samsung driver:
>  1. Add support for below bluetooth devices
> 
> 	Samsung wireless Keyboard
> 	Samsung wireless GamePad
> 	Samsung Wireless Action Mouse
> 	Samsung Wireless Book Cover
> 	Samsung Wireless Universal Keyboard
> 	Samsung Wireless HOGP Keyboard
>  2. Add support for Special key processing on each of the above devices.

I have updated the changelogs so that they are up to the subsystem 
standards (please check the git tree and try to adhere to similar format 
for your next submissions), and applied, thanks for the patches!

-- 
Jiri Kosina
SUSE Labs


^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver
  2024-01-25  8:24   ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Jiri Kosina
@ 2024-01-25  9:39     ` sandeep.cs
  2024-01-25  9:41     ` sandeep.cs
  1 sibling, 0 replies; 11+ messages in thread
From: sandeep.cs @ 2024-01-25  9:39 UTC (permalink / raw)
  To: 'Jiri Kosina'
  Cc: 'Benjamin Tissoires', gaudium.lee, ih0923.kim,
	suhyun_.kim, jitender.s21, junwan.cho, linux-input, linux-kernel

>> Dear Jiri & Team,
>>
>> I hope this email finds you well.  As per the review comments given by
>> Mr. Jiri and Mr. Joe Perches in our last converstaion over mail. We
>> have incorporated the feedback on our driver. Please check this set of
>> series and help us to improve samsung driver.
>>
>> As of today, Opensource kernel Samsung driver only supports USB HID
>> devices and do not have support for Bluetooth HID devices. Samsung
>> would like to improve the samsung driver and extend it's support for
>> bluetooth devices as well.
>>
>> Summary of changes in Samsung driver:
>>  1. Add support for below bluetooth devices
>>
>> 	Samsung wireless Keyboard
>> 	Samsung wireless GamePad
>> 	Samsung Wireless Action Mouse
>> 	Samsung Wireless Book Cover
>> 	Samsung Wireless Universal Keyboard
>> 	Samsung Wireless HOGP Keyboard
>>  2. Add support for Special key processing on each of the above devices.
>
>I have updated the changelogs so that they are up to the subsystem
standards
>(please check the git tree and try to adhere to similar format for your
next
>submissions), and applied, thanks for the patches!

Thank you for accepting our changes and for your feedback.
We will make sure to adhere to the subsystem standard for future
submissions.

Thanks & regards
Sandeep C S



^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver
  2024-01-25  8:24   ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Jiri Kosina
  2024-01-25  9:39     ` sandeep.cs
@ 2024-01-25  9:41     ` sandeep.cs
  1 sibling, 0 replies; 11+ messages in thread
From: sandeep.cs @ 2024-01-25  9:41 UTC (permalink / raw)
  To: 'Jiri Kosina'
  Cc: 'Benjamin Tissoires', gaudium.lee, ih0923.kim,
	suhyun_.kim, jitender.s21, junwan.cho, linux-input, linux-kernel

>On Thu, 25 Jan 2024, Sandeep C S wrote:
>
>> Dear Jiri & Team,
>>
>> I hope this email finds you well.  As per the review comments given by
>> Mr. Jiri and Mr. Joe Perches in our last converstaion over mail. We
>> have incorporated the feedback on our driver. Please check this set of
>> series and help us to improve samsung driver.
>>
>> As of today, Opensource kernel Samsung driver only supports USB HID
>> devices and do not have support for Bluetooth HID devices. Samsung
>> would like to improve the samsung driver and extend it's support for
>> bluetooth devices as well.
>>
>> Summary of changes in Samsung driver:
>>  1. Add support for below bluetooth devices
>>
>> 	Samsung wireless Keyboard
>> 	Samsung wireless GamePad
>> 	Samsung Wireless Action Mouse
>> 	Samsung Wireless Book Cover
>> 	Samsung Wireless Universal Keyboard
>> 	Samsung Wireless HOGP Keyboard
>>  2. Add support for Special key processing on each of the above devices.
>
>I have updated the changelogs so that they are up to the subsystem
standards
>(please check the git tree and try to adhere to similar format for your
next
>submissions), and applied, thanks for the patches!
>
>--
>Jiri Kosina
>SUSE Labs

Thank you for accepting our changes! We will make sure follow the same
format for future submissions as well.

Thanks & regards
Sandeep C S



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [HID Patchsets for Samsung driver v4 2/6] HID: Samsung : Fix the checkpatch complain. Rewritten code using memcmp where applicable.
  2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 2/6] HID: Samsung : Fix the checkpatch complain. Rewritten code using memcmp where applicable Sandeep C S
@ 2024-01-25 21:54     ` Joe Perches
  0 siblings, 0 replies; 11+ messages in thread
From: Joe Perches @ 2024-01-25 21:54 UTC (permalink / raw)
  To: Sandeep C S, Jiri Kosina, Benjamin Tissoires
  Cc: gaudium.lee, ih0923.kim, suhyun_.kim, jitender.s21, junwan.cho,
	linux-input, linux-kernel

On Thu, 2024-01-25 at 10:06 +0530, Sandeep C S wrote:
> Resolved warnings found by checkpatch.pl script.
[]
> diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c
> @@ -107,17 +99,39 @@ static int samsung_kbd_mouse_input_mapping(struct hid_device *hdev,
>  
>  	switch (usage->hid & HID_USAGE) {
>  	/* report 2 */
> -	case 0x183: samsung_kbd_mouse_map_key_clear(KEY_MEDIA); break;
> -	case 0x195: samsung_kbd_mouse_map_key_clear(KEY_EMAIL);	break;
> -	case 0x196: samsung_kbd_mouse_map_key_clear(KEY_CALC); break;
> -	case 0x197: samsung_kbd_mouse_map_key_clear(KEY_COMPUTER); break;
> -	case 0x22b: samsung_kbd_mouse_map_key_clear(KEY_SEARCH); break;
> -	case 0x22c: samsung_kbd_mouse_map_key_clear(KEY_WWW); break;
> -	case 0x22d: samsung_kbd_mouse_map_key_clear(KEY_BACK); break;
> -	case 0x22e: samsung_kbd_mouse_map_key_clear(KEY_FORWARD); break;
> -	case 0x22f: samsung_kbd_mouse_map_key_clear(KEY_FAVORITES); break;
> -	case 0x230: samsung_kbd_mouse_map_key_clear(KEY_REFRESH); break;
> -	case 0x231: samsung_kbd_mouse_map_key_clear(KEY_STOP); break;


It's rather smaller code to remove the call duplication and use
a static const struct and for loop as suggested here:

https://lore.kernel.org/lkml/10aeef4ddd523b85ab34327bf384119d0d4b6567.camel@perches.com/


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-01-25 22:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CGME20240125043646epcas5p1d599fecff0fc37926295fc5260a80682@epcas5p1.samsung.com>
2024-01-25  4:36 ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Sandeep C S
2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 1/6] HID Samsung : Broaden device compatibility in samsung driver Sandeep C S
2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 2/6] HID: Samsung : Fix the checkpatch complain. Rewritten code using memcmp where applicable Sandeep C S
2024-01-25 21:54     ` Joe Perches
2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 3/6] HID: Samsung : Add Samsung wireless keyboard support Sandeep C S
2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 4/6] HID: Samsung : Add Samsung wireless gamepad support Sandeep C S
2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 5/6] HID: Samsung : Add Samsung wireless action mouse support Sandeep C S
2024-01-25  4:36   ` [HID Patchsets for Samsung driver v4 6/6] HID: Samsung : Add Samsung wireless bookcover and universal keyboard support Sandeep C S
2024-01-25  8:24   ` [HID Patchsets for Samsung driver v4 0/6] Patchsets for Samsung driver Jiri Kosina
2024-01-25  9:39     ` sandeep.cs
2024-01-25  9:41     ` sandeep.cs

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox