From b787053c2dea0dbe20b809ac9ad62847649a4be7 Mon Sep 17 00:00:00 2001 From: CTCaer Date: Fri, 1 Jul 2022 13:47:41 +0300 Subject: [PATCH] bdk: joycon: fixup hori pads For Hori game pads: - Restore the no power down fix - Revert RTS signal back to active high --- bdk/input/joycon.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bdk/input/joycon.c b/bdk/input/joycon.c index 76b7d58..48d06d5 100644 --- a/bdk/input/joycon.c +++ b/bdk/input/joycon.c @@ -633,7 +633,8 @@ static void _jc_parse_wired_hid(joycon_ctxt_t *jc, const u8* packet, u32 size) jc_gamepad.conn_l = jc_l.connected; jc_gamepad.conn_r = jc_r.connected; - _jc_charging_decider(hid_pkt->batt_info, jc->uart); + if (hid_pkt->cmd == JC_HID_INPUT_RPT) + _jc_charging_decider(hid_pkt->batt_info, jc->uart); break; case JC_HID_SUBMCD_RPT: if (hid_pkt->subcmd == JC_HID_SUBCMD_SPI_READ) @@ -1088,6 +1089,8 @@ static void _jc_init_conn(joycon_ctxt_t *jc) msleep(2); _jc_rcv_pkt(jc); } + else // Hori. Unset RTS inversion. + uart_invert(jc->uart, false, UART_INVERT_RTS); } else { @@ -1127,7 +1130,7 @@ static void _jc_init_conn(joycon_ctxt_t *jc) out: jc->last_received_time = get_tmr_ms(); - if (!jc->sio_mode && jc->connected) + if (!jc->sio_mode && jc->connected && !(jc->type & JC_ID_HORI)) _jc_power_supply(jc->uart, false); } }