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, dmitry.torokhov@gmail.com, joe@perches.com
Cc: "K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>
Subject: [PATCH 3/6] Staging: hv: mousevsc: Inline the code for reportdesc_callback()
Date: Tue, 25 Oct 2011 17:19:49 -0700 [thread overview]
Message-ID: <1319588392-9982-3-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1319588392-9982-1-git-send-email-kys@microsoft.com>
Inline the code for reportdesc_callback() as this function is called from
mousevsc_probe(). As part of this, cleanup the code in reportdesc_callback().
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
---
drivers/staging/hv/hv_mouse.c | 93 +++++++++++++++++++++++-----------------
1 files changed, 53 insertions(+), 40 deletions(-)
diff --git a/drivers/staging/hv/hv_mouse.c b/drivers/staging/hv/hv_mouse.c
index 0a5676c..ed071b8 100644
--- a/drivers/staging/hv/hv_mouse.c
+++ b/drivers/staging/hv/hv_mouse.c
@@ -451,54 +451,34 @@ static int mousevsc_hid_open(struct hid_device *hid)
return 0;
}
+static int mousevsc_hid_start(struct hid_device *hid)
+{
+ return 0;
+}
+
static void mousevsc_hid_close(struct hid_device *hid)
{
}
+static void mousevsc_hid_stop(struct hid_device *hid)
+{
+}
+
static struct hid_ll_driver mousevsc_ll_driver = {
.open = mousevsc_hid_open,
.close = mousevsc_hid_close,
+ .start = mousevsc_hid_start,
+ .stop = mousevsc_hid_stop,
};
static struct hid_driver mousevsc_hid_driver;
-static void reportdesc_callback(struct hv_device *dev, void *packet, u32 len)
-{
- struct hid_device *hid_dev;
- struct mousevsc_dev *input_device = hv_get_drvdata(dev);
-
- hid_dev = hid_allocate_device();
- if (IS_ERR(hid_dev))
- return;
-
- hid_dev->ll_driver = &mousevsc_ll_driver;
- hid_dev->driver = &mousevsc_hid_driver;
-
- if (hid_parse_report(hid_dev, packet, len))
- return;
-
- hid_dev->bus = BUS_VIRTUAL;
- 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;
-
- sprintf(hid_dev->name, "%s", "Microsoft Vmbus HID-compliant Mouse");
-
- if (!hidinput_connect(hid_dev, 0)) {
- hid_dev->claimed |= HID_CLAIMED_INPUT;
-
- input_device->connected = true;
-
- }
-
- input_device->hid_device = hid_dev;
-}
-
static int mousevsc_probe(struct hv_device *device,
const struct hv_vmbus_device_id *dev_id)
{
int ret = 0;
struct mousevsc_dev *input_dev;
+ struct hid_device *hid_dev;
input_dev = alloc_input_device(device);
@@ -524,23 +504,56 @@ static int mousevsc_probe(struct hv_device *device,
ret = mousevsc_connect_to_vsp(device);
- if (ret != 0) {
- vmbus_close(device->channel);
- free_input_device(input_dev);
- return ret;
- }
-
+ if (ret != 0)
+ goto probe_err0;
/* workaround SA-167 */
if (input_dev->report_desc[14] == 0x25)
input_dev->report_desc[14] = 0x29;
- reportdesc_callback(device, input_dev->report_desc,
- input_dev->report_desc_size);
+ hid_dev = hid_allocate_device();
+ if (IS_ERR(hid_dev)) {
+ ret = PTR_ERR(hid_dev);
+ goto probe_err0;
+ }
+
+ hid_dev->ll_driver = &mousevsc_ll_driver;
+ hid_dev->driver = &mousevsc_hid_driver;
+ hid_dev->bus = BUS_VIRTUAL;
+ hid_dev->vendor = input_dev->hid_dev_info.vendor;
+ hid_dev->product = input_dev->hid_dev_info.product;
+ hid_dev->version = input_dev->hid_dev_info.version;
+ input_dev->hid_device = hid_dev;
+
+ sprintf(hid_dev->name, "%s", "Microsoft Vmbus HID-compliant Mouse");
+
+ ret = hid_parse_report(hid_dev, input_dev->report_desc,
+ input_dev->report_desc_size);
+
+ if (ret) {
+ hid_err(hid_dev, "parse failed\n");
+ goto probe_err1;
+ }
+
+ ret = hid_hw_start(hid_dev, HID_CONNECT_HIDINPUT | HID_CONNECT_HIDDEV);
+ if (ret) {
+ hid_err(hid_dev, "hw start failed\n");
+ goto probe_err1;
+ }
+
+ input_dev->connected = true;
input_dev->init_complete = true;
return ret;
+
+probe_err1:
+ hid_destroy_device(hid_dev);
+
+probe_err0:
+ vmbus_close(device->channel);
+ free_input_device(input_dev);
+ return ret;
}
--
1.7.4.1
next prev parent reply other threads:[~2011-10-26 0:19 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-26 0:18 [PATCH 0/6] Staging: hv: mousevsc: cleanup the mouse driver K. Y. Srinivasan
2011-10-26 0:19 ` [PATCH 1/6] Staging: hv: mousevsc: Make boolean states boolean K. Y. Srinivasan
2011-10-26 0:19 ` K. Y. Srinivasan
2011-10-26 0:03 ` Joe Perches
2011-10-26 6:07 ` Greg KH
2011-10-26 22:46 ` Joe Perches
2011-10-26 23:50 ` Greg KH
2011-10-26 23:59 ` Joe Perches
2011-10-27 0:03 ` Dmitry Torokhov
2011-10-26 0:19 ` [PATCH 2/6] Staging: hv: mousevsc: Inline the code for mousevsc_on_device_add() K. Y. Srinivasan
2011-10-26 0:19 ` K. Y. Srinivasan [this message]
2011-10-26 0:19 ` [PATCH 4/6] Staging: hv: mousevsc: Cleanup mousevsc_on_channel_callback() K. Y. Srinivasan
2011-10-26 0:19 ` [PATCH 5/6] Staging: hv: mousevsc: Add a new line to a debug string K. Y. Srinivasan
2011-10-26 0:19 ` K. Y. Srinivasan
2011-10-26 0:19 ` [PATCH 6/6] Staging: hv: mousevsc: Get rid of unnecessary include files K. Y. Srinivasan
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=1319588392-9982-3-git-send-email-kys@microsoft.com \
--to=kys@microsoft.com \
--cc=devel@linuxdriverproject.org \
--cc=dmitry.torokhov@gmail.com \
--cc=gregkh@suse.de \
--cc=haiyangz@microsoft.com \
--cc=joe@perches.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.