Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41d2d425 authored by Simon Wood's avatar Simon Wood Committed by Jiri Kosina
Browse files

HID: sony: PS3 Move enable LEDs and Rumble via BT



The LED and Rumble control only function via BT if the full output report
is sent. The large report still functions via USB.

Signed-off-by: default avatarSimon Wood <simon@mungewell.org>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 12e9a6d7
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -902,6 +902,7 @@ struct motion_output_report_02 {
#define DS4_REPORT_0x81_SIZE 7
#define SIXAXIS_REPORT_0xF2_SIZE 17
#define SIXAXIS_REPORT_0xF5_SIZE 8
#define MOTION_REPORT_0x02_SIZE 49

static DEFINE_SPINLOCK(sony_dev_list_lock);
static LIST_HEAD(sony_device_list);
@@ -1746,7 +1747,7 @@ static void motion_state_worker(struct work_struct *work)
	struct motion_output_report_02 *report =
		(struct motion_output_report_02 *)sc->output_report_dmabuf;

	memset(report, 0, sizeof(struct motion_output_report_02));
	memset(report, 0, MOTION_REPORT_0x02_SIZE);

	report->type = 0x02; /* set leds */
	report->r = sc->led_state[0];
@@ -1757,8 +1758,7 @@ static void motion_state_worker(struct work_struct *work)
	report->rumble = max(sc->right, sc->left);
#endif

	hid_hw_output_report(hdev, (__u8 *)report,
			sizeof(struct motion_output_report_02));
	hid_hw_output_report(hdev, (__u8 *)report, MOTION_REPORT_0x02_SIZE);
}

static int sony_allocate_output_report(struct sony_sc *sc)
@@ -1774,8 +1774,7 @@ static int sony_allocate_output_report(struct sony_sc *sc)
		sc->output_report_dmabuf = kmalloc(DS4_REPORT_0x05_SIZE,
						GFP_KERNEL);
	else if (sc->quirks & MOTION_CONTROLLER)
		sc->output_report_dmabuf =
				kmalloc(sizeof(struct motion_output_report_02),
		sc->output_report_dmabuf = kmalloc(MOTION_REPORT_0x02_SIZE,
						GFP_KERNEL);
	else
		return 0;