Commit 2bbe17ae authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull HID fixes from Jiri Kosina:

 - memory leak fix for Wacom driver (Ping Cheng)

 - various trivial small fixes, cleanups and device ID additions

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid:
  HID: logitech-hidpp: Add product ID for MX Ergo in Bluetooth mode
  HID: Ignore battery for Elan touchscreen on ASUS UX550
  HID: logitech-dj: add the G602 receiver
  HID: wiimote: remove h from printk format specifier
  HID: uclogic: remove h from printk format specifier
  HID: sony: select CONFIG_CRC32
  HID: sfh: fix address space confusion
  HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device
  HID: wacom: Fix memory leakage caused by kfifo_alloc
parents 65f0d241 7de843db
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -899,6 +899,7 @@ config HID_SONY
	depends on NEW_LEDS
	depends on LEDS_CLASS
	select POWER_SUPPLY
	select CRC32
	help
	Support for

+4 −4
Original line number Diff line number Diff line
@@ -154,7 +154,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)

	for (i = 0; i < cl_data->num_hid_devices; i++) {
		cl_data->sensor_virt_addr[i] = dma_alloc_coherent(dev, sizeof(int) * 8,
								  &cl_data->sensor_phys_addr[i],
								  &cl_data->sensor_dma_addr[i],
								  GFP_KERNEL);
		cl_data->sensor_sts[i] = 0;
		cl_data->sensor_requested_cnt[i] = 0;
@@ -187,7 +187,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
		}
		info.period = msecs_to_jiffies(AMD_SFH_IDLE_LOOP);
		info.sensor_idx = cl_idx;
		info.phys_address = cl_data->sensor_phys_addr[i];
		info.dma_address = cl_data->sensor_dma_addr[i];

		cl_data->report_descr[i] = kzalloc(cl_data->report_descr_sz[i], GFP_KERNEL);
		if (!cl_data->report_descr[i]) {
@@ -212,7 +212,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
		if (cl_data->sensor_virt_addr[i]) {
			dma_free_coherent(&privdata->pdev->dev, 8 * sizeof(int),
					  cl_data->sensor_virt_addr[i],
					  cl_data->sensor_phys_addr[i]);
					  cl_data->sensor_dma_addr[i]);
		}
		kfree(cl_data->feature_report[i]);
		kfree(cl_data->input_report[i]);
@@ -238,7 +238,7 @@ int amd_sfh_hid_client_deinit(struct amd_mp2_dev *privdata)
		if (cl_data->sensor_virt_addr[i]) {
			dma_free_coherent(&privdata->pdev->dev, 8 * sizeof(int),
					  cl_data->sensor_virt_addr[i],
					  cl_data->sensor_phys_addr[i]);
					  cl_data->sensor_dma_addr[i]);
		}
	}
	kfree(cl_data);
+1 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ struct amdtp_cl_data {
	int hid_descr_size[MAX_HID_DEVICES];
	phys_addr_t phys_addr_base;
	u32 *sensor_virt_addr[MAX_HID_DEVICES];
	phys_addr_t sensor_phys_addr[MAX_HID_DEVICES];
	dma_addr_t sensor_dma_addr[MAX_HID_DEVICES];
	u32 sensor_sts[MAX_HID_DEVICES];
	u32 sensor_requested_cnt[MAX_HID_DEVICES];
	u8 report_type[MAX_HID_DEVICES];
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ void amd_start_sensor(struct amd_mp2_dev *privdata, struct amd_mp2_sensor_info i
	cmd_param.s.buf_layout = 1;
	cmd_param.s.buf_length = 16;

	writeq(info.phys_address, privdata->mmio + AMD_C2P_MSG2);
	writeq(info.dma_address, privdata->mmio + AMD_C2P_MSG2);
	writel(cmd_param.ul, privdata->mmio + AMD_C2P_MSG1);
	writel(cmd_base.ul, privdata->mmio + AMD_C2P_MSG0);
}
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ struct amd_mp2_dev {
struct amd_mp2_sensor_info {
	u8 sensor_idx;
	u32 period;
	phys_addr_t phys_address;
	dma_addr_t dma_address;
};

void amd_start_sensor(struct amd_mp2_dev *privdata, struct amd_mp2_sensor_info info);
Loading