From patchwork Wed Sep 1 01:56:18 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chase Douglas X-Patchwork-Id: 145941 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 o811wMpt020155 for ; Wed, 1 Sep 2010 01:58:22 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754054Ab0IAB4h (ORCPT ); Tue, 31 Aug 2010 21:56:37 -0400 Received: from adelie.canonical.com ([91.189.90.139]:41663 "EHLO adelie.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753445Ab0IAB4b (ORCPT ); Tue, 31 Aug 2010 21:56:31 -0400 Received: from hutte.canonical.com ([91.189.90.181]) by adelie.canonical.com with esmtp (Exim 4.69 #1 (Debian)) id 1OqcYw-0006rS-5u; Wed, 01 Sep 2010 02:56:30 +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 1OqcYv-0005EC-Ov; Wed, 01 Sep 2010 02:56:30 +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/7 v3] HID: magicmouse: don't allow hidinput to initialize the device Date: Tue, 31 Aug 2010 21:56:18 -0400 Message-Id: <1283306184-28833-2-git-send-email-chase.douglas@canonical.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1283306184-28833-1-git-send-email-chase.douglas@canonical.com> References: <1283306184-28833-1-git-send-email-chase.douglas@canonical.com> 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]); Wed, 01 Sep 2010 01:59:11 +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");