From patchwork Tue Aug 31 18:41:03 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chase Douglas X-Patchwork-Id: 145421 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id o7VIfITO021881 for ; Tue, 31 Aug 2010 18:41:18 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752230Ab0HaSlS (ORCPT ); Tue, 31 Aug 2010 14:41:18 -0400 Received: from adelie.canonical.com ([91.189.90.139]:51760 "EHLO adelie.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751654Ab0HaSlR (ORCPT ); Tue, 31 Aug 2010 14:41:17 -0400 Received: from hutte.canonical.com ([91.189.90.181]) by adelie.canonical.com with esmtp (Exim 4.69 #1 (Debian)) id 1OqVlf-0003rq-AR; Tue, 31 Aug 2010 19:41:12 +0100 Received: from cpe-75-180-27-10.columbus.res.rr.com ([75.180.27.10] helo=canonical.com) by hutte.canonical.com with esmtpsa (TLS-1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.69) (envelope-from ) id 1OqVle-0005ZP-Te; Tue, 31 Aug 2010 19:41:11 +0100 From: Chase Douglas To: Jiri Kosina Cc: Michael Poole , Henrik Rydberg , Tejun Heo , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/6 v2] HID: magicmouse: don't allow hidinput to initialize the device Date: Tue, 31 Aug 2010 14:41:03 -0400 Message-Id: <1283280068-12285-1-git-send-email-chase.douglas@canonical.com> X-Mailer: git-send-email 1.7.1 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Tue, 31 Aug 2010 18:41:19 +0000 (UTC) diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c index 319b0e5..d38b529 100644 --- a/drivers/hid/hid-magicmouse.c +++ b/drivers/hid/hid-magicmouse.c @@ -404,15 +404,20 @@ static int magicmouse_probe(struct hid_device *hdev, goto err_free; } - ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); + /* When registering a hid device, one of hidinput, hidraw, or hiddev + * subsystems must claim the device. We are bypassing hidinput due to + * our raw event processing, and hidraw and hiddev may not claim the + * device. We get around this by telling hid_hw_start that input has + * claimed the device already, and then flipping the bit back. + */ + hdev->claimed = HID_CLAIMED_INPUT; + ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT & ~HID_CONNECT_HIDINPUT); + hdev->claimed &= ~HID_CLAIMED_INPUT; if (ret) { dev_err(&hdev->dev, "magicmouse hw start failed\n"); goto err_free; } - /* we are handling the input ourselves */ - hidinput_disconnect(hdev); - report = hid_register_report(hdev, HID_INPUT_REPORT, TOUCH_REPORT_ID); if (!report) { dev_err(&hdev->dev, "unable to register touch report\n");