--- v13
+++ v15
@@ -16,10 +16,10 @@
2 files changed, 55 insertions(+), 13 deletions(-)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 5f353655a47bf..6a5c43c37976b 100644
+index 5420f288d2aa0..fe1c0cbedfaac 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
-@@ -910,6 +910,7 @@
+@@ -921,6 +921,7 @@
#define USB_DEVICE_ID_NINTENDO_JOYCONL 0x2006
#define USB_DEVICE_ID_NINTENDO_JOYCONR 0x2007
#define USB_DEVICE_ID_NINTENDO_PROCON 0x2009
@@ -28,7 +28,7 @@
#define USB_VENDOR_ID_NOVATEK 0x0603
#define USB_DEVICE_ID_NOVATEK_PCT 0x0600
diff --git a/drivers/hid/hid-nintendo.c b/drivers/hid/hid-nintendo.c
-index c49ec001212bf..62231e50ca020 100644
+index 4b72e92e0ff4d..dcfb80d829713 100644
--- a/drivers/hid/hid-nintendo.c
+++ b/drivers/hid/hid-nintendo.c
@@ -233,6 +233,13 @@ enum joycon_ctlr_state {
@@ -45,7 +45,7 @@
struct joycon_stick_cal {
s32 max;
s32 min;
-@@ -321,6 +328,7 @@ struct joycon_ctlr {
+@@ -328,6 +335,7 @@ struct joycon_ctlr {
spinlock_t lock;
u8 mac_addr[6];
char *mac_addr_str;
@@ -53,7 +53,7 @@
/* The following members are used for synchronous sends/receives */
enum joycon_msg_type msg_type;
-@@ -359,6 +367,26 @@ struct joycon_ctlr {
+@@ -366,6 +374,26 @@ struct joycon_ctlr {
u16 rumble_rh_freq;
};
@@ -80,7 +80,7 @@
static int __joycon_hid_send(struct hid_device *hdev, u8 *data, size_t len)
{
u8 *buf;
-@@ -655,7 +683,6 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
+@@ -662,7 +690,6 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
unsigned long flags;
u8 tmp;
u32 btns;
@@ -88,7 +88,7 @@
unsigned long msecs = jiffies_to_msecs(jiffies);
spin_lock_irqsave(&ctlr->lock, flags);
-@@ -694,7 +721,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
+@@ -701,7 +728,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
/* Parse the buttons and sticks */
btns = hid_field_extract(ctlr->hdev, rep->button_status, 0, 24);
@@ -97,7 +97,7 @@
u16 raw_x;
u16 raw_y;
s32 x;
-@@ -718,7 +745,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
+@@ -725,7 +752,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
input_report_key(dev, BTN_THUMBL, btns & JC_BTN_LSTICK);
input_report_key(dev, BTN_Z, btns & JC_BTN_CAP);
@@ -106,7 +106,7 @@
/* Report the S buttons as the non-existent triggers */
input_report_key(dev, BTN_TR, btns & JC_BTN_SL_L);
input_report_key(dev, BTN_TR2, btns & JC_BTN_SR_L);
-@@ -750,7 +777,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
+@@ -757,7 +784,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
input_report_abs(dev, ABS_HAT0Y, haty);
}
}
@@ -115,7 +115,7 @@
u16 raw_x;
u16 raw_y;
s32 x;
-@@ -770,7 +797,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
+@@ -777,7 +804,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
/* report buttons */
input_report_key(dev, BTN_TR, btns & JC_BTN_R);
input_report_key(dev, BTN_TR2, btns & JC_BTN_ZR);
@@ -124,7 +124,7 @@
/* Report the S buttons as the non-existent triggers */
input_report_key(dev, BTN_TL, btns & JC_BTN_SL_R);
input_report_key(dev, BTN_TL2, btns & JC_BTN_SR_R);
-@@ -989,6 +1016,12 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
+@@ -996,6 +1023,12 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
case USB_DEVICE_ID_NINTENDO_PROCON:
name = "Nintendo Switch Pro Controller";
break;
@@ -137,7 +137,7 @@
case USB_DEVICE_ID_NINTENDO_JOYCONL:
name = "Nintendo Switch Left Joy-Con";
break;
-@@ -1011,9 +1044,8 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
+@@ -1018,9 +1051,8 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
ctlr->input->name = name;
input_set_drvdata(ctlr->input, ctlr);
@@ -148,7 +148,7 @@
input_set_abs_params(ctlr->input, ABS_X,
-JC_MAX_STICK_MAG, JC_MAX_STICK_MAG,
JC_STICK_FUZZ, JC_STICK_FLAT);
-@@ -1039,7 +1071,7 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
+@@ -1046,7 +1078,7 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
JC_DPAD_FUZZ, JC_DPAD_FLAT);
}
}
@@ -157,16 +157,16 @@
input_set_abs_params(ctlr->input, ABS_RX,
-JC_MAX_STICK_MAG, JC_MAX_STICK_MAG,
JC_STICK_FUZZ, JC_STICK_FLAT);
-@@ -1207,7 +1239,7 @@ static int joycon_leds_create(struct joycon_ctlr *ctlr)
+@@ -1209,7 +1241,7 @@ static int joycon_leds_create(struct joycon_ctlr *ctlr)
mutex_unlock(&joycon_input_num_mutex);
/* configure the home LED */
- if (ctlr->hdev->product != USB_DEVICE_ID_NINTENDO_JOYCONL) {
+ if (jc_type_has_right(ctlr)) {
- name = devm_kasprintf(dev, GFP_KERNEL, "%s:%s", d_name, "home");
- if (!name)
- return -ENOMEM;
-@@ -1320,7 +1352,7 @@ static int joycon_power_supply_create(struct joycon_ctlr *ctlr)
+ name = devm_kasprintf(dev, GFP_KERNEL, "%s:%s:%s",
+ d_name,
+ "blue",
+@@ -1325,7 +1357,7 @@ static int joycon_power_supply_create(struct joycon_ctlr *ctlr)
return power_supply_powers(ctlr->battery, &hdev->dev);
}
@@ -175,7 +175,7 @@
{
int ret;
int i;
-@@ -1352,6 +1384,9 @@ static int joycon_read_mac(struct joycon_ctlr *ctlr)
+@@ -1357,6 +1389,9 @@ static int joycon_read_mac(struct joycon_ctlr *ctlr)
return -ENOMEM;
hid_info(ctlr->hdev, "controller MAC = %s\n", ctlr->mac_addr_str);
@@ -185,7 +185,7 @@
return 0;
}
-@@ -1485,7 +1520,7 @@ static int nintendo_hid_probe(struct hid_device *hdev,
+@@ -1490,7 +1525,7 @@ static int nintendo_hid_probe(struct hid_device *hdev,
/* Initialize the controller */
mutex_lock(&ctlr->output_mutex);
/* if handshake command fails, assume ble pro controller */
@@ -194,7 +194,7 @@
!joycon_send_usb(ctlr, JC_USB_CMD_HANDSHAKE, HZ)) {
hid_dbg(hdev, "detected USB controller\n");
/* set baudrate for improved latency */
-@@ -1505,6 +1540,10 @@ static int nintendo_hid_probe(struct hid_device *hdev,
+@@ -1510,6 +1545,10 @@ static int nintendo_hid_probe(struct hid_device *hdev,
* This doesn't send a response, so ignore the timeout.
*/
joycon_send_usb(ctlr, JC_USB_CMD_NO_TIMEOUT, HZ/10);
@@ -205,7 +205,7 @@
}
/* get controller calibration data, and parse it */
-@@ -1531,9 +1570,9 @@ static int nintendo_hid_probe(struct hid_device *hdev,
+@@ -1536,9 +1575,9 @@ static int nintendo_hid_probe(struct hid_device *hdev,
goto err_mutex;
}
@@ -217,7 +217,7 @@
ret);
goto err_mutex;
}
-@@ -1601,6 +1640,8 @@ static const struct hid_device_id nintendo_hid_devices[] = {
+@@ -1606,6 +1645,8 @@ static const struct hid_device_id nintendo_hid_devices[] = {
USB_DEVICE_ID_NINTENDO_PROCON) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO,
USB_DEVICE_ID_NINTENDO_PROCON) },
@@ -227,5 +227,5 @@
USB_DEVICE_ID_NINTENDO_JOYCONL) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO,
--
-2.31.1
-
+2.33.0
+