All of lore.kernel.org
 help / color / mirror / Atom feed
From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@suse.de, linux-kernel@vger.kernel.org,
	devel@linuxdriverproject.org, virtualization@lists.osdl.org,
	ohering@suse.com
Cc: "K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>
Subject: [PATCH 02/24] Staging: hv: mousevsc: Get rid of the struct input_device_context
Date: Thu, 29 Sep 2011 11:54:42 -0700	[thread overview]
Message-ID: <1317322504-9788-2-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1317322504-9788-1-git-send-email-kys@microsoft.com>

The state maintained in struct input_device_context can easily be included
in the struct mousevsc_dev structure. Simplify the code by consolidating
the state.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
---
 drivers/staging/hv/hv_mouse.c |   51 ++++++++++------------------------------
 1 files changed, 13 insertions(+), 38 deletions(-)

diff --git a/drivers/staging/hv/hv_mouse.c b/drivers/staging/hv/hv_mouse.c
index 44a2b23..69eb00e 100644
--- a/drivers/staging/hv/hv_mouse.c
+++ b/drivers/staging/hv/hv_mouse.c
@@ -172,15 +172,11 @@ struct mousevsc_dev {
 	unsigned char		*report_desc;
 	u32			report_desc_size;
 	struct hv_input_dev_info hid_dev_info;
-};
-
-struct input_device_context {
-	struct hv_device	*device_ctx;
-	struct hid_device	*hid_device;
-	struct hv_input_dev_info device_info;
 	int			connected;
+	struct hid_device       *hid_device;
 };
 
+
 static struct mousevsc_dev *alloc_input_device(struct hv_device *device)
 {
 	struct mousevsc_dev *input_dev;
@@ -402,7 +398,6 @@ static void mousevsc_on_receive_input_report(struct mousevsc_dev *input_device,
 				struct synthhid_input_report *input_report)
 {
 	struct hv_driver *input_drv;
-	struct input_device_context *input_dev_ctx;
 
 	if (!input_device->init_complete) {
 		pr_info("Initialization incomplete...ignoring input_report msg");
@@ -411,9 +406,8 @@ static void mousevsc_on_receive_input_report(struct mousevsc_dev *input_device,
 
 	input_drv = drv_to_hv_drv(input_device->device->device.driver);
 
-	input_dev_ctx = dev_get_drvdata(&input_device->device->device);
 
-	hid_input_report(input_dev_ctx->hid_device,
+	hid_input_report(input_device->hid_device,
 			      HID_INPUT_REPORT, input_report->buffer, input_report->header.size, 1);
 
 }
@@ -662,9 +656,8 @@ static void mousevsc_hid_close(struct hid_device *hid)
 
 static void reportdesc_callback(struct hv_device *dev, void *packet, u32 len)
 {
-	struct input_device_context *input_device_ctx =
-		dev_get_drvdata(&dev->device);
 	struct hid_device *hid_dev;
+	struct mousevsc_dev *input_device = hv_get_drvdata(dev);
 
 	/* hid_debug = -1; */
 	hid_dev = kmalloc(sizeof(struct hid_device), GFP_KERNEL);
@@ -681,9 +674,9 @@ static void reportdesc_callback(struct hv_device *dev, void *packet, u32 len)
 		hid_dev->ll_driver->close = mousevsc_hid_close;
 
 		hid_dev->bus = BUS_VIRTUAL;
-		hid_dev->vendor = input_device_ctx->device_info.vendor;
-		hid_dev->product = input_device_ctx->device_info.product;
-		hid_dev->version = input_device_ctx->device_info.version;
+		hid_dev->vendor = input_device->hid_dev_info.vendor;
+		hid_dev->product = input_device->hid_dev_info.product;
+		hid_dev->version = input_device->hid_dev_info.version;
 		hid_dev->dev = dev->device;
 
 		sprintf(hid_dev->name, "%s",
@@ -695,7 +688,7 @@ static void reportdesc_callback(struct hv_device *dev, void *packet, u32 len)
 		if (!hidinput_connect(hid_dev, 0)) {
 			hid_dev->claimed |= HID_CLAIMED_INPUT;
 
-			input_device_ctx->connected = 1;
+			input_device->connected = 1;
 
 			DPRINT_INFO(INPUTVSC_DRV,
 				     "HID device claimed by input\n");
@@ -707,7 +700,7 @@ static void reportdesc_callback(struct hv_device *dev, void *packet, u32 len)
 				    "input or hiddev\n");
 		}
 
-		input_device_ctx->hid_device = hid_dev;
+		input_device->hid_device = hid_dev;
 	}
 
 	kfree(hid_dev);
@@ -719,8 +712,6 @@ static int mousevsc_on_device_add(struct hv_device *device,
 	int ret = 0;
 	struct mousevsc_dev *input_dev;
 	struct hv_driver *input_drv;
-	struct hv_input_dev_info dev_info;
-	struct input_device_context *input_device_ctx;
 
 	input_dev = alloc_input_device(device);
 
@@ -761,14 +752,7 @@ static int mousevsc_on_device_add(struct hv_device *device,
 
 	input_drv = drv_to_hv_drv(input_dev->device->device.driver);
 
-	dev_info.vendor = input_dev->hid_dev_info.vendor;
-	dev_info.product = input_dev->hid_dev_info.product;
-	dev_info.version = input_dev->hid_dev_info.version;
 
-	/* Send the device info back up */
-	input_device_ctx = dev_get_drvdata(&device->device);
-	memcpy(&input_device_ctx->device_info, &dev_info,
-	       sizeof(struct hv_input_dev_info));
 
 	/* Send the report desc back up */
 	/* workaround SA-167 */
@@ -828,12 +812,6 @@ static int mousevsc_probe(struct hv_device *dev,
 {
 	int ret = 0;
 
-	struct input_device_context *input_dev_ctx;
-
-	input_dev_ctx = kmalloc(sizeof(struct input_device_context),
-				GFP_KERNEL);
-
-	dev_set_drvdata(&dev->device, input_dev_ctx);
 
 	/* Call to the vsc driver to add the device */
 	ret = mousevsc_on_device_add(dev, NULL);
@@ -849,13 +827,12 @@ static int mousevsc_probe(struct hv_device *dev,
 
 static int mousevsc_remove(struct hv_device *dev)
 {
-	struct input_device_context *input_dev_ctx;
+	struct mousevsc_dev *input_dev = hv_get_drvdata(dev);
 	int ret;
 
-	input_dev_ctx = dev_get_drvdata(&dev->device);
-	if (input_dev_ctx->connected) {
-		hidinput_disconnect(input_dev_ctx->hid_device);
-		input_dev_ctx->connected = 0;
+	if (input_dev->connected) {
+		hidinput_disconnect(input_dev->hid_device);
+		input_dev->connected = 0;
 	}
 
 	/*
@@ -868,8 +845,6 @@ static int mousevsc_remove(struct hv_device *dev)
 			   "unable to remove vsc device (ret %d)", ret);
 	}
 
-	kfree(input_dev_ctx);
-
 	return ret;
 }
 
-- 
1.7.4.1


  reply	other threads:[~2011-09-29 18:32 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-29 18:54 [PATCH 0000/0024] Staging: hv: mousevsc cleanup K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 01/24] Staging: hv: mousevsc: Fixup struct hv_input_dev_info K. Y. Srinivasan
2011-09-29 18:54   ` K. Y. Srinivasan [this message]
2011-09-29 18:54   ` [PATCH 03/24] Staging: hv: mousevsc: Fixup some bogus WARN_ON() calls K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 04/24] Staging: hv: mousevsc: Change the allocation flags to reflect interrupt context K. Y. Srinivasan
2011-09-29 18:54     ` K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 05/24] Staging: hv: mousevsc: Handle the case where we may get bogus report desc size K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 06/24] Staging: hv: mousevsc: Correctly initialize the header size K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 07/24] Staging: hv: mousevsc: Use completion primitive to synchronize K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 08/24] Staging: hv: mousevsc: Cleanup and properly implement reportdesc_callback() K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 09/24] Staging: hv: mousevsc: Get rid of unnecessary DPRINT calls K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 10/24] Staging: hv: mousevsc: Cleanup error handling K. Y. Srinivasan
2011-09-29 18:54     ` K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 11/24] Staging: hv: mousevsc: Get rid of unnecessary pr_* calls K. Y. Srinivasan
2011-09-29 18:54     ` K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 12/24] Staging: hv: mousevsc: Free allocated memory in free_input_device() K. Y. Srinivasan
2011-09-29 18:54     ` K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 13/24] Staging: hv: mousevsc: Get rid of the unused state: num_outstanding_req K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 14/24] Staging: hv: mousevsc: Cleanup alloc_input_device() K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 15/24] Staging: hv: mousevsc: Get rid of mousevsc_on_send_completion() K. Y. Srinivasan
2011-09-29 18:54     ` K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 16/24] Staging: hv: mousevsc: Cleanup mousevsc_connect_to_vsp() K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 17/24] Staging: hv: mousevsc: Get rid of mousevsc_on_device_remove() by inlining code K. Y. Srinivasan
2011-09-29 18:54     ` K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 18/24] Staging: hv: mousevsc: Now cleanup mousevsc_remove() K. Y. Srinivasan
2011-09-29 18:54   ` [PATCH 19/24] Staging: hv: mousevsc: Get rid of ref_count state in struct mousevsc_dev K. Y. Srinivasan
2011-09-29 18:55   ` [PATCH 20/24] Staging: hv: mousevsc: Cleanup camel cased enums K. Y. Srinivasan
2011-09-29 18:55   ` [PATCH 21/24] Staging: hv: mousevsc: Get rid of mousevsc_on_receive_input_report() by inlining K. Y. Srinivasan
2011-09-29 18:55     ` K. Y. Srinivasan
2011-09-29 18:55   ` [PATCH 22/24] Staging: hv: mousevsc: Cleanup mousevsc_on_device_add() K. Y. Srinivasan
2011-09-29 18:55   ` [PATCH 23/24] Staging: hv: mousevsc: Enable autoloading of the mouse driver K. Y. Srinivasan
2011-09-29 18:55   ` [PATCH 24/24] Staging: hv: mousevsc: Get rid of unnecessary comments K. Y. Srinivasan
2011-09-29 18:55     ` K. Y. Srinivasan
2011-09-30  0:47   ` [PATCH 01/24] Staging: hv: mousevsc: Fixup struct hv_input_dev_info Greg KH
2011-09-30  1:34     ` KY Srinivasan
2011-09-30  3:02       ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1317322504-9788-2-git-send-email-kys@microsoft.com \
    --to=kys@microsoft.com \
    --cc=devel@linuxdriverproject.org \
    --cc=gregkh@suse.de \
    --cc=haiyangz@microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ohering@suse.com \
    --cc=virtualization@lists.osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.