diff options
Diffstat (limited to 'drivers/hid/hid-input.c')
| -rw-r--r-- | drivers/hid/hid-input.c | 24 | 
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 7a0d2e4661a..6c03dcc5760 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -199,11 +199,11 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel  		case HID_GD_MOUSE:  		case HID_GD_POINTER:  code += 0x110; break;  		case HID_GD_JOYSTICK: -				      if (code <= 0xf) -					      code += BTN_JOYSTICK; -				      else -					      code += BTN_TRIGGER_HAPPY; -				      break; +				if (code <= 0xf) +					code += BTN_JOYSTICK; +				else +					code += BTN_TRIGGER_HAPPY; +				break;  		case HID_GD_GAMEPAD:  code += 0x130; break;  		default:  			switch (field->physical) { @@ -301,6 +301,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel  	case HID_UP_DIGITIZER:  		switch (usage->hid & 0xff) { +		case 0x00: /* Undefined */ +			goto ignore; +  		case 0x30: /* TipPressure */  			if (!test_bit(BTN_TOUCH, input->keybit)) {  				device->quirks |= HID_QUIRK_NOTOUCH; @@ -480,7 +483,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel  	case HID_UP_LOGIVENDOR:  		goto ignore; -	 +  	case HID_UP_PID:  		switch (usage->hid & HID_USAGE) {  		case 0xa4: map_key_clear(BTN_DEAD);	break; @@ -534,6 +537,9 @@ mapped:  			input_set_abs_params(input, usage->code, a, b, (b - a) >> 8, (b - a) >> 4);  		else	input_set_abs_params(input, usage->code, a, b, 0, 0); +		/* use a larger default input buffer for MT devices */ +		if (usage->code == ABS_MT_POSITION_X && input->hint_events_per_packet == 0) +			input_set_events_per_packet(input, 60);  	}  	if (usage->type == EV_ABS && @@ -586,9 +592,9 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct  			hat_dir = (value - usage->hat_min) * 8 / (usage->hat_max - usage->hat_min + 1) + 1;  		if (hat_dir < 0 || hat_dir > 8) hat_dir = 0;  		input_event(input, usage->type, usage->code    , hid_hat_to_axis[hat_dir].x); -                input_event(input, usage->type, usage->code + 1, hid_hat_to_axis[hat_dir].y); -                return; -        } +		input_event(input, usage->type, usage->code + 1, hid_hat_to_axis[hat_dir].y); +		return; +	}  	if (usage->hid == (HID_UP_DIGITIZER | 0x003c)) { /* Invert */  		*quirks = value ? (*quirks | HID_QUIRK_INVERT) : (*quirks & ~HID_QUIRK_INVERT);  |