Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 5 additions & 18 deletions drivers/hid/hid-nintendo.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ struct joycon_input_report {

#define JC_MAX_RESP_SIZE (sizeof(struct joycon_input_report) + 35)
#define JC_RUMBLE_DATA_SIZE 8
#define JC_RUMBLE_QUEUE_SIZE 8
#define JC_RUMBLE_QUEUE_SIZE 4

static const char * const joycon_player_led_names[] = {
LED_FUNCTION_PLAYER1,
Expand Down Expand Up @@ -468,8 +468,7 @@ struct joycon_ctlr {
u16 rumble_lh_freq;
u16 rumble_rl_freq;
u16 rumble_rh_freq;
unsigned short rumble_zero_countdown;


/* imu */
struct input_dev *imu_input;
bool imu_first_packet_received; /* helps in initiating timestamp */
Expand Down Expand Up @@ -548,10 +547,10 @@ static void joycon_wait_for_input_report(struct joycon_ctlr *ctlr)
#define JC_INPUT_REPORT_MIN_DELTA 8
#define JC_INPUT_REPORT_MAX_DELTA 17
#define JC_SUBCMD_TX_OFFSET_MS 4
#define JC_SUBCMD_VALID_DELTA_REQ 3
#define JC_SUBCMD_VALID_DELTA_REQ 0
#define JC_SUBCMD_RATE_MAX_ATTEMPTS 500
#define JC_SUBCMD_RATE_LIMITER_USB_MS 20
#define JC_SUBCMD_RATE_LIMITER_BT_MS 60
#define JC_SUBCMD_RATE_LIMITER_BT_MS 50
#define JC_SUBCMD_RATE_LIMITER_MS(ctlr) ((ctlr)->hdev->bus == BUS_USB ? JC_SUBCMD_RATE_LIMITER_USB_MS : JC_SUBCMD_RATE_LIMITER_BT_MS)
static void joycon_enforce_subcmd_rate(struct joycon_ctlr *ctlr)
{
Expand Down Expand Up @@ -1266,16 +1265,7 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
if (IS_ENABLED(CONFIG_NINTENDO_FF) && rep->vibrator_report &&
ctlr->ctlr_state != JOYCON_CTLR_STATE_REMOVED &&
(msecs - ctlr->rumble_msecs) >= JC_RUMBLE_PERIOD_MS &&
(ctlr->rumble_queue_head != ctlr->rumble_queue_tail ||
ctlr->rumble_zero_countdown > 0)) {
/*
* When this value reaches 0, we know we've sent multiple
* packets to the controller instructing it to disable rumble.
* We can safely stop sending periodic rumble packets until the
* next ff effect.
*/
if (ctlr->rumble_zero_countdown > 0)
ctlr->rumble_zero_countdown--;
ctlr->rumble_queue_head != ctlr->rumble_queue_tail) {
queue_work(ctlr->rumble_queue, &ctlr->rumble_worker);
}

Expand Down Expand Up @@ -1597,9 +1587,6 @@ static int joycon_set_rumble(struct joycon_ctlr *ctlr, u16 amp_r, u16 amp_l,
freq_r_high = ctlr->rumble_rh_freq;
freq_l_low = ctlr->rumble_ll_freq;
freq_l_high = ctlr->rumble_lh_freq;
/* limit number of silent rumble packets to reduce traffic */
if (amp_l != 0 || amp_r != 0)
ctlr->rumble_zero_countdown = JC_RUMBLE_ZERO_AMP_PKT_CNT;
spin_unlock_irqrestore(&ctlr->lock, flags);

/* right joy-con */
Expand Down