forked from mirrors/linux
		
	Bluetooth: Implement raw output support for HIDP layer
Implement raw output callback which is used by hidraw to send raw data to the underlying device. Without this patch, the userspace hidraw-based applications can't send output reports to HID Bluetooth devices. Reported-and-tested-by: Brian Gunn <bgunn@solekai.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
		
							parent
							
								
									fed4c2508b
								
							
						
					
					
						commit
						2da31939a4
					
				
					 1 changed files with 9 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -280,6 +280,13 @@ static int hidp_send_report(struct hidp_session *session, struct hid_report *rep
 | 
			
		|||
	return hidp_queue_report(session, buf, rsize);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count)
 | 
			
		||||
{
 | 
			
		||||
	if (hidp_queue_report(hid->driver_data, data, count))
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
	return count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void hidp_idle_timeout(unsigned long arg)
 | 
			
		||||
{
 | 
			
		||||
	struct hidp_session *session = (struct hidp_session *) arg;
 | 
			
		||||
| 
						 | 
				
			
			@ -785,6 +792,8 @@ static int hidp_setup_hid(struct hidp_session *session,
 | 
			
		|||
	hid->dev.parent = hidp_get_device(session);
 | 
			
		||||
	hid->ll_driver = &hidp_hid_driver;
 | 
			
		||||
 | 
			
		||||
	hid->hid_output_raw_report = hidp_output_raw_report;
 | 
			
		||||
 | 
			
		||||
	err = hid_add_device(hid);
 | 
			
		||||
	if (err < 0)
 | 
			
		||||
		goto failed;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue